Scene

Применение #

Класс Scene представляет собой коллекцию объектов, а также камеру для рендеринга. Чтобы создать сцену, создайте объект с классом Scene:

import { Scene } from "scene"

const scene = new Scene()

scene.open()

Сигнатура класса #

class Scene {
constructor(options?: SceneOptions);
open(): void;
add(...entities: Entity[]): void;
remove(...entities: Entity[]): void;
setSkyboxColor(color: number): void;
addEventListener(channel: TouchEventType, cb: (ev: TouchEvent) => void): void;
removeEventListener(channel: TouchEventType, cb: (ev: TouchEvent) => void): void;

// Свойства
readonly camera: Entity & Camera;
get entities(): Readonly<Entity[]>;
get material(): Material;
static get activeScene(): Scene | null;
}

Constructor #

В конструкторе указываются базовые настройки сцены. По умолчанию в сцене создается глобальный источник света с IBL освещением.

type SceneOptions = {
  castShadows?: boolean,
  sunLight?: boolean,
  ibl?: boolean,
  iblIntensity?: number
}

Параметры SceneOptions:

  • castShadows?: boolean — включить тени;
  • sunLight?: boolean — добавить солнечный источник света;
  • ibl?: boolean — окружение IBL;
  • iblIntensity?: number — интенсивность IBL.
  • Свойства #

    camera

    Главная камера сцены. Является типом Entity с компонентом Camera.

    entities

    Список объектов в сцене

    Методы #

    open

    Открывает сцену, делая её активной

    add(...entities)

    Добавляет сущности в сцену.

    remove(...entities)

    Удаляет сущности из сцены.

    setSkyboxColor(color)

    Устанавливает цвет фона.

    addEventListener(type, cb)

    Подписка на события касания/клика сцены.

    removeEventListener(type, cb)

    Отписка от событий

    События #

    События назначаются через addEventListener

    "click"

    Клик/тап по сцене (если попали в объект с Collider, ev.target укажет на него).

    "touchstart"

    Начало касания/жеста.

    "touchmove"

    Движение пальца/курсора.

    "touchend"

    Завершение касания/жеста.