Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
EditorNode3DGizmo
Eredita: Node3DGizmo < RefCounted < Object
Gizmo per modificare gli oggetti Node3D.
Descrizione
Gizmo che serve per fornire visualizzazione e modifica personalizzate (maniglie e gizmo secondari) per gli oggetti Node3D. Si può sovrascrivere per creare gizmo personalizzati, ma per i gizmo semplici solitamente si consiglia di creare un EditorNode3DGizmoPlugin.
Metodi
void |
_begin_handle_action(id: int, secondary: bool) virtual |
void |
_commit_handle(id: int, secondary: bool, restore: Variant, cancel: bool) virtual |
void |
_commit_subgizmos(ids: PackedInt32Array, restores: Array[Transform3D], cancel: bool) virtual |
_get_handle_name(id: int, secondary: bool) virtual const |
|
_get_handle_value(id: int, secondary: bool) virtual const |
|
_get_subgizmo_transform(id: int) virtual const |
|
_is_handle_highlighted(id: int, secondary: bool) virtual const |
|
void |
_redraw() virtual |
void |
_set_handle(id: int, secondary: bool, camera: Camera3D, point: Vector2) virtual |
void |
_set_subgizmo_transform(id: int, transform: Transform3D) virtual |
_subgizmos_intersect_frustum(camera: Camera3D, frustum: Array[Plane]) virtual const |
|
_subgizmos_intersect_ray(camera: Camera3D, point: Vector2) virtual const |
|
void |
add_collision_segments(segments: PackedVector3Array) |
void |
add_collision_triangles(triangles: TriangleMesh) |
void |
add_handles(handles: PackedVector3Array, material: Material, ids: PackedInt32Array, billboard: bool = false, secondary: bool = false) |
void |
add_lines(lines: PackedVector3Array, material: Material, billboard: bool = false, modulate: Color = Color(1, 1, 1, 1)) |
void |
add_mesh(mesh: Mesh, material: Material = null, transform: Transform3D = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0), skeleton: SkinReference = null) |
void |
add_unscaled_billboard(material: Material, default_scale: float = 1, modulate: Color = Color(1, 1, 1, 1)) |
void |
clear() |
get_node_3d() const |
|
get_plugin() const |
|
get_subgizmo_selection() const |
|
is_subgizmo_selected(id: int) const |
|
void |
set_hidden(hidden: bool) |
void |
set_node_3d(node: Node) |
Descrizioni dei metodi
void _begin_handle_action(id: int, secondary: bool) virtual 🔗
There is currently no description for this method. Please help us by contributing one!
void _commit_handle(id: int, secondary: bool, restore: Variant, cancel: bool) virtual 🔗
Sovrascrivi questo metodo per commettere una maniglia in fase di modifica (le maniglie devono essere state aggiunte in precedenza da add_handles()). Questo di solito significa creare un'azione di UndoRedo per la modifica, utilizzando il valore della maniglia attuale come "fai" e l'argomento restore come "annulla".
Se l'argomento cancel è true, il valore restore dovrebbe essere impostato direttamente, senza alcuna azione di UndoRedo.
L'argomento secondary è true quando la maniglia commessa è secondaria (vedi add_handles() per maggiori informazioni).
void _commit_subgizmos(ids: PackedInt32Array, restores: Array[Transform3D], cancel: bool) virtual 🔗
Sovrascrivi questo metodo per commettere un gruppo di gizmo secondari in fase di modifica (vedi _subgizmos_intersect_ray() e _subgizmos_intersect_frustum()). Questo di solito significa creare un'azione di UndoRedo per la modifica, usando le trasformazioni attuali come "fai" e le trasformazioni restores come "annulla".
Se l'argomento cancel è true, le trasformazioni restores dovrebbero essere impostate direttamente, senza alcuna azione di UndoRedo.
String _get_handle_name(id: int, secondary: bool) virtual const 🔗
Sovrascrivi questo metodo per restituire il nome di una maniglia in fase di modifica (le maniglie devono essere state aggiunte in precedenza da add_handles()). Le maniglie possono avere nomi come riferimento per l'utente durante la modifica.
L'argomento secondary è true quando la maniglia richiesta è secondaria (vedi add_handles() per maggiori informazioni).
Variant _get_handle_value(id: int, secondary: bool) virtual const 🔗
Sovrascrivi questo metodo per restituire il valore attuale di una maniglia. Questo valore sarà richiesto all'inizio di una modifica e utilizzato come argomento restore in _commit_handle().
L'argomento secondary è true quando la maniglia richiesta è secondaria (vedi add_handles() per maggiori informazioni).
Transform3D _get_subgizmo_transform(id: int) virtual const 🔗
Sovrascrivi questo metodo per restituire la trasformazione attuale di un gizmo secondario. Questa trasformazione sarà richiesta all'inizio di una modifica e utilizzata come argomento restore in _commit_subgizmos().
bool _is_handle_highlighted(id: int, secondary: bool) virtual const 🔗
Sovrascrivi questo metodo per restituire true quando la maniglia specificata deve essere evidenziata nell'editor.
L'argomento secondary è true quando la maniglia richiesta è secondaria (vedi add_handles() per maggiori informazioni).
void _redraw() virtual 🔗
Sovrascrivi questo metodo per aggiungere tutti gli elementi gizmo quando un aggiornamento dei gizmo viene richiesto. È comune chiamare clear() all'inizio di questo metodo e successivamente aggiungere elementi visivi in base alle proprietà del nodo.
void _set_handle(id: int, secondary: bool, camera: Camera3D, point: Vector2) virtual 🔗
Sovrascrivi questo metodo per aggiornare le proprietà del nodo quando l'utente trascina una maniglia di un gizmo (aggiunta in precedenza con add_handles()). point è la posizione del mouse nelle coordinate dello schermo e la telecamera camera può essere utilizzata per convertirla in raycast.
L'argomento secondary è true quando la maniglia modificata è secondaria (vedi add_handles() per maggiori informazioni).
void _set_subgizmo_transform(id: int, transform: Transform3D) virtual 🔗
Sovrascrivi questo metodo per aggiornare le proprietà del nodo durante la modifica di un gizmo secondario (vedi _subgizmos_intersect_ray() e _subgizmos_intersect_frustum()). La trasformazione transform è specificata nel sistema di coordinate locali del Node3D.
PackedInt32Array _subgizmos_intersect_frustum(camera: Camera3D, frustum: Array[Plane]) virtual const 🔗
Sovrascrivi questo metodo per consentire la selezione di gizmo secondari tramite trascinamento del mouse. Specificata una telecamera (camera) e un tronco (frustum), questo metodo dovrebbe restituire quali gizmo secondari sono contenuti nel tronco. L'argomento frustum consiste in un array con tutti i Plane che compongono il tronco di selezione. Il valore restituito dovrebbe contenere una lista di identificatori univoci di gizmo secondari, che possono avere qualsiasi valore non negativo e saranno utilizzati in altri metodi virtuali come _get_subgizmo_transform() o _commit_subgizmos().
int _subgizmos_intersect_ray(camera: Camera3D, point: Vector2) virtual const 🔗
Sovrascrivi questo metodo per consentire la selezione di gizmo secondari tramite clic del mouse. Specificata una telecamera (camera) e un punto (point) in coordinate dello schermo, questo metodo dovrebbe restituire quale gizmo secondario dovrebbe essere selezionato. Il valore restituito dovrebbe essere un identificatore univoco di gizmo secondario, che può avere qualsiasi valore non negativo e sarà utilizzato in altri metodi virtuali come _get_subgizmo_transform() o _commit_subgizmos().
void add_collision_segments(segments: PackedVector3Array) 🔗
Aggiunge i segmenti segments alla forma di collisione del gizmo per la selezione. Chiama questo metodo durante _redraw().
void add_collision_triangles(triangles: TriangleMesh) 🔗
Aggiunge triangoli di collisione al gizmo per la selezione. Un TriangleMesh può essere generato anche da una Mesh regolare. Chiama questo metodo durante _redraw().
void add_handles(handles: PackedVector3Array, material: Material, ids: PackedInt32Array, billboard: bool = false, secondary: bool = false) 🔗
Aggiunge una lista di maniglie (punti) che possono essere utilizzate per modificare le proprietà del Node3D del gizmo. L'argomento ids può essere utilizzato per specificare un identificatore personalizzato per ogni maniglia, se viene passato un array vuoto, gli id verranno assegnati automaticamente dall'ordine dell'argomento handles.
L'argomento secondary contrassegna le maniglie aggiunte come secondarie, il che significa che normalmente avranno una priorità di selezione inferiore rispetto alle maniglie regolari. Quando l'utente tiene premuto il tasto Maiusc, Le maniglie secondarie avranno una priorità superiore rispetto alle maniglie regolari. Questo cambio di priorità può essere usato per posizionare più maniglie nello stesso punto, continuando a dare comunque all'utente il controllo sulla loro selezione.
Esistono metodi virtuali che saranno chiamati durante la modifica di queste maniglie. Chiama questo metodo durante _redraw().
void add_lines(lines: PackedVector3Array, material: Material, billboard: bool = false, modulate: Color = Color(1, 1, 1, 1)) 🔗
Aggiunge linee al gizmo (come gruppi di 2 punti), con un determinato materiale. Le linee sono usate per visualizzare il gizmo. Chiama questo metodo durante _redraw().
void add_mesh(mesh: Mesh, material: Material = null, transform: Transform3D = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0), skeleton: SkinReference = null) 🔗
Aggiunge una mesh al gizmo con il materiale (material), la trasformazione locale (transform) e lo scheletro (skeleton) specificati. Chiama questo metodo durante _redraw().
void add_unscaled_billboard(material: Material, default_scale: float = 1, modulate: Color = Color(1, 1, 1, 1)) 🔗
Aggiunge una billboard non scalato per la visualizzazione e la selezione. Chiama questo metodo durante _redraw().
void clear() 🔗
Rimuove tutto il contenuto del gizmo, comprese mesh, collisioni e maniglie.
Restituisce il nodo Node3D associato a questo gizmo.
EditorNode3DGizmoPlugin get_plugin() const 🔗
Restituisce l'EditorNode3DGizmoPlugin che possiede questo gizmo. È utile recuperare materiali tramite EditorNode3DGizmoPlugin.get_material().
PackedInt32Array get_subgizmo_selection() const 🔗
Restituisce una lista dei gizmo secondari attualmente selezionati. Può essere utilizzato per evidenziare gli elementi selezionati durante _redraw().
bool is_subgizmo_selected(id: int) const 🔗
Restituisce true se il gizmo secondario specificato è attualmente selezionato. Può essere utilizzato per evidenziare gli elementi selezionati durante _redraw().
Imposta lo stato nascosto del gizmo. Se true, il gizmo sarà nascosto. Se false, sarà mostrato.
void set_node_3d(node: Node) 🔗
Imposta il nodo Node3D di riferimento per il gizmo. node deve ereditare da Node3D.