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

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

Клас, який використовується редактором, щоб визначити типи Node3D.

Опис

EditorNode3DGizmoPlugin дозволяє визначити новий тип Gizmo. Є два основних способи зробити так: розширення EditorNode3DGizmoPlugin для простих Gizmos, або створення нового типу EditorNode3DGizmoPlugin. Переглянути підручник в документації для отримання більш детальної інформації.

Для використання EditorNode3DGizmoPlugin, зареєструйте його за допомогою редактораPlugin.add_node_3d_gizmo_plugin().

Посібники

Методи

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)


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

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 🔗

Зазначте цей метод, щоб визначити, чи можна використовувати gizmos. true, якщо не перейде.


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 🔗

Надіславши цей метод, щоб зробити ручку редаговано (ручки повинні були попередньо додані EditorNode3DGizmo.add_handles() під час _redraw()). Це, як правило, означає створення UndoRedo дії для зміни, використовуючи значення поточної ручки як "до" і restore аргумент як "ундо".

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

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

Зателефоновано для активного Gizmos цього плагіна.


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

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

Якщо аргумент cancel true, restores трансформатори повинні бути безпосередньо встановленими, без будь-яких UndoRedo дії. Як і з усіма методами підгізмо, трансформуються в локальну космічну повагу Node3D. Зателефоновано для активного Gizmos цього плагіна.


EditorNode3DGizmo _create_gizmo(for_node_3d: Node3D) virtual const 🔗

Перевизначте цей метод, щоб повернути спеціальний EditorNode3DGizmo для 3D-вузлів за вашим вибором, повернути null для решти вузлів. Дивіться також _has_gizmo().


String _get_gizmo_name() virtual const 🔗

На відміну від цього способу, щоб забезпечити ім'я, яке з'явиться в меню видимості Gizmo.


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

Надіславши цей метод для забезпечення імен ручок gizmo. secondary аргумент true, коли потрібна ручка вторинна (див. редакторNode3DGizmo.add_handles() для отримання додаткової інформації). Зателефоновано для активного Gizmos цього плагіна.


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

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

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

Зателефоновано для активного Gizmos цього плагіна.


int _get_priority() virtual const 🔗

Зазначте цей метод, щоб встановити пріоритет Gizmo. Gizmos з вищим пріоритетом має прецедентність при обробці вводів, таких як ручка або підгізмос вибір.

Всі вбудовані редактори Gizmos повертає пріоритет -1. Якщо не перейдиден, цей метод повернеться 0, що означає користувацькі гізмос автоматично отримає більший пріоритет, ніж вбудовані гізмос.


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

На відміну від цього способу повернення поточного перетворення підгізмо. Як з усіма методами підгізмо, трансформатор повинен бути в місцевому просторі по відношенню до Node3D. Ця трансформація буде запитана при старті редагування та використання в restore аргумент в метод_commit_subgizmos. Зателефоновано для активного Gizmos цього плагіна.


bool _has_gizmo(for_node_3d: Node3D) virtual const 🔗

На відміну від цього методу, щоб визначити, які вузли Node3D мають gizmo з цього плагіна. Колись вузол Node3D додається до сцени, цей метод називається, якщо він повертає true вершина отримує загальний EditorNode3DGizmo і додається до цього списку плагінів активного gizmos.


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

Перевизнайте цей метод для повернення true, коли будь-яка ручка повинна бути виділена в редакторі. secondary аргумент true, коли потрібна ручка вторинна (див. редакторNode3DGizmo.add_handles() для отримання додаткової інформації). Зателефоновано для активного Gizmos цього плагіна.


bool _is_selectable_when_hidden() virtual const 🔗

На відміну від цього методу, щоб визначити, чи слід вибрати Node3D з цим гізмо, навіть якщо гизмо приховано.


void _redraw(gizmo: EditorNode3DGizmo) virtual 🔗

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


void _set_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, camera: Camera3D, screen_pos: Vector2) virtual 🔗

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

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

Зателефоновано для активного Gizmos цього плагіна.


void _set_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int, transform: Transform3D) virtual 🔗

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


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

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


int _subgizmos_intersect_ray(gizmo: EditorNode3DGizmo, camera: Camera3D, screen_pos: Vector2) virtual const 🔗

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


void add_material(name: String, material: StandardMaterial3D) 🔗

Додати новий матеріал до внутрішнього списку матеріалів для плагіна. Далі можна отримати get_material(). Не варто переносити.


void create_handle_material(name: String, billboard: bool = false, texture: Texture2D = null) 🔗

Створює ручний матеріал з його варіантами (вибірний і/або редагований) і додає їх до внутрішнього переліку матеріалів. Далі можна отримати get_material() і використовувати в EditorNode3DGizmo.add_handles(). Не варто переносити.

Ви можете додатково надати фактуру замість іконки за замовчуванням.


void create_icon_material(name: String, texture: Texture2D, on_top: bool = false, color: Color = Color(1, 1, 1, 1)) 🔗

Створює іконковий матеріал з його варіантами (вибірний і/або редагований) і додає їх до внутрішнього переліку матеріалів. Далі можна отримати get_material() і використовувати в EditorNode3DGizmo.add_unscaled_billboard(). Не варто переносити.


void create_material(name: String, color: Color, billboard: bool = false, on_top: bool = false, use_vertex_color: bool = false) 🔗

Створює неочищений матеріал з його варіантами (вибірний і/або редагований) і додає їх до внутрішнього переліку матеріалів. Ви можете отримати доступ до get_material() і використовувати в EditorNode3DGizmo.add_mesh() і EditorNode3DGizmo.add_lines(). Не варто переносити.


StandardMaterial3D get_material(name: String, gizmo: EditorNode3DGizmo = null) 🔗

Отримує матеріал з внутрішнього переліку матеріалів. Якщо надана EditorNode3DGizmo, намагатиметься отримати відповідний варіант (вибраний і/або редагований).