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...
EditorNode3DGizmoPlugin
Eredita: Resource < RefCounted < Object
Una classe utilizzata dall'editor per definire i tipi di gizmo Node3D.
Descrizione
EditorNode3DGizmoPlugin consente di definire un nuovo tipo di Gizmo. Esistono due modi principali per farlo: estendi EditorNode3DGizmoPlugin per i gizmo più semplici o crea un nuovo tipo di EditorNode3DGizmo. Consulta il tutorial nella documentazione per maggiori informazioni.
Per utilizzare EditorNode3DGizmoPlugin, registrarlo prima attraverso il metodo EditorPlugin.add_node_3d_gizmo_plugin().
Tutorial
Metodi
void |
_begin_handle_action(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual |
_can_be_hidden() virtual const |
|
_can_commit_handle_on_click() virtual const |
|
void |
_commit_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, restore: Variant, cancel: bool) virtual |
void |
_commit_subgizmos(gizmo: EditorNode3DGizmo, ids: PackedInt32Array, restores: Array[Transform3D], cancel: bool) virtual |
_create_gizmo(for_node_3d: Node3D) virtual const |
|
_get_gizmo_name() virtual const |
|
_get_handle_name(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const |
|
_get_handle_value(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const |
|
_get_priority() virtual const |
|
_get_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int) virtual const |
|
_has_gizmo(for_node_3d: Node3D) virtual const |
|
_is_handle_highlighted(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const |
|
_is_selectable_when_hidden() virtual const |
|
void |
_redraw(gizmo: EditorNode3DGizmo) virtual |
void |
_set_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, camera: Camera3D, screen_pos: Vector2) virtual |
void |
_set_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int, transform: Transform3D) virtual |
_subgizmos_intersect_frustum(gizmo: EditorNode3DGizmo, camera: Camera3D, frustum_planes: Array[Plane]) virtual const |
|
_subgizmos_intersect_ray(gizmo: EditorNode3DGizmo, camera: Camera3D, screen_pos: Vector2) virtual const |
|
void |
add_material(name: String, material: StandardMaterial3D) |
void |
create_handle_material(name: String, billboard: bool = false, texture: Texture2D = null) |
void |
create_icon_material(name: String, texture: Texture2D, on_top: bool = false, color: Color = Color(1, 1, 1, 1)) |
void |
create_material(name: String, color: Color, billboard: bool = false, on_top: bool = false, use_vertex_color: bool = false) |
get_material(name: String, gizmo: EditorNode3DGizmo = null) |
Descrizioni dei metodi
void _begin_handle_action(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual 🔗
There is currently no description for this method. Please help us by contributing one!
Sovrascrivi questo metodo per definire se i gizmo gestiti da questo plugin possono essere nascosti o meno. Restituisce true se non sovrascritto.
bool _can_commit_handle_on_click() virtual const 🔗
Override this method to define whether the gizmos should commit when the final handle position is the same as the initial one. Returns false if not overridden.
void _commit_handle(gizmo: EditorNode3DGizmo, 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 EditorNode3DGizmo.add_handles() durante _redraw()). Questo solitamente 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 EditorNode3DGizmo.add_handles() per maggiori informazioni).
Chiamato per i gizmo attivi di questa estensione.
void _commit_subgizmos(gizmo: EditorNode3DGizmo, 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 devono essere impostate direttamente, senza alcuna azione di UndoRedo. Come con tutti i metodi dei gizmo secondari, le trasformazioni sono fornite nello spazio locale rispetto al Node3D del gizmo. Chiamato per i gizmo attivi di questa estensione.
EditorNode3DGizmo _create_gizmo(for_node_3d: Node3D) virtual const 🔗
Sovrascrivi questo metodo per restituire un EditorNode3DGizmo personalizzato per i nodi 3D di tua scelta, restituisci null per il resto dei nodi. Vedi anche _has_gizmo().
String _get_gizmo_name() virtual const 🔗
Sovrascrivi questo metodo per fornire il nome che apparirà nel menu di visibilità dei gizmo.
String _get_handle_name(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const 🔗
Sovrascrivi questo metodo per fornire i nomi delle maniglie del gizmo. L'argomento secondary è true quando la maniglia richiesta è secondaria (vedi EditorNode3DGizmo.add_handles() per maggiori informazioni). Chiamato per i gizmo attivi di questa estensione.
Variant _get_handle_value(gizmo: EditorNode3DGizmo, handle_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 EditorNode3DGizmo.add_handles() per maggiori informazioni).
Chiamato per i gizmo attivi di questa estensione.
int _get_priority() virtual const 🔗
Sovrascrivi questo metodo per impostare la priorità del gizmo. I gizmo con priorità più alta avranno la precedenza quando elaborano input come maniglie o selezione di gizmo secondari.
Tutti i gizmo integrati dell'editor restituiscono una priorità di -1. Se non sovrascritto, questo metodo restituirà 0, il che significa che i gizmo personalizzati avranno automaticamente una priorità più alta rispetto ai gizmo integrati.
Transform3D _get_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int) virtual const 🔗
Sovrascrivi questo metodo per restituire la trasformazione attuale di un gizmo secondario. Come per tutti i metodi dei gizmo secondari, la trasformazione dovrebbe essere nello spazio locale rispetto al Node3D del gizmo. Questa trasformazione sarà richiesta all'inizio di una modifica e utilizzata nell'argomento restore in _commit_subgizmos(). Chiamato per i gizmo attivi di questa estensione.
bool _has_gizmo(for_node_3d: Node3D) virtual const 🔗
Sovrascrivi questo metodo per definire quali nodi Node3D hanno un gizmo da questa estensione. Ogni volta che un nodo Node3D viene aggiunto a una scena, questo metodo viene chiamato, se restituisce true il nodo ottiene un EditorNode3DGizmo generico assegnato e viene aggiunto alla lista di gizmo attivi di questa estensione.
bool _is_handle_highlighted(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const 🔗
Sovrascrivi questo metodo per restituire true ogni volta che la maniglia specificata deve essere evidenziata nell'editor. L'argomento secondary è true quando la maniglia richiesta è secondaria (vedi EditorNode3DGizmo.add_handles() per maggiori informazioni). Chiamato per i gizmo attivi di questa estensione.
Sovrascrivi questo metodo per definire se sia possibile selezionare il Node3D con questo gizmo anche quando il gizmo è nascosto.
void _redraw(gizmo: EditorNode3DGizmo) virtual 🔗
Sovrascrivi questo metodo per aggiungere tutti gli elementi gizmo quando un aggiornamento dei gizmo viene richiesto. È comune chiamare EditorNode3DGizmo.clear() all'inizio di questo metodo e successivamente aggiungere elementi visivi in base alle proprietà del nodo.
void _set_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, camera: Camera3D, screen_pos: Vector2) virtual 🔗
Sovrascrivi questo metodo per aggiornare le proprietà del nodo quando l'utente trascina una maniglia del gizmo (aggiunta in precedenza con EditorNode3DGizmo.add_handles()). screen_pos è 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 EditorNode3DGizmo.add_handles() per maggiori informazioni).
Chiamato per i gizmo attivi di questa estensione.
void _set_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_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. Chiamato per i gizmo attivi di questa estensione.
PackedInt32Array _subgizmos_intersect_frustum(gizmo: EditorNode3DGizmo, camera: Camera3D, frustum_planes: Array[Plane]) virtual const 🔗
Sovrascrivi questo metodo per consentire la selezione di gizmo secondari tramite trascinamento del mouse. Specificata una telecamera (camera) e i piani di un tronco (frustum_planes), questo metodo dovrebbe restituire quali gizmo secondari sono contenuti nei tronchi. L'argomento frustum_planes 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(). Chiamato per i gizmo attivi di questa estensione.
int _subgizmos_intersect_ray(gizmo: EditorNode3DGizmo, camera: Camera3D, screen_pos: Vector2) virtual const 🔗
Sovrascrivi questo metodo per consentire la selezione di gizmo secondari tramite clic del mouse. Specificata una telecamera (camera) e una posizione in coordinate dello schermo (screen_pos), 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(). Chiamato per i gizmo attivi di questa estensione.
void add_material(name: String, material: StandardMaterial3D) 🔗
Aggiunge un nuovo materiale alla lista dei materiali interni per il plugin. È possibile accedervi con get_material(). Non dovrebbe essere sovrascritto.
void create_handle_material(name: String, billboard: bool = false, texture: Texture2D = null) 🔗
Crea un materiale di maniglia con le sue variazioni (selezionata e/o modificabile) e le aggiunge alla lista interno dei materiali. È possibile accedervi in seguito con get_material() e utilizzate in EditorNode3DGizmo.add_handles(). Non dovrebbe essere sovrascritto.
È possibile facoltativamente fornire una texture da utilizzare al posto dell'icona predefinita.
void create_icon_material(name: String, texture: Texture2D, on_top: bool = false, color: Color = Color(1, 1, 1, 1)) 🔗
Crea un materiale d'icona con le sue variazioni (selezionata e/o modificabile) e le aggiunge alla lista interna dei materiali. È possibile accedervi in seguito con get_material() e utilizzate in EditorNode3DGizmo.add_unscaled_billboard(). Non dovrebbe essere sovrascritto.
void create_material(name: String, color: Color, billboard: bool = false, on_top: bool = false, use_vertex_color: bool = false) 🔗
Crea un materiale non ombreggiato con le sue variazioni (selezionata e/o modificabile) e le aggiunge alla lista interna dei materiali. È possibile accedervi in seguito con get_material() e utilizzate in EditorNode3DGizmo.add_lines(). Non dovrebbe essere sovrascritto.
StandardMaterial3D get_material(name: String, gizmo: EditorNode3DGizmo = null) 🔗
Ottiene un materiale dalla lista interna dei materiali. Se viene fornito un EditorNode3DGizmo, proverà a ottenere la variazione corrispondente (selezionata e/o modificabile).