EditorEntity3DGizmoPlugin
Обработчик гизмо редактора: линии, ручки и выбор Entity3D.
Зарегистрируйте экземпляр через EditorPlugin.AddEntity3DGizmoPlugin(). Для простого гизмо переопределите _HasGizmo(), _Redraw() и методы ручек. Для отдельного состояния на каждый объект возвращайте собственный EditorEntity3DGizmo из _CreateGizmo().
Геометрия задаётся в локальном пространстве Entity3D. Коллизии гизмо служат выбору в редакторе, а не игровой физике. При подтверждении ручки записывайте Do/Undo через менеджер редактора; при отмене прямо восстанавливайте исходный restore.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
EditorEntity3DGizmoPluginКонструктор
public EditorEntity3DGizmoPlugin();Методы24
AddMaterialvoid
public void AddMaterial(string name, StandardMaterial3D material);Добавляет новый материал во внутренний список материалов для плагина. Затем к нему можно получить доступ с помощью EditorEntity3DGizmoPlugin.GetMaterial. Не следует переопределять.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
material | StandardMaterial3D | — |
CreateHandleMaterialvoid
public void CreateHandleMaterial(string name, bool billboard = false, Texture2D texture = null);Создаёт материал ручек один раз при инициализации.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
billboard | bool | false |
texture | Texture2D | null |
nameКлюч материала ручек.
billboardНастройка billboard ручек.
textureТекстура ручек или null для стандартной текстуры редактора.
CreateIconMaterialvoid
public void CreateIconMaterial(string name, Texture2D texture, bool onTop = false, Color? color = default);Создает материал значка с его вариантами (выбранными и/или редактируемыми) и добавляет их во внутренний список материалов. Затем к ним можно получить доступ с помощью EditorEntity3DGizmoPlugin.GetMaterial и использовать в EditorEntity3DGizmo.AddUnscaledBillboard. Не следует переопределять.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
texture | Texture2D | — |
onTop | bool | false |
color | Color? | default |
colorЕсли параметр не имеет значения, то значение по умолчанию: new Color(1.0f, 1.0f, 1.0f, 1.0f).
CreateMaterialvoid
public void CreateMaterial(string name, Color color, bool billboard = false, bool onTop = false, bool useVertexColor = false);Создаёт варианты материала линий для выбранности и редактируемости. Вызывайте при инициализации, а в redraw получайте вариант через GetMaterial(name, gizmo).
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
color | Color | — |
billboard | bool | false |
onTop | bool | false |
useVertexColor | bool | false |
nameКлюч материала в плагине.
colorБазовый цвет; экземпляры сцены могут использовать цвет редактора.
billboardПоворачивать к камере; по умолчанию false.
onTopОтключить проверку глубины для отрисовки поверх геометрии.
useVertexColorУчитывать цвета вершин.
GetMaterialStandardMaterial3D
public StandardMaterial3D GetMaterial(string name, EditorEntity3DGizmo gizmo = null);Возвращает ранее созданный материал с учётом выбранности и редактируемости переданного гизмо. Без гизмо возвращает первый вариант.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
gizmo | EditorEntity3DGizmo | null |
nameКлюч ранее созданного материала.
gizmoГизмо для выбора варианта или null. Не освобождайте активный материал в redraw.
StandardMaterial3DМатериал указанного ключа и состояния.
_BeginHandleActionvoid
public virtual void _BeginHandleAction(EditorEntity3DGizmo gizmo, int handleId, bool secondary);| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
handleId | int | — |
secondary | bool | — |
public virtual bool _CanBeHidden();Разрешает скрывать этот тип гизмо через редактор; по умолчанию true. Не меняет видимость игровой Entity.
booltrue, если скрытие разрешено.
_CanCommitHandleOnClickbool
public virtual bool _CanCommitHandleOnClick();Разрешает завершить действие, когда конечная позиция ручки совпадает с начальной. По умолчанию false; отдельно проверяйте изменение данных.
booltrue для такого завершения.
_CommitHandlevoid
public virtual void _CommitHandle(EditorEntity3DGizmo gizmo, int handleId, bool secondary, Variant restore, bool cancel);Завершает действие: при cancel сразу восстановите restore без новой истории. Иначе запишите финальное значение как Do и исходное как Undo через менеджер редактора. Если данные не изменились, пропустите запись.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
handleId | int | — |
secondary | bool | — |
restore | Variant | — |
cancel | bool | — |
gizmoГизмо, для которого вызван callback.
handleIdID ручки из AddHandles(), не индекс Entity.
secondarytrue для вторичной ручки.
restoreИсходный снимок из _GetHandleValue().
canceltrue для отмены, false для подтверждения.
_CommitSubgizmosvoid
public virtual void _CommitSubgizmos(EditorEntity3DGizmo gizmo, int[] ids, Reckfell.Collections.Array<Transform3D> restores, bool cancel);Переопределите этот метод, чтобы зафиксировать группу редактируемых subgizmos (см. EditorEntity3DGizmoPlugin._SubgizmosIntersectRay и EditorEntity3DGizmoPlugin._SubgizmosIntersectFrustum). Обычно это означает создание действия UndoRedo для изменения, используя текущие преобразования как «do» и преобразования restores как «undo».
Если аргумент cancel равен true, преобразования restores должны быть установлены напрямую, без какого-либо действия UndoRedo. Как и во всех методах subgizmo, преобразования задаются в локальном пространстве относительно Entity3D gizmo. Вызывается для активных gizmos этого плагина.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
ids | int[] | — |
restores | Reckfell.Collections.Array<Transform3D> | — |
cancel | bool | — |
_CreateGizmoEditorEntity3DGizmo
public virtual EditorEntity3DGizmo _CreateGizmo(Entity3D forNode3D);Создаёт собственный EditorEntity3DGizmo для состояния на каждый объект. Возвращайте null для неподходящих Entity. Это альтернатива простому подходу через _HasGizmo().
| Имя | Тип | По умолчанию |
|---|---|---|
forNode3D | Entity3D | — |
forNode3DEntity3D, для которой нужен гизмо.
EditorEntity3DGizmoЭкземпляр гизмо или null.
_GetGizmoNamestring
public virtual string _GetGizmoName();Имя типа гизмо в меню видимости редактора; не переименовывает Entity.
stringИмя типа гизмо.
_GetHandleNamestring
public virtual string _GetHandleName(EditorEntity3DGizmo gizmo, int handleId, bool secondary);Задаёт подпись ручки. Согласуйте ID и secondary с AddHandles().
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
handleId | int | — |
secondary | bool | — |
gizmoГизмо, для которого вызван callback.
handleIdID ручки из AddHandles(), не индекс Entity.
secondarytrue для вторичной ручки.
stringПодпись ручки.
_GetHandleValueVariant
public virtual Variant _GetHandleValue(EditorEntity3DGizmo gizmo, int handleId, bool secondary);Возвращает исходный снимок перед редактированием. Редактор передаёт его как restore в _CommitHandle(); не подменяйте значением предыдущего кадра.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
handleId | int | — |
secondary | bool | — |
gizmoГизмо, для которого вызван callback.
handleIdID ручки из AddHandles(), не индекс Entity.
secondarytrue для вторичной ручки.
VariantVariant, достаточный для восстановления.
_GetPriorityint
public virtual int _GetPriority();Задаёт приоритет обработки ручек и выбора subgizmo. Большее значение имеет преимущество; по умолчанию 0. Это не порядок отрисовки материала.
intЧисленный приоритет.
_GetSubgizmoTransformTransform3D
public virtual Transform3D _GetSubgizmoTransform(EditorEntity3DGizmo gizmo, int subgizmoId);Переопределите этот метод, чтобы вернуть текущее преобразование subgizmo. Как и все методы subgizmo, преобразование должно быть в локальном пространстве относительно Entity3D gizmo. Это преобразование будет запрошено в начале редактирования и использовано в аргументе restore в EditorEntity3DGizmoPlugin._CommitSubgizmos. Вызывается для активных gizmos этого плагина.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
subgizmoId | int | — |
Transform3D_HasGizmobool
public virtual bool _HasGizmo(Entity3D forNode3D);Выбирает Entity3D для стандартного экземпляра гизмо этого плагина. При отдельном _CreateGizmo() выбор выполняет тот callback.
| Имя | Тип | По умолчанию |
|---|---|---|
forNode3D | Entity3D | — |
forNode3DПроверяемая Entity3D редактируемой сцены.
booltrue для подходящей Entity3D.
_IsHandleHighlightedbool
public virtual bool _IsHandleHighlighted(EditorEntity3DGizmo gizmo, int handleId, bool secondary);Переопределите этот метод, чтобы он возвращал true всякий раз, когда указанный дескриптор должен быть выделен в редакторе. Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. EditorEntity3DGizmo.AddHandles для получения дополнительной информации). Вызывается для активных гизмо этого плагина.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
handleId | int | — |
secondary | bool | — |
boolpublic virtual bool _IsSelectableWhenHidden();Разрешает выбор скрытого гизмо; по умолчанию false. Это выбор редактора, не физическая коллизия.
booltrue для выбора скрытого гизмо.
_Redrawvoid
public virtual void _Redraw(EditorEntity3DGizmo gizmo);Пересоздаёт геометрию гизмо: сначала Clear(), затем локальные линии, данные выбора и ручки. Материалы создавайте при инициализации, а не на каждом обновлении.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
gizmoГизмо, для которого вызван callback.
_SetHandlevoid
public virtual void _SetHandle(EditorEntity3DGizmo gizmo, int handleId, bool secondary, Camera3D camera, Vector2 screenPos);Обновляет данные при движении ручки. Преобразуйте луч камеры в пространство редактируемого свойства; не создавайте Undo-действие каждый кадр.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
handleId | int | — |
secondary | bool | — |
camera | Camera3D | — |
screenPos | Vector2 | — |
gizmoГизмо, для которого вызван callback.
handleIdID ручки из AddHandles(), не индекс Entity.
secondarytrue для вторичной ручки.
cameraКамера редактируемого 3D-вида.
screenPosПозиция в координатах соответствующего viewport, не мировая точка.
_SetSubgizmoTransformvoid
public virtual void _SetSubgizmoTransform(EditorEntity3DGizmo gizmo, int subgizmoId, Transform3D transform);Переопределите этот метод для обновления свойств узла во время редактирования subgizmo (см. EditorEntity3DGizmoPlugin._SubgizmosIntersectRay и EditorEntity3DGizmoPlugin._SubgizmosIntersectFrustum). transform задается в локальной системе координат Entity3D. Вызывается для активных gizmos этого плагина.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
subgizmoId | int | — |
transform | Transform3D | — |
_SubgizmosIntersectFrustumint[]
public virtual int[] _SubgizmosIntersectFrustum(EditorEntity3DGizmo gizmo, Camera3D camera, Reckfell.Collections.Array<Plane> frustumPlanes);Переопределите этот метод, чтобы разрешить выбор подобъектов с помощью выделения области перетаскивания мыши. При наличии camera и frustum_planes этот метод должен возвращать, какие подобъекты содержатся в усеченных пирамидах. Аргумент frustum_planes состоит из массива со всеми Plane, которые составляют усеченную пирамиду выбора. Возвращаемое значение должно содержать список уникальных идентификаторов подобъектов, эти идентификаторы могут иметь любое неотрицательное значение и будут использоваться в других виртуальных методах, таких как EditorEntity3DGizmoPlugin._GetSubgizmoTransform или EditorEntity3DGizmoPlugin._CommitSubgizmos. Вызывается для активных гизмо этого плагина.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
camera | Camera3D | — |
frustumPlanes | Reckfell.Collections.Array<Plane> | — |
int[]_SubgizmosIntersectRayint
public virtual int _SubgizmosIntersectRay(EditorEntity3DGizmo gizmo, Camera3D camera, Vector2 screenPos);Переопределите этот метод, чтобы разрешить выбор подгимов с помощью щелчков мыши. При наличии camera и screen_pos в экранных координатах этот метод должен возвращать, какой подгимов следует выбрать. Возвращаемое значение должно быть уникальным идентификатором подгимов, который может иметь любое неотрицательное значение и будет использоваться в других виртуальных методах, таких как EditorEntity3DGizmoPlugin._GetSubgizmoTransform или EditorEntity3DGizmoPlugin._CommitSubgizmos. Вызывается для активных подгимов этого плагина.
| Имя | Тип | По умолчанию |
|---|---|---|
gizmo | EditorEntity3DGizmo | — |
camera | Camera3D | — |
screenPos | Vector2 | — |
int