@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
73 lines (72 loc) • 2.41 kB
JavaScript
;
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);
}