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 |
_get_handle_name(id: int, secondary: bool) virtual const |
|
_get_handle_value(id: int, secondary: bool) virtual const |
|
_get_subgizmo_transform(id: int) virtual const |
|
_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 |
_subgizmos_intersect_frustum(camera: Camera3D, frustum: Array[Plane]) virtual const |
|
_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() |
get_node_3d() const |
|
get_plugin() const |
|
get_subgizmo_selection() const |
|
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 🔗
Переопределите этот метод, чтобы вернуть текущую трансформацию subgizmo. Эта трансформация будет запрошена в начале редактирования и использована как аргумент restore в _commit_subgizmos().
bool _is_handle_highlighted(id: int, secondary: bool) virtual const 🔗
Переопределите этот метод, чтобы он возвращал true всякий раз, когда указанный дескриптор должен быть выделен в редакторе.
Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. add_handles() для получения дополнительной информации).
void _redraw() virtual 🔗
Переопределите этот метод, чтобы добавлять все элементы гизмо всякий раз, когда запрашивается обновление гизмо. Обычно в начале этого метода вызывают clear(), а затем добавляют визуальные элементы в зависимости от свойств узла.
void _set_handle(id: int, secondary: bool, camera: Camera3D, point: Vector2) virtual 🔗
Переопределите этот метод, чтобы обновить свойства узла, когда пользователь перетаскивает ручку гизмо (ранее добавленную с помощью add_handles()). Предоставленный point — это положение мыши в экранных координатах, а camera можно использовать для преобразования его в лучевые потоки.
Аргумент secondary равен true, когда отредактированная ручка является вторичной (см. add_handles() для получения дополнительной информации).
void _set_subgizmo_transform(id: int, transform: Transform3D) virtual 🔗
Переопределите этот метод для обновления свойств узла во время редактирования subgizmo (см. _subgizmos_intersect_ray() и _subgizmos_intersect_frustum()). Param transform задается в локальной системе координат Node3D.
PackedInt32Array _subgizmos_intersect_frustum(camera: Camera3D, frustum: Array[Plane]) virtual const 🔗
Переопределите этот метод, чтобы разрешить выбор подобъектов с помощью выделения области перетаскивания мыши. При наличии camera и frustum этот метод должен возвращать, какие подобъекты содержатся в усеченной пирамиде. Аргумент frustum состоит из массива со всеми Plane, которые составляют усеченную пирамиду выбора. Возвращаемое значение должно содержать список уникальных идентификаторов подобъектов, которые могут иметь любое неотрицательное значение и будут использоваться в других виртуальных методах, таких как _get_subgizmo_transform() или _commit_subgizmos().
int _subgizmos_intersect_ray(camera: Camera3D, point: Vector2) virtual const 🔗
Переопределите этот метод, чтобы разрешить выбор подгизмо с помощью щелчков мыши. При наличии camera и point в экранных координатах этот метод должен возвращать, какой подгизмо следует выбрать. Возвращаемое значение должно быть уникальным идентификатором подгизмо, который может иметь любое неотрицательное значение и будет использоваться в других виртуальных методах, таких как _get_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) 🔗
Добавляет список дескрипторов (точек), которые можно использовать для редактирования свойств Node3D гизмо. Аргумент ids можно использовать для указания пользовательского идентификатора для каждого дескриптора, если передан пустой массив, идентификаторы будут назначены автоматически из порядка аргументов handles.
Аргумент secondary помечает добавленные дескрипторы как вторичные, то есть они обычно будут иметь более низкий приоритет выбора, чем обычные дескрипторы. Когда пользователь удерживает клавишу Shift, вторичные дескрипторы переключаются на более высокий приоритет, чем обычные дескрипторы. Это изменение приоритета можно использовать для размещения нескольких дескрипторов в одной точке, при этом пользователь все еще может контролировать их выбор.
Существуют виртуальные методы, которые будут вызываться при редактировании этих дескрипторов. Вызовите этот метод во время _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, связанный с этим гизмо.
EditorNode3DGizmoPlugin get_plugin() const 🔗
Возвращает EditorNode3DGizmoPlugin, которому принадлежит этот gizmo. Полезно извлекать материалы с помощью EditorNode3DGizmoPlugin.get_material().
PackedInt32Array get_subgizmo_selection() const 🔗
Возвращает список выбранных в данный момент подэлементов. Может использоваться для выделения выбранных элементов во время _redraw().
bool is_subgizmo_selected(id: int) const 🔗
Возвращает true, если указанный subgizmo в данный момент выбран. Может использоваться для подсветки выбранных элементов во время _redraw().
Устанавливает скрытое состояние гизмо. Если true, гизмо будет скрыто. Если false, оно будет показано.
void set_node_3d(node: Node) 🔗
Устанавливает опорный узел Node3D для гизмо. node должен наследовать от Node3D.