@megavr/ecsy-babylon
Version:
babylon.js ecsy binding and helpers
30 lines (29 loc) • 1.09 kB
JavaScript
import * as BABYLON from "@babylonjs/core";
import { System } from "ecsy";
import { Scene } from "../components/Scene";
import { getWorld } from "../utils/worldUtils";
import { disposeObject } from "../utils/objectUtils";
import { GameSystem } from "./GameSystem";
export class SceneSystem extends System {
get activeScene() { return this._activeScene; }
/** @hidden */
execute() {
this.queries.scene.added.forEach((entity) => {
let scene = entity.getComponent(Scene);
let engine = this._getEngine();
scene.object = new BABYLON.Scene(engine, scene.options);
engine.scenes.length === 1 && (this._activeScene = scene);
});
this.queries.scene.removed.forEach((entity) => {
let scene = entity.getComponent(Scene);
disposeObject(scene);
});
}
_getEngine() {
return getWorld(this).getSystem(GameSystem).engine;
}
}
/** @hidden */
SceneSystem.queries = {
scene: { components: [Scene], listen: { added: true, removed: true } },
};