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.

EditorNode3DGizmo

Успадковує: Node3DGizmo < RefCounted < Object

Gizmo для редагування Node3D об'єктів.

Опис

Гізмо, що використовується для забезпечення власної візуалізації та редагування (дескриптори та підгізмо) для об'єктів Node3D. Може бути перевизначений для створення власних гізмо, але для простих гізмо зазвичай рекомендується створення EditorNode3DGizmoPlugin.

Методи

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

String

_get_handle_name(id: int, secondary: bool) virtual const

Variant

_get_handle_value(id: int, secondary: bool) virtual const

Transform3D

_get_subgizmo_transform(id: int) virtual const

bool

_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

PackedInt32Array

_subgizmos_intersect_frustum(camera: Camera3D, frustum: Array[Plane]) virtual const

int

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

Node3D

get_node_3d() const

EditorNode3DGizmoPlugin

get_plugin() const

PackedInt32Array

get_subgizmo_selection() const

bool

is_subgizmo_selected(id: int) const

void

set_hidden(hidden: bool)

void

set_node_3d(node: Node)


Описи методів

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 🔗

Перевизначте цей метод, щоб зафіксувати дескриптор, який редагується (дескриптори мають бути попередньо додані за допомогою add_handles()). Зазвичай це означає створення дії UndoRedo для зміни, використовуючи поточне значення дескриптора як "do" і аргумент restore як "undo".

Якщо аргумент cancel має значення true, значення restore слід встановити безпосередньо, без застосування дії UndoRedo.

Аргумент secondary має значення true, якщо зафіксований дескриптор є вторинним (див. add_handles() для отримання додаткової інформації).


void _commit_subgizmos(ids: PackedInt32Array, restores: Array[Transform3D], cancel: bool) virtual 🔗

Перевизначте цей метод, щоб зафіксувати групу підгізмів, які редагуються (див. _subgizmos_intersect_ray() і _subgizmos_intersect_frustum()). Зазвичай це означає створення дії UndoRedo для зміни, використовуючи поточні перетворення як "do", а перетворення restores як "undo".

Якщо аргумент cancel має значення true, перетворення restores слід встановити безпосередньо, без жодної дії UndoRedo.


String _get_handle_name(id: int, secondary: bool) virtual const 🔗

Зазначте цей метод, щоб повернути ім'я редагованої ручки (ручка повинні бути попередньо додані add_handles()). Руки можуть бути названі для посилання на користувача при редагуванні.

secondary аргумент true, коли потрібна ручка вторинна (див. add_handles() для отримання додаткової інформації).


Variant _get_handle_value(id: int, secondary: bool) virtual const 🔗

Надіславши цей метод для повернення поточного значення ручки. Ця вартість буде запитана при старті редагування та використовується як restore аргумент _commit_handle().

secondary аргумент true, коли потрібна ручка вторинна (див. add_handles() для отримання додаткової інформації).


Transform3D _get_subgizmo_transform(id: int) virtual const 🔗

На відміну від цього способу повернення поточного перетворення підгізмо. Ця трансформація буде запитана при старті редагування та використаних як аргумент `` і `` в _commit_subgizmos().


bool _is_handle_highlighted(id: int, secondary: bool) virtual const 🔗

Перевизначте цей метод, щоб він повертав true щоразу, коли заданий дескриптор має бути виділений у редакторі.

Аргумент secondary має значення true, якщо запитуваний дескриптор є вторинним (див. add_handles() для отримання додаткової інформації).


void _redraw() virtual 🔗

На відміну від цього способу, щоб додати всі мікроелементи, коли запитується оновлення gizmo. Зазвичай, щоб викликати clear() на початку цього способу, а потім додати візуальні елементи в залежності від властивостей вузла.


void _set_handle(id: int, secondary: bool, camera: Camera3D, point: Vector2) virtual 🔗

Перевизнайте цей метод для оновлення властивостей вузлів, коли користувач перетягує рукоятку (попередньо додано add_handles()). Надана точка є позиція мишки в координатах екрана і camera може бути використана для перетворення його в промені.

secondary аргумент true, коли редагована ручка вторинна (див. add_handles() для отримання додаткової інформації).


void _set_subgizmo_transform(id: int, transform: Transform3D) virtual 🔗

На відміну від цього способу оновлення властивостей вузлів під час редагування субгізмо (див. _subgizmos_intersect_ray() і _subgizmos_intersect_frustum()). У локальній координаційній системі «Node3D» надана трансформація transform.


PackedInt32Array _subgizmos_intersect_frustum(camera: Camera3D, frustum: Array[Plane]) virtual const 🔗

Надіславши цей метод, щоб дозволити вибрати підгізмос за допомогою миші перетягування коробки. З огляду на camera і frustum, цей метод повинен повернути, які subgizmos містяться в межах frustum. frustum аргумент складається з масиву з усіма Plane, які складають вибір frustum. Повернуте значення має містити список унікальних ідентифікаторів субгізмо, які можуть мати будь-яке негативне значення і будуть використані в інших віртуальних методах, таких як _subgizmo_transform() або _commit_subgizmos().


int _subgizmos_intersect_ray(camera: Camera3D, point: Vector2) virtual const 🔗

Надіславши цей метод, щоб дозволити вибрати підгізмос за допомогою кліків миші. З огляду на camera і point в координатах екрана, цей метод повинен повернути який subgizmo слід вибрати. Повернуте значення має бути унікальним ідентифікатором субгізмо, який може мати будь-яке негативне значення і буде використовуватися в інших віртуальних методах, таких як _subgizmo_transform() або _commit_subgizmos().


void add_collision_segments(segments: PackedVector3Array) 🔗

Додає вказані сегменти segments до форми зіткнення гізмо для вибору. Викликайте цей метод під час _redraw().


void add_collision_triangles(triangles: TriangleMesh) 🔗

Додає трикутники зіткнення до гізмо для вибору. TriangleMesh також може бути згенерований зі звичайного Mesh. Викличте цей метод під час _redraw().


void add_handles(handles: PackedVector3Array, material: Material, ids: PackedInt32Array, billboard: bool = false, secondary: bool = false) 🔗

Додає список ручок (точки), які можуть використовуватися для редагування властивостей Gizmo Node3D. Текст ids може бути використаний для визначення користувацького ідентифікатора для кожної ручки, якщо пропущений порожній масив, попередження буде автоматично від ручки аргумента замовлення.

secondary аргумент позначить додані ручки як вторинний, тобто вони зазвичай мають більш низький пріоритет вибору, ніж звичайні ручки. Коли користувач тримає ключ змінного струму вторинними ручками буде переходити до більш високого пріоритету, ніж звичайні ручки. Ця зміна в пріоритеті може бути використана для розміщення декількох ручок в тій же точці, коли все ще дає контроль користувача на їх вибір.

Ви знайдете віртуальні методи, які будуть викликані редагуванням цих ручок. Зателефонуйте цей метод під час _redraw().


void add_lines(lines: PackedVector3Array, material: Material, billboard: bool = false, modulate: Color = Color(1, 1, 1, 1)) 🔗

Додає лінії до гізмо (як набори з 2 точок), із заданим матеріалом. Лінії використовуються для візуалізації гізмо. Викличте цей метод під час _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) 🔗

Додає сітку до гізмо із заданими параметрами material, локальними параметрами transform та skeleton. Викликайте цей метод під час виконання _redraw().


void add_unscaled_billboard(material: Material, default_scale: float = 1, modulate: Color = Color(1, 1, 1, 1)) 🔗

Додає немасштабований рекламний щит для візуалізації та вибору. Викличте цей метод під час _redraw().


void clear() 🔗

Видаляє все в гізмо, включаючи сітки, колізії та ручки.


Node3D get_node_3d() const 🔗

Повертає вузол Node3D, пов'язаний з цим gizmo.


EditorNode3DGizmoPlugin get_plugin() const 🔗

Повертає EditorNode3DGizmoPlugin, якому належить цей гізмо. Корисно отримувати матеріали за допомогою EditorNode3DGizmoPlugin.get_material().


PackedInt32Array get_subgizmo_selection() const 🔗

Повертає список вибраних підґізмів. Може використовуватися для виділення вибраних елементів під час виконання _redraw().


bool is_subgizmo_selected(id: int) const 🔗

Повертає true, якщо даний subgizmo наразі вибрано. Може використовуватися для виділення вибраних елементів під час _redraw().


void set_hidden(hidden: bool) 🔗

Налаштовує прихований стан гізмо. Якщо true, то гизмо буде приховано. Якщо false, він буде показано.


void set_node_3d(node: Node) 🔗

Встановлює посилання Node3D вузол для gizmo. node повинен успадкуватися Node3D.