@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
148 lines (147 loc) • 5.44 kB
JavaScript
"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_();