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 |
_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) |
Описания метода
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!
Переопределите этот метод, чтобы определить, могут ли быть скрыты обрабатываемые этим плагином гизмо. Возвращает 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() для получения дополнительной информации). Вызывается для активных гизмо этого плагина.
Переопределите этот метод, чтобы определить, должен ли 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, он попытается получить соответствующий вариант (выбранный и/или редактируемый).