ViewObject
ViewObjectEventMap
ViewObjectEventMap – события ViewObject.
export interface ViewObjectEventMap extends THREE.Object3DEventMap {
// событие уничтожения объекта
dispose: {},
// событие изменения объекта
update: { updateType: UpdateType },
}
При изменении объекта подписчикам также сообщается тип изменения. Подробнее: UpdateType.
ViewObject
ViewObject – абстрактный класс, описывающий объект на сцене. Расширяет THREE.Object3D.
export abstract class ViewObject extends THREE.Object3D<ViewObjectEventMap> {
readonly entityGuid: string;
readonly modelGuid: string;
constructor(entityGuid?: string, modelGuid?: string, color?: Color);
abstract get mesh(): THREE.Mesh | null;
abstract get edges(): THREE.LineSegments | null;
setVisible(value: boolean): void;
isVisible(): boolean;
setHidden(value: boolean): void;
isHidden(): boolean;
setSelected(value: boolean): void;
isSelected(): boolean;
setHovered(value: boolean): void;
isHovered(): boolean;
setColor(color: Color): void;
getColor(): Color;
resetColor(): void;
getOriginalColor(): Color;
isGhosted(): boolean;
setGhosted(value: boolean): void;
dispose(): void;
getBoundingBox(): THREE.Box3;
raycast(iRaycaster: THREE.Raycaster, oIntersects: THREE.Intersection[]): void;
protected setHoveredForObject(value: boolean): void;
protected setSelectedForObject(value: boolean): void;
protected setHiddenForObject(value: boolean): void;
protected setVisibleForObject(value: boolean): void;
protected setColorForObject(color: Color): void;
protected setGhostModeForObject(value: boolean): void;
protected resetColorForObject(): void;
protected riseOnUpdated(updateType?: UpdateType, object?: THREE.Object3D): void;
}
Конструктор
constructor(entityGuid?: string, modelGuid?: string, color?: Color);
где:
entityGuid
– идентификатор объекта модели, которому соответствует ViewObject
. Опциональный параметр. Если не задан, то объекту присваивается нулевой guid. Подробнее: ModelElement.id.
modelGuid
– идентификатор части модели, к которой относится объект модели. Опциональный параметр. Если не задан, то объекту присваивается нулевой guid. Подробнее: ModelElement.modelPartId.
color
– начальный цвет объекта. Опциональный параметр. Если не задан, то объекту присваивается цвет по умолчанию – new Color(1, 1, 1, 1)
. Подробнее: Color.
Поля
entityGuid
Идентификатор элемента модели, соответствующего этому ViewObject
. Подробнее: ModelElement.id.
readonly entityGuid: string;
Значение по умолчанию: 00000000-0000-0000-0000-000000000000
.
modelGuid
Идентификатор части модели, к которой относится элемент модели, соответствующий этому ViewObject
. Подробнее: ModelElement.modelPartId.
readonly entityGuid: string;
Значение по умолчанию: 00000000-0000-0000-0000-000000000000
.
Свойства
get mesh()
Геометрическое представление ViewObject
в виде THREE.Mesh
. Подробнее: THREE.Mesh.
Используется для отрисовки объекта при выделении (Hover/Select) и при расчёте пересечений с Frustum
.
abstract get mesh(): THREE.Mesh | null;
get edges()
Геометрическое представление ViewObject
в виде THREE.LineSegments
. Подробнее: THREE.LineSegments.
Используется для отрисовки объекта при выделении (Hover/Select) и при расчёте пересечений с Frustum
.
abstract get edges(): THREE.LineSegments | null;
Методы
setVisible()
Метод управляет видимостью объекта на сцене.
setVisible(value: boolean): void;
где:
value
– видимость объекта.
isVisible()
Метод проверяет видимость объекта на сцене.
isVisible(): boolean;
Возвращает true
, если объект виден. В противном случае возвращает false
.
setHidden()
Метод управляет скрытием объекта со сцены. Скрытие объектов используется только для ускорения отрисовки сцены и не влияет на проверку пересечений.
setHidden(value: boolean): void;
где:
value
– скрыт ли объект.
isHidden()
Метод проверяет видимость объекта на сцене.
isHidden(): boolean;
Вовзращает true
, если объект скрыт. В противном случае возвращает false
.
setSelected()
Метод управляет селектированием объекта.
setSelected(value: boolean): void;
где:
value
– выбран ли объект.
isSelected()
Метод проверяет селектирование объекта.
isSelected(): boolean;
Возвращает true
, если объект выбран. В противном случае возвращает false
.
setHovered()
Метод управляет ховером объекта.
setHovered(value: boolean): void;
где:
value
– активность ховера над объектом.
isHovered()
Метод проверяет активность ховера над объектом.
isHovered(): boolean;
Возвращает true
, если ховер активен. В противном случае возвращает false
.
setColor()
Метод задаёт цвет объекта.
setColor(color: Color): void;
где:
color
– цвет объекта. Подробнее: Color.
getColor()
Метод возвращает текущий цвет объекта. Подробнее: Color.
getColor(): Color;
resetColor()
Сбрасывает цвет объекта на изначальный.
resetColor(): void;
getOriginalColor()
Метод возвращает изначальный цвет объекта.
getOriginalColor(): Color;
Возвращает объект типа Color.
isGhosted()
Метод проверяет, находится ли объект в призрачном режиме отрисовки.
isGhosted(): boolean;
setGhosted()
Метод задает призрачный режим отрисовки объекта – объект рисуется бесцветным и полупрозрачным.
setGhosted(value: boolean): void;
где:
value
– задаёт активность призрачного режима.
dispose()
Метод освобождает ресурсы, выделенные ViewObject
.
dispose(): void;
getBoundingBox()
Метод возвращает граничный объём ViewObject
.
Реализация по умолчанию возвращает пустой THREE.Box3
. Метод доступен для переопределения.
getBoundingBox(): THREE.Box3;
Возвращает объект типа THREE.Box3.
raycast()
Метод вычисляет пересечение ViewObject
с лучом.
Для расчета пересечений на сцене должен быть переопределён в подклассах.
Метод пустой по умолчанию, доступен для переопределения.
Подробнее: THREE.Object3D.raycast
raycast(iRaycaster: THREE.Raycaster, oIntersects: THREE.Intersection[]): void;
protected setHoveredForObject()
Метод описывает поведение объекта при ховере.
Метод пустой по умолчанию, доступен для переопределения.
protected setHoveredForObject(value: boolean): void;
где:
value
– активность ховера над объектом.
protected setSelectedForObject()
Метод описывает поведение объекта при селекте.
Метод пустой по умолчанию, доступен для переопределения.
protected setSelectedForObject(value: boolean): void;
где:
value
– значение селекта над объектом.
protected setHiddenForObject()
Метод описывает поведение объекта при скрытии.
Реализация по умолчанию работает только для объектов на основной сцене MainScene
. Метод доступен для переопределения.
protected setHiddenForObject(value: boolean): void;
где:
value
– видимость объекта на сцене.
protected setVisibleForObject()
Метод описывает поведение объекта при изменении видимости.
Реализация по умолчанию использует свойство Object3D.visibility. Метод доступен для переопределения.
protected setVisibleForObject(value: boolean): void;
где:
value
– видимость объекта на сцене.
protected setColorForObject()
Метод описывает поведение объекта при изменении цвета.
Метод пустой по умолчанию, доступен для переопределения.
protected setColorForObject(color: Color): void;
где:
color
– цвет объекта. Подробнее: Color.
protected setGhostModeForObject()
Метод описывает поведение объекта в призрачном режиме.
Метод пустой по умолчанию, доступен для переопределения.
protected setGhostModeForObject(value: boolean): void;
где:
value
– задаёт активность призрачного режима.
protected resetColorForObject()
Метод описывает поведение объекта при сбрасывании цвета объекта на изначальный.
Реализация по умолчанию использует setColorForObject(originalColor). Метод доступен для переопределения.
protected resetColorForObject(): void;
protected riseOnUpdated()
Метод сообщает подписчикам об изменении объекта. Подробнее: EventDispatcher.
protected riseOnUpdated(updateType?: UpdateType, object?: THREE.Object3D): void;
где:
updateType
– тип обновления. Подробнее: UpdateType.
object
– объект, источник обновления. По умолчанию – текущий объект.
// При изменении дочерних объектов, которые не являются `ViewObject`
// для оповещения об их изменениях можно использовать `riseOnUpdated` родительского объекта.
// При изменении видимости текущего объекта:
this.visible = false;
// Оповещаем об изменениях:
this.riseOnUpdated(UpdateType.Visibility);
// Эквивалентно вызову:
this.dispatchEvent({ type: 'update', updateType: UpdateType.Visibility });
// При изменении видимости дочернего объекта:
childMesh.visibility = false;
// Оповещаем об изменениях:
this.riseOnUpdated(UpdateType.Visibility, childMesh);
// Эквивалентно вызову:
childMesh.dispatchEvent({ type: 'update', updateType: UpdateType.Visibility });