ViewObject

ViewObject – абстрактный класс, описывающий объект на сцене. Расширяет THREE.Object3D.

export abstract class ViewObject extends THREE.Object3D {
  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 });