UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

148 lines (147 loc) 5.44 kB
"use strict"; import { RenderersController } from "./poly/RenderersController"; import { PolyCanvasRegister } from "./poly/PolyCanvasRegister"; import { PolyLibsController } from "./poly/PolyLibsController"; import { BlobsController } from "./poly/BlobsController"; import { AssetUrlsController } from "./poly/AssetUrlsController"; import { PolyPerformanceformanceController } from "./poly/PerformanceController"; import { ScenesRegister } from "./poly/ScenesRegister"; import { PolyThirdPartyController } from "./poly/ThirdPartyController"; import { PolyOnObjectsAddRemoveHooksController } from "./poly/PolyOnObjectsAddRemoveHooksController"; import { PolyOnSceneUpdatedHooksController } from "./poly/PolyOnSceneUpdatedHooksController"; import { PolySpecializedChildrenController } from "./poly/PolySpecializedChildrenController"; import { PluginsRegister } from "./poly/registers/plugins/PluginsRegister"; import { PolyCamerasRegister } from "./poly/registers/cameras/PolyCamerasRegister"; import { DynamicModulesRegister } from "./poly/registers/modules/DynamicModulesRegister"; import { ExpressionRegister } from "./poly/registers/expressions/ExpressionRegister"; import { AssemblersRegister } from "./poly/registers/assemblers/AssemblersRegistry"; import { NodesRegister, OperationsRegister } from "./poly/registers/nodes/NodesRegister"; import { NamedFunctionRegister } from "./poly/registers/functions/FunctionsRegister"; const POLYGONJS_VERSION = "1.5.97"; export class PolyEngine { constructor() { // static _instance: Poly | undefined; this.renderersController = new RenderersController(this); this.canvasRegister = new PolyCanvasRegister(this); this.scenesRegister = new ScenesRegister(); this.nodesRegister = new NodesRegister(this); this.operationsRegister = new OperationsRegister(this); this.expressionsRegister = new ExpressionRegister(); this.assemblersRegister = new AssemblersRegister(); this.pluginsRegister = new PluginsRegister(this); this.camerasRegister = new PolyCamerasRegister(this); this.modulesRegister = new DynamicModulesRegister(this); this.namedFunctionsRegister = new NamedFunctionRegister(); this.blobs = new BlobsController(this); this.assetUrls = new AssetUrlsController(); // public readonly logo = new LogoController(); this.thirdParty = new PolyThirdPartyController(); this.onObjectsAddRemoveHooks = new PolyOnObjectsAddRemoveHooksController(); this.onSceneUpdatedHooks = new PolyOnSceneUpdatedHooksController(); this.specializedChildren = new PolySpecializedChildrenController(); // public readonly selfContainedScenesLoader: SelfContainedScenesLoader = new SelfContainedScenesLoader(); this.performance = new PolyPerformanceformanceController(); this.scenesByUuid = {}; this._playerMode = true; this._logger = null; } static _instance_() { if (globalThis.__POLYGONJS_POLY_INSTANCE__) { return globalThis.__POLYGONJS_POLY_INSTANCE__; } else { const instance = new PolyEngine(); globalThis.__POLYGONJS_POLY_INSTANCE__ = instance; return globalThis.__POLYGONJS_POLY_INSTANCE__; } } version() { return POLYGONJS_VERSION; } setPlayerMode(mode) { this._playerMode = mode; } playerMode() { return this._playerMode; } dispose() { this.scenesRegister.dispose(); this.renderersController.dispose(); } registerNode(node, tab_menu_category, options) { this.nodesRegister.register(node, tab_menu_category, options); } registerOperation(operation, options) { this.operationsRegister.register(operation, options); } registerNamedFunction(namedFunction, options) { this.namedFunctionsRegister.register(namedFunction, options); } registerCamera(cameraClass, viewerCreateCallback) { this.camerasRegister.register(cameraClass, viewerCreateCallback); } registerCameraNodeType(nodeType) { this.camerasRegister.registerNodeType(nodeType); } registerPlugin(plugin) { this.pluginsRegister.register(plugin); } wrapConfigurePolygonjs(callback) { this.pluginsRegister.wrapConfigurePolygonjs(callback); } registeredNodes(parentNode) { return this.nodesRegister.registeredNodes(parentNode); } registeredOperation(parent_context, operation_type) { return this.operationsRegister.registeredOperation(parent_context, operation_type); } // registeredCameraTypes() { // return this.camerasRegister.registeredTypes(); // } registerModule(module, options) { this.modulesRegister.register(module.moduleName, module, options); } inWorkerThread() { return false; } get libs() { return this._libs_controller = this._libs_controller || new PolyLibsController(); } // // // ENV // // setEnv(env) { this._env = env; } env() { return this._env; } // // // LOGGER // // setLogger(logger) { this._logger = logger; } logger() { return this._logger; } log(message, ...optionalParams) { var _a; (_a = this._logger) == null ? void 0 : _a.log(...[message, ...optionalParams]); } warn(message, ...optionalParams) { var _a; (_a = this._logger) == null ? void 0 : _a.warn(...[message, ...optionalParams]); } error(message, ...optionalParams) { var _a; (_a = this._logger) == null ? void 0 : _a.error(...[message, ...optionalParams]); } } export const Poly = PolyEngine._instance_();