reckfellENGINE

EditorEntity3DGizmo

Экземпляр вспомогательной геометрии одной Entity3D в редакторе.

На этой странице
class EditorEntity3DGizmoReckfellSharpEditorНаследует Entity3DGizmo

Содержит линии, данные выбора и ручки, связанные с Entity3D. Обычно создаётся обработчиком EditorEntity3DGizmoPlugin. Собственный наследник нужен для состояния или логики на каждый объект.

В redraw очищайте старые данные и добавляйте геометрию в локальных координатах. Гизмо не создаёт игровой меш или физический коллайдер.

Рабочий C#-пример.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

EditorEntity3DGizmoКонструктор
# EditorEntity3DGizmo
C#
public EditorEntity3DGizmo();

Методы29

AddCollisionSegments2 перегрузки
# AddCollisionSegments · 1/2
C#
public void AddCollisionSegments(Vector3[] segments);

Добавляет локальные отрезки для выбора гизмо редактором. Это геометрия picking, не физический коллайдер игры. Вызывайте в redraw.

Параметры
ИмяТипПо умолчанию
segmentsVector3[]—
segments

Пары локальных концов отрезков.

# AddCollisionSegments · 2/2
C#
public void AddCollisionSegments(ReadOnlySpan<Vector3> segments);

Добавляет локальные отрезки для выбора гизмо редактором. Это геометрия picking, не физический коллайдер игры. Вызывайте в redraw.

Параметры
ИмяТипПо умолчанию
segmentsReadOnlySpan<Vector3>—
segments

Пары локальных концов отрезков.

AddCollisionTrianglesvoid
# AddCollisionTriangles
C#
public void AddCollisionTriangles(TriangleMesh triangles);

Добавляет треугольники столкновения в гизмо для выбора. TriangleMesh также может быть сгенерирован из обычного Mesh. Вызывайте этот метод во время EditorEntity3DGizmo._Redraw.

Параметры
ИмяТипПо умолчанию
trianglesTriangleMesh—
AddHandles2 перегрузки
# AddHandles · 1/2
C#
public void AddHandles(Vector3[] handles, Material material, int[] ids, bool billboard = false, bool secondary = false);

Добавляет интерактивные точки только выбранному и редактируемому гизмо. Для изменения свойств реализуйте update/commit-callback: сами точки ничего не меняют.

Параметры
ИмяТипПо умолчанию
handlesVector3[]—
materialMaterial—
idsint[]—
billboardboolfalse
secondaryboolfalse
handles

Позиции ручек в локальных координатах Entity3D.

material

Материал из CreateHandleMaterial().

ids

ID каждой ручки: непустой массив должен совпадать по длине с handles. Пустой массив использует индексы.

billboard

Настройка billboard ручек.

secondary

Отнести к вторичному набору; callback получает этот же признак.

# AddHandles · 2/2
C#
public void AddHandles(ReadOnlySpan<Vector3> handles, Material material, ReadOnlySpan<int> ids, bool billboard, bool secondary);

Добавляет интерактивные точки только выбранному и редактируемому гизмо. Для изменения свойств реализуйте update/commit-callback: сами точки ничего не меняют.

Параметры
ИмяТипПо умолчанию
handlesReadOnlySpan<Vector3>—
materialMaterial—
idsReadOnlySpan<int>—
billboardbool—
secondarybool—
handles

Позиции ручек в локальных координатах Entity3D.

material

Материал из CreateHandleMaterial().

ids

ID каждой ручки: непустой массив должен совпадать по длине с handles. Пустой массив использует индексы.

billboard

Настройка billboard ручек.

secondary

Отнести к вторичному набору; callback получает этот же признак.

AddLines2 перегрузки
# AddLines · 1/2
C#
public void AddLines(Vector3[] lines, Material material, bool billboard = false, Color? modulate = default);

Добавляет линии парами локальных точек. Вызывайте после Clear() в redraw. Сами линии не создают ручек или физических столкновений.

Параметры
ИмяТипПо умолчанию
linesVector3[]—
materialMaterial—
billboardboolfalse
modulateColor?default
lines

Пары концов отрезков в локальных координатах Entity3D.

material

Материал линий, обычно из GetMaterial(name, gizmo).

billboard

Поворачивать линии к камере.

modulate

Дополнительный множитель цвета; по умолчанию белый.

# AddLines · 2/2
C#
public void AddLines(ReadOnlySpan<Vector3> lines, Material material, bool billboard, Color? modulate);

Добавляет линии парами локальных точек. Вызывайте после Clear() в redraw. Сами линии не создают ручек или физических столкновений.

Параметры
ИмяТипПо умолчанию
linesReadOnlySpan<Vector3>—
materialMaterial—
billboardbool—
modulateColor?—
lines

Пары концов отрезков в локальных координатах Entity3D.

material

Материал линий, обычно из GetMaterial(name, gizmo).

billboard

Поворачивать линии к камере.

modulate

Дополнительный множитель цвета; по умолчанию белый.

AddMeshvoid
# AddMesh
C#
public void AddMesh(Mesh mesh, Material material = null, Transform3D? transform = default, SkinReference skeleton = null);

Добавляет сетку к гизмо с указанным material, локальным transform и skeleton. Вызывайте этот метод во время EditorEntity3DGizmo._Redraw.

Параметры
ИмяТипПо умолчанию
meshMesh—
materialMaterialnull
transformTransform3D?default
skeletonSkinReferencenull
transform

Если параметр не имеет значения, то значение по умолчанию: Transform3D.Identity.

AddUnscaledBillboardvoid
# AddUnscaledBillboard
C#
public void AddUnscaledBillboard(Material material, float defaultScale = 1f, Color? modulate = default);

Добавляет немасштабированный билборд для визуализации и выбора. Вызвать этот метод во время EditorEntity3DGizmo._Redraw.

Параметры
ИмяТипПо умолчанию
materialMaterial—
defaultScalefloat1f
modulateColor?default
modulate

Если параметр не имеет значения, то значение по умолчанию: new Color(1.0f, 1.0f, 1.0f, 1.0f).

Clearvoid
# Clear
C#
public void Clear();

Очищает накопленную геометрию и данные выбора гизмо. Вызывайте в начале redraw перед повторным добавлением линий и ручек. Не удаляет Entity.

GetEntity3DEntity3D
# GetEntity3D
C#
public Entity3D GetEntity3D();

Возвращает Entity3D, к которой привязан экземпляр гизмо. Добавляемая геометрия использует её локальные координаты.

Возвращает Entity3D

Привязанная Entity3D.

GetPluginEditorEntity3DGizmoPlugin
# GetPlugin
C#
public EditorEntity3DGizmoPlugin GetPlugin();

Возвращает обслуживающий обработчик. Используйте для получения материалов; не освобождайте его, пока он зарегистрирован или используется.

Возвращает EditorEntity3DGizmoPlugin

Обработчик этого гизмо; непривязанный экземпляр может вернуть null.

GetSubgizmoSelectionint[]
# GetSubgizmoSelection
C#
public int[] GetSubgizmoSelection();

Возвращает список выбранных в данный момент подэлементов. Может использоваться для выделения выбранных элементов во время EditorEntity3DGizmo._Redraw.

Возвращает int[]
IsSelectedbool
# IsSelected
C#
public bool IsSelected();

Показывает состояние выбора гизмо редактором. Это не видимость Entity и не физический запрос.

Возвращает bool

true для выбранного гизмо.

IsSubgizmoSelectedbool
# IsSubgizmoSelected
C#
public bool IsSubgizmoSelected(int id);

Возвращает true, если указанный subgizmo в данный момент выбран. Может использоваться для подсветки выбранных элементов во время EditorEntity3DGizmo._Redraw.

Параметры
ИмяТипПо умолчанию
idint—
Возвращает bool
SetEntity3Dvoid
# SetEntity3D
C#
public void SetEntity3D(Entity node);

Устанавливает опорный узел Entity3D для гизмо. node должен наследовать от Entity3D.

Параметры
ИмяТипПо умолчанию
nodeEntity—
SetHiddenvoid
# SetHidden
C#
public void SetHidden(bool hidden);

Устанавливает скрытое состояние гизмо. Если true, гизмо будет скрыто. Если false, оно будет показано.

Параметры
ИмяТипПо умолчанию
hiddenbool—
_BeginHandleActionvoid
# _BeginHandleAction
C#
public virtual void _BeginHandleAction(int id, bool secondary);
Параметры
ИмяТипПо умолчанию
idint—
secondarybool—
_CommitHandlevoid
# _CommitHandle
C#
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 для получения дополнительной информации).

Параметры
ИмяТипПо умолчанию
idint—
secondarybool—
restoreVariant—
cancelbool—
_CommitSubgizmosvoid
# _CommitSubgizmos
C#
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.

Параметры
ИмяТипПо умолчанию
idsint[]—
restoresReckfell.Collections.Array<Transform3D>—
cancelbool—
_GetHandleNamestring
# _GetHandleName
C#
public virtual string _GetHandleName(int id, bool secondary);

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

Параметры
ИмяТипПо умолчанию
idint—
secondarybool—
Возвращает string
_GetHandleValueVariant
# _GetHandleValue
C#
public virtual Variant _GetHandleValue(int id, bool secondary);

Переопределите этот метод, чтобы вернуть текущее значение дескриптора. Это значение будет запрошено в начале редактирования и использовано как аргумент restore в EditorEntity3DGizmo._CommitHandle. Аргумент secondary равен true, когда запрошенный дескриптор является вторичным (см. EditorEntity3DGizmo.AddHandles для получения дополнительной информации).

#####_get_subgizmo_transform

Параметры
ИмяТипПо умолчанию
idint—
secondarybool—
Возвращает Variant
_GetSubgizmoTransformTransform3D
# _GetSubgizmoTransform
C#
public virtual Transform3D _GetSubgizmoTransform(int id);

Переопределите этот метод, чтобы вернуть текущую трансформацию subgizmo. Эта трансформация будет запрошена в начале редактирования и использована как аргумент restore в EditorEntity3DGizmo._CommitSubgizmos.

Параметры
ИмяТипПо умолчанию
idint—
Возвращает Transform3D
_IsHandleHighlightedbool
# _IsHandleHighlighted
C#
public virtual bool _IsHandleHighlighted(int id, bool secondary);

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

Параметры
ИмяТипПо умолчанию
idint—
secondarybool—
Возвращает bool
_Redrawvoid
# _Redraw
C#
public virtual void _Redraw();

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

#####_пожарный #

_SetHandlevoid
# _SetHandle
C#
public virtual void _SetHandle(int id, bool secondary, Camera3D camera, Vector2 point);

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

Параметры
ИмяТипПо умолчанию
idint—
secondarybool—
cameraCamera3D—
pointVector2—
_SetSubgizmoTransformvoid
# _SetSubgizmoTransform
C#
public virtual void _SetSubgizmoTransform(int id, Transform3D transform);

Отмена этого метода обновления свойств узла во время субгидизмо редактирования (см. EditorEntity3DGizmo._SubgizmosIntersectRay и EditorEntity3DGizmo._SubgizmosIntersectFrustum) transform указано в Entity3D' местная система координат.

Параметры
ИмяТипПо умолчанию
idint—
transformTransform3D—
_SubgizmosIntersectFrustumint[]
# _SubgizmosIntersectFrustum
C#
public virtual int[] _SubgizmosIntersectFrustum(Camera3D camera, Reckfell.Collections.Array<Plane> frustum);

Переопределите этот метод, чтобы разрешить выбор подобъектов с помощью выделения области перетаскивания мыши. При наличии camera и frustum этот метод должен возвращать, какие подобъекты содержатся в усеченной пирамиде. Аргумент frustum состоит из массива со всеми Plane, которые составляют усеченную пирамиду выбора. Возвращаемое значение должно содержать список уникальных идентификаторов подобъектов, которые могут иметь любое неотрицательное значение и будут использоваться в других виртуальных методах, таких как EditorEntity3DGizmo._GetSubgizmoTransform или EditorEntity3DGizmo._CommitSubgizmos.

Параметры
ИмяТипПо умолчанию
cameraCamera3D—
frustumReckfell.Collections.Array<Plane>—
Возвращает int[]
_SubgizmosIntersectRayint
# _SubgizmosIntersectRay
C#
public virtual int _SubgizmosIntersectRay(Camera3D camera, Vector2 point);

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

Параметры
ИмяТипПо умолчанию
cameraCamera3D—
pointVector2—
Возвращает int
Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.