UNPKG

@megavr/ecsy-babylon

Version:

babylon.js ecsy binding and helpers

50 lines (45 loc) 1.54 kB
import * as BABYLON from "@babylonjs/core"; import { System, Entity, SystemConstructor } from "ecsy"; import { getWorld } from "./worldUtils"; import { GameSystem } from "../systems/GameSystem"; import { Scene } from "../components/Scene"; /** @hidden */ export function getSystem<T extends System>(self: System, target: SystemConstructor<T>): T { return getWorld(self).getSystem(target) as T; } /** * @hidden * Get canvas used for rendering. * @param system A registered ecsy System class */ export function getRenderingCanvas(system: System): HTMLCanvasElement { return getSystem(system, GameSystem).renderingCanvas as HTMLCanvasElement; } /** * @hidden * Get all scenes in engine. * @param system A registered ecsy System class */ export function getScenes(system: System): BABYLON.Scene[] { return getSystem(system, GameSystem).scenes; } /** * Get a scene or return active scene. * @param system A registered ecsy System class * @param scene Scene entity */ export function getScene(system: System, scene?: Entity): BABYLON.Scene { if (scene) { return scene.getComponent(Scene).object; } else { return getSystem(system, GameSystem).activeScene; } } /** * Get scene AssetManager or return AssetManager in active scene. * @param system A registered ecsy System class * @param scene Scene entity */ export function getAssetManager(system: System, scene?: Entity): BABYLON.AssetsManager { return getSystem(system, GameSystem).getAssetManager(scene); }