EditorNode3DGizmoPlugin

Наследует: Resource < RefCounted < Object

Класс, используемый редактором для определения типов гизмо Node3D.

Описание

EditorNode3DGizmoPlugin позволяет вам определить новый тип Gizmo. Есть два основных способа сделать это: расширение EditorNode3DGizmoPlugin для более простых gizmo или создание нового типа EditorNode3DGizmo. Для получения дополнительной информации см. руководство в документации.

Чтобы использовать EditorNode3DGizmoPlugin, сначала зарегистрируйте его с помощью метода EditorPlugin.add_node_3d_gizmo_plugin().

Обучающие материалы

Методы

void

_begin_handle_action(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual

bool

_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

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 🔗

Переопределите этот метод, чтобы определить, могут ли быть скрыты обрабатываемые этим плагином гизмо. Возвращает true, если не переопределено.


void _commit_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, restore: Variant, cancel: bool) virtual 🔗

Переопределите этот метод для фиксации редактируемого дескриптора (дескрипторы должны быть ранее добавлены EditorNode3DGizmo.add_handles() во время _redraw()). Обычно это означает создание действия UndoRedo для изменения, используя текущее значение дескриптора как «do» и аргумент restore как «undo».

Если аргумент cancel равен true, значение restore должно быть установлено напрямую, без какого-либо действия UndoRedo.

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

Вызывается для активных гизмо этого плагина.


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

Переопределите этот метод, чтобы зафиксировать группу редактируемых subgizmos (см. _subgizmos_intersect_ray() и _subgizmos_intersect_frustum()). Обычно это означает создание действия UndoRedo для изменения, используя текущие преобразования как «do» и преобразования restores как «undo».

Если аргумент cancel равен true, преобразования restores должны быть установлены напрямую, без какого-либо действия UndoRedo. Как и во всех методах subgizmo, преобразования задаются в локальном пространстве относительно Node3D gizmo. Вызывается для активных gizmos этого плагина.


EditorNode3DGizmo _create_gizmo(for_node_3d: Node3D) virtual const 🔗

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


String _get_gizmo_name() virtual const 🔗

Переопределите этот метод, чтобы указать имя, которое будет отображаться в меню видимости гизмо.


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

Переопределите этот метод, чтобы предоставить имена дескрипторов gizmo. Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. EditorNode3DGizmo.add_handles() для получения дополнительной информации). Вызывается для активных gizmo этого плагина.


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

Переопределите этот метод, чтобы вернуть текущее значение дескриптора. Это значение будет запрошено в начале редактирования и использовано как аргумент restore в _commit_handle().

Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. EditorNode3DGizmo.add_handles() для получения дополнительной информации).

Вызывается для активных гизмо этого плагина.


int _get_priority() virtual const 🔗

Переопределите этот метод, чтобы задать приоритет гизмо. Гизмо с более высоким приоритетом будут иметь приоритет при обработке входных данных, таких как маркеры или выбор подгизмо.

Все встроенные гизмо редактора возвращают приоритет -1. Если не переопределено, этот метод вернет 0, что означает, что пользовательские гизмо автоматически получат более высокий приоритет, чем встроенные гизмо.


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

Переопределите этот метод, чтобы вернуть текущее преобразование subgizmo. Как и все методы subgizmo, преобразование должно быть в локальном пространстве относительно Node3D gizmo. Это преобразование будет запрошено в начале редактирования и использовано в аргументе restore в _commit_subgizmos(). Вызывается для активных gizmos этого плагина.


bool _has_gizmo(for_node_3d: Node3D) virtual const 🔗

Переопределите этот метод, чтобы определить, какие узлы Node3D имеют гизмо из этого плагина. Этот метод вызывается всякий раз, когда узел Node3D добавляется к сцене, если он возвращает true, узлу назначается общий EditorNode3DGizmo и он добавляется в список активных гизмо этого плагина.


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

Переопределите этот метод, чтобы он возвращал true всякий раз, когда указанный дескриптор должен быть выделен в редакторе. Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. EditorNode3DGizmo.add_handles() для получения дополнительной информации). Вызывается для активных гизмо этого плагина.


bool _is_selectable_when_hidden() virtual const 🔗

Переопределите этот метод, чтобы определить, должен ли Node3D с этим гизмо быть доступным для выбора, даже если гизмо скрыто.


void _redraw(gizmo: EditorNode3DGizmo) virtual 🔗

Переопределите этот метод, чтобы добавлять все элементы гизмо всякий раз, когда запрашивается обновление гизмо. Обычно вызывают EditorNode3DGizmo.clear() в начале этого метода, а затем добавляют визуальные элементы в зависимости от свойств узла.


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

Переопределите этот метод, чтобы обновить свойства узла, когда пользователь перетаскивает ручку гизмо (ранее добавленную с помощью EditorNode3DGizmo.add_handles()). Предоставленный screen_pos — это положение мыши в экранных координатах, а camera можно использовать для преобразования его в лучевые потоки.

Аргумент secondary равен true, когда редактируемый дескриптор является вторичным (см. EditorNode3DGizmo.add_handles() для получения дополнительной информации).

Вызывается для активных гизмо этого плагина.


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

Переопределите этот метод для обновления свойств узла во время редактирования subgizmo (см. _subgizmos_intersect_ray() и _subgizmos_intersect_frustum()). transform задается в локальной системе координат Node3D. Вызывается для активных gizmos этого плагина.


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

Переопределите этот метод, чтобы разрешить выбор подобъектов с помощью выделения области перетаскивания мыши. При наличии camera и frustum_planes этот метод должен возвращать, какие подобъекты содержатся в усеченных пирамидах. Аргумент frustum_planes состоит из массива со всеми Plane, которые составляют усеченную пирамиду выбора. Возвращаемое значение должно содержать список уникальных идентификаторов подобъектов, эти идентификаторы могут иметь любое неотрицательное значение и будут использоваться в других виртуальных методах, таких как _get_subgizmo_transform() или _commit_subgizmos(). Вызывается для активных гизмо этого плагина.


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

Переопределите этот метод, чтобы разрешить выбор подгимов с помощью щелчков мыши. При наличии camera и screen_pos в экранных координатах этот метод должен возвращать, какой подгимов следует выбрать. Возвращаемое значение должно быть уникальным идентификатором подгимов, который может иметь любое неотрицательное значение и будет использоваться в других виртуальных методах, таких как _get_subgizmo_transform() или _commit_subgizmos(). Вызывается для активных подгимов этого плагина.


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, он попытается получить соответствующий вариант (выбранный и/или редактируемый).