UNPKG

@polygonjs/polygonjs

Version:

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

73 lines (72 loc) 2.41 kB
"use strict"; import { TypedObjNode } from "../../_Base"; import { Group } from "three"; import { DisplayNodeController } from "../../../utils/DisplayNodeController"; import { FlagsControllerD } from "../../../utils/FlagsController"; import { HierarchyController } from "../HierarchyController"; import { ObjChildrenDisplayController } from "../ObjChildrenDisplayController"; import { PolyNodeController } from "../../../utils/poly/PolyNodeController"; import { PolyNodeParamsConfig } from "../../../utils/poly/PolyNodeParamsConfig"; import { ModuleName } from "../../../../poly/registers/modules/Common"; import { NodeContext } from "../../../../poly/NodeContext"; function createPolyObjNode(nodeType, definition, polyNodeControllerClass) { const ParamsConfig = PolyNodeParamsConfig.ParamsConfig(definition); class BasePolyObjNode extends TypedObjNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; this.hierarchyController = new HierarchyController(this); this.flags = new FlagsControllerD(this); // display_node and children_display controllers this.childrenDisplayController = new ObjChildrenDisplayController(this); this.displayNodeController = new DisplayNodeController( this, this.childrenDisplayController.displayNodeControllerCallbacks() ); // this._childrenControllerContext = NodeContext.SOP; // // // POLY // // this.polyNodeController = new polyNodeControllerClass(this, definition); } static type() { return nodeType; } requiredModules() { return [ModuleName.POLY_OBJ]; } createObject() { const group = new Group(); group.matrixAutoUpdate = false; return group; } initializeNode() { this.hierarchyController.initializeNode(); this.childrenDisplayController.initializeNode(); } createNode(node_class, options) { return super.createNode(node_class, options); } children() { return super.children(); } nodesByType(type) { return super.nodesByType(type); } // // // COOK // // cook() { this.cookController.endCook(); } } return BasePolyObjNode; } export function onPolyOBJModuleRegister(poly) { PolyNodeController.registerCreatePolyNodeFunctionForContext(NodeContext.OBJ, createPolyObjNode); }