EditorEntity3DGizmo
Экземпляр вспомогательной геометрии одной Entity3D в редакторе.
Содержит линии, данные выбора и ручки, связанные с Entity3D. Обычно создаётся обработчиком EditorEntity3DGizmoPlugin. Собственный наследник нужен для состояния или логики на каждый объект.
В redraw очищайте старые данные и добавляйте геометрию в локальных координатах. Гизмо не создаёт игровой меш или физический коллайдер.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
EditorEntity3DGizmoКонструктор
public EditorEntity3DGizmo();Методы29
AddCollisionSegments2 перегрузки
public void AddCollisionSegments(Vector3[] segments);Добавляет локальные отрезки для выбора гизмо редактором. Это геометрия picking, не физический коллайдер игры. Вызывайте в redraw.
| Имя | Тип | По умолчанию |
|---|---|---|
segments | Vector3[] | — |
segmentsПары локальных концов отрезков.
public void AddCollisionSegments(ReadOnlySpan<Vector3> segments);Добавляет локальные отрезки для выбора гизмо редактором. Это геометрия picking, не физический коллайдер игры. Вызывайте в redraw.
| Имя | Тип | По умолчанию |
|---|---|---|
segments | ReadOnlySpan<Vector3> | — |
segmentsПары локальных концов отрезков.
AddCollisionTrianglesvoid
public void AddCollisionTriangles(TriangleMesh triangles);Добавляет треугольники столкновения в гизмо для выбора. TriangleMesh также может быть сгенерирован из обычного Mesh. Вызывайте этот метод во время EditorEntity3DGizmo._Redraw.
| Имя | Тип | По умолчанию |
|---|---|---|
triangles | TriangleMesh | — |
AddHandles2 перегрузки
public void AddHandles(Vector3[] handles, Material material, int[] ids, bool billboard = false, bool secondary = false);Добавляет интерактивные точки только выбранному и редактируемому гизмо. Для изменения свойств реализуйте update/commit-callback: сами точки ничего не меняют.
| Имя | Тип | По умолчанию |
|---|---|---|
handles | Vector3[] | — |
material | Material | — |
ids | int[] | — |
billboard | bool | false |
secondary | bool | false |
handlesПозиции ручек в локальных координатах Entity3D.
materialМатериал из CreateHandleMaterial().
idsID каждой ручки: непустой массив должен совпадать по длине с handles. Пустой массив использует индексы.
billboardНастройка billboard ручек.
secondaryОтнести к вторичному набору; callback получает этот же признак.
public void AddHandles(ReadOnlySpan<Vector3> handles, Material material, ReadOnlySpan<int> ids, bool billboard, bool secondary);Добавляет интерактивные точки только выбранному и редактируемому гизмо. Для изменения свойств реализуйте update/commit-callback: сами точки ничего не меняют.
| Имя | Тип | По умолчанию |
|---|---|---|
handles | ReadOnlySpan<Vector3> | — |
material | Material | — |
ids | ReadOnlySpan<int> | — |
billboard | bool | — |
secondary | bool | — |
handlesПозиции ручек в локальных координатах Entity3D.
materialМатериал из CreateHandleMaterial().
idsID каждой ручки: непустой массив должен совпадать по длине с handles. Пустой массив использует индексы.
billboardНастройка billboard ручек.
secondaryОтнести к вторичному набору; callback получает этот же признак.
AddLines2 перегрузки
public void AddLines(Vector3[] lines, Material material, bool billboard = false, Color? modulate = default);Добавляет линии парами локальных точек. Вызывайте после Clear() в redraw. Сами линии не создают ручек или физических столкновений.
| Имя | Тип | По умолчанию |
|---|---|---|
lines | Vector3[] | — |
material | Material | — |
billboard | bool | false |
modulate | Color? | default |
linesПары концов отрезков в локальных координатах Entity3D.
materialМатериал линий, обычно из GetMaterial(name, gizmo).
billboardПоворачивать линии к камере.
modulateДополнительный множитель цвета; по умолчанию белый.
public void AddLines(ReadOnlySpan<Vector3> lines, Material material, bool billboard, Color? modulate);Добавляет линии парами локальных точек. Вызывайте после Clear() в redraw. Сами линии не создают ручек или физических столкновений.
| Имя | Тип | По умолчанию |
|---|---|---|
lines | ReadOnlySpan<Vector3> | — |
material | Material | — |
billboard | bool | — |
modulate | Color? | — |
linesПары концов отрезков в локальных координатах Entity3D.
materialМатериал линий, обычно из GetMaterial(name, gizmo).
billboardПоворачивать линии к камере.
modulateДополнительный множитель цвета; по умолчанию белый.
AddMeshvoid
public void AddMesh(Mesh mesh, Material material = null, Transform3D? transform = default, SkinReference skeleton = null);Добавляет сетку к гизмо с указанным material, локальным transform и skeleton. Вызывайте этот метод во время EditorEntity3DGizmo._Redraw.
| Имя | Тип | По умолчанию |
|---|---|---|
mesh | Mesh | — |
material | Material | null |
transform | Transform3D? | default |
skeleton | SkinReference | null |
transformЕсли параметр не имеет значения, то значение по умолчанию: Transform3D.Identity.
AddUnscaledBillboardvoid
public void AddUnscaledBillboard(Material material, float defaultScale = 1f, Color? modulate = default);Добавляет немасштабированный билборд для визуализации и выбора. Вызвать этот метод во время EditorEntity3DGizmo._Redraw.
| Имя | Тип | По умолчанию |
|---|---|---|
material | Material | — |
defaultScale | float | 1f |
modulate | Color? | default |
modulateЕсли параметр не имеет значения, то значение по умолчанию: new Color(1.0f, 1.0f, 1.0f, 1.0f).
Clearvoid
public void Clear();Очищает накопленную геометрию и данные выбора гизмо. Вызывайте в начале redraw перед повторным добавлением линий и ручек. Не удаляет Entity.
GetEntity3DEntity3D
public Entity3D GetEntity3D();Возвращает Entity3D, к которой привязан экземпляр гизмо. Добавляемая геометрия использует её локальные координаты.
Entity3DПривязанная Entity3D.
GetPluginEditorEntity3DGizmoPlugin
public EditorEntity3DGizmoPlugin GetPlugin();Возвращает обслуживающий обработчик. Используйте для получения материалов; не освобождайте его, пока он зарегистрирован или используется.
EditorEntity3DGizmoPluginОбработчик этого гизмо; непривязанный экземпляр может вернуть null.
GetSubgizmoSelectionint[]
public int[] GetSubgizmoSelection();Возвращает список выбранных в данный момент подэлементов. Может использоваться для выделения выбранных элементов во время EditorEntity3DGizmo._Redraw.
int[]IsSelectedbool
public bool IsSelected();Показывает состояние выбора гизмо редактором. Это не видимость Entity и не физический запрос.
booltrue для выбранного гизмо.
IsSubgizmoSelectedbool
public bool IsSubgizmoSelected(int id);Возвращает true, если указанный subgizmo в данный момент выбран. Может использоваться для подсветки выбранных элементов во время EditorEntity3DGizmo._Redraw.
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
boolSetEntity3Dvoid
public void SetEntity3D(Entity node);Устанавливает опорный узел Entity3D для гизмо. node должен наследовать от Entity3D.
| Имя | Тип | По умолчанию |
|---|---|---|
node | Entity | — |
public void SetHidden(bool hidden);Устанавливает скрытое состояние гизмо. Если true, гизмо будет скрыто. Если false, оно будет показано.
| Имя | Тип | По умолчанию |
|---|---|---|
hidden | bool | — |
_BeginHandleActionvoid
public virtual void _BeginHandleAction(int id, bool secondary);| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
secondary | bool | — |
_CommitHandlevoid
public virtual void _CommitHandle(int id, bool secondary, Variant restore, bool cancel);Переопределите этот метод, чтобы зафиксировать редактируемый дескриптор (дескрипторы должны быть ранее добавлены EditorEntity3DGizmo.AddHandles). Обычно это означает создание действия UndoRedo для изменения, используя текущее значение дескриптора как «do» и аргумент restore как «undo».
Если аргумент cancel равен true, значение restore должно быть установлено напрямую, без какого-либо действия UndoRedo.
Аргумент secondary равен true, когда зафиксированный дескриптор является вторичным (см. EditorEntity3DGizmo.AddHandles для получения дополнительной информации).
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
secondary | bool | — |
restore | Variant | — |
cancel | bool | — |
_CommitSubgizmosvoid
public virtual void _CommitSubgizmos(int[] ids, Reckfell.Collections.Array<Transform3D> restores, bool cancel);Переопределите этот метод, чтобы зафиксировать группу редактируемых подобъектов (см. EditorEntity3DGizmo._SubgizmosIntersectRay и EditorEntity3DGizmo._SubgizmosIntersectFrustum). Обычно это означает создание действия UndoRedo для изменения, используя текущие преобразования как «do» и преобразования restores как «undo».
Если аргумент cancel равен true, преобразования restores должны быть установлены напрямую, без какого-либо действия UndoRedo.
| Имя | Тип | По умолчанию |
|---|---|---|
ids | int[] | — |
restores | Reckfell.Collections.Array<Transform3D> | — |
cancel | bool | — |
_GetHandleNamestring
public virtual string _GetHandleName(int id, bool secondary);Переопределите этот метод, чтобы вернуть имя отредактированного дескриптора (дескрипторы должны быть предварительно добавлены EditorEntity3DGizmo.AddHandles). Дескрипторы могут быть названы для ссылки на пользователя при редактировании.
Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. EditorEntity3DGizmo.AddHandles для получения дополнительной информации).
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
secondary | bool | — |
string_GetHandleValueVariant
public virtual Variant _GetHandleValue(int id, bool secondary);Переопределите этот метод, чтобы вернуть текущее значение дескриптора. Это значение будет запрошено в начале редактирования и использовано как аргумент restore в EditorEntity3DGizmo._CommitHandle.
Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. EditorEntity3DGizmo.AddHandles для получения дополнительной информации).
#####_get_subgizmo_transform
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
secondary | bool | — |
Variant_GetSubgizmoTransformTransform3D
public virtual Transform3D _GetSubgizmoTransform(int id);Переопределите этот метод, чтобы вернуть текущую трансформацию subgizmo. Эта трансформация будет запрошена в начале редактирования и использована как аргумент restore в EditorEntity3DGizmo._CommitSubgizmos.
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
Transform3D_IsHandleHighlightedbool
public virtual bool _IsHandleHighlighted(int id, bool secondary);Переопределите этот метод, чтобы он возвращал true всякий раз, когда указанный дескриптор должен быть выделен в редакторе.
Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. EditorEntity3DGizmo.AddHandles для получения дополнительной информации).
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
secondary | bool | — |
bool_Redrawvoid
public virtual void _Redraw();Переопределите этот метод, чтобы добавлять все элементы гизмо всякий раз, когда запрашивается обновление гизмо. Обычно в начале этого метода вызывают EditorEntity3DGizmo.Clear, а затем добавляют визуальные элементы в зависимости от свойств узла.
#####_пожарный #
_SetHandlevoid
public virtual void _SetHandle(int id, bool secondary, Camera3D camera, Vector2 point);Переопределите этот метод, чтобы обновить свойства узла, когда пользователь перетаскивает ручку гизмо (ранее добавленную с помощью EditorEntity3DGizmo.AddHandles). Предоставленный point — это положение мыши в экранных координатах, а camera можно использовать для преобразования его в лучевые потоки.
Аргумент secondary равен true, когда отредактированная ручка является вторичной (см. EditorEntity3DGizmo.AddHandles для получения дополнительной информации).
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
secondary | bool | — |
camera | Camera3D | — |
point | Vector2 | — |
_SetSubgizmoTransformvoid
public virtual void _SetSubgizmoTransform(int id, Transform3D transform);Отмена этого метода обновления свойств узла во время субгидизмо редактирования (см. EditorEntity3DGizmo._SubgizmosIntersectRay и EditorEntity3DGizmo._SubgizmosIntersectFrustum) transform указано в Entity3D' местная система координат.
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
transform | Transform3D | — |
_SubgizmosIntersectFrustumint[]
public virtual int[] _SubgizmosIntersectFrustum(Camera3D camera, Reckfell.Collections.Array<Plane> frustum);Переопределите этот метод, чтобы разрешить выбор подобъектов с помощью выделения области перетаскивания мыши. При наличии camera и frustum этот метод должен возвращать, какие подобъекты содержатся в усеченной пирамиде. Аргумент frustum состоит из массива со всеми Plane, которые составляют усеченную пирамиду выбора. Возвращаемое значение должно содержать список уникальных идентификаторов подобъектов, которые могут иметь любое неотрицательное значение и будут использоваться в других виртуальных методах, таких как EditorEntity3DGizmo._GetSubgizmoTransform или EditorEntity3DGizmo._CommitSubgizmos.
| Имя | Тип | По умолчанию |
|---|---|---|
camera | Camera3D | — |
frustum | Reckfell.Collections.Array<Plane> | — |
int[]_SubgizmosIntersectRayint
public virtual int _SubgizmosIntersectRay(Camera3D camera, Vector2 point);Переопределите этот метод, чтобы разрешить выбор подгизмо с помощью щелчков мыши. При наличии camera и point в экранных координатах этот метод должен возвращать, какой подгизмо следует выбрать. Возвращаемое значение должно быть уникальным идентификатором подгизмо, который может иметь любое неотрицательное значение и будет использоваться в других виртуальных методах, таких как EditorEntity3DGizmo._GetSubgizmoTransform или EditorEntity3DGizmo._CommitSubgizmos.
| Имя | Тип | По умолчанию |
|---|---|---|
camera | Camera3D | — |
point | Vector2 | — |
int