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.

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

bool

_can_be_hidden() virtual const

bool

_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

EditorNode3DGizmo

_create_gizmo(for_node_3d: Node3D) virtual const

String

_get_gizmo_name() virtual const

String

_get_handle_name(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const

Variant

_get_handle_value(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const

int

_get_priority() virtual const

Transform3D

_get_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int) virtual const

bool

_has_gizmo(for_node_3d: Node3D) virtual const

bool

_is_handle_highlighted(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const

bool

_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

PackedInt32Array

_subgizmos_intersect_frustum(gizmo: EditorNode3DGizmo, camera: Camera3D, frustum_planes: Array[Plane]) virtual const

int

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

StandardMaterial3D

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!


bool _can_be_hidden() virtual const 🔗

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.


bool _is_selectable_when_hidden() virtual const 🔗

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