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 |
|
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.
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).