UNPKG

@polygonjs/polygonjs

Version:

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

103 lines (102 loc) 2.95 kB
"use strict"; import { TypedNode } from "../_Base"; import { CoreGroup } from "../../../core/geometry/Group"; import { ObjectType } from "../../../core/geometry/Constant"; import { NodeContext } from "../../poly/NodeContext"; import { FlagsControllerDBO } from "../utils/FlagsController"; import { BaseSopOperation } from "../../operations/sop/_Base"; import { CoreObjectType } from "../../../core/geometry/ObjectContent"; export class TypedSopNode extends TypedNode { constructor() { super(...arguments); this.flags = new FlagsControllerDBO(this); } static context() { return NodeContext.SOP; } dataType() { return CoreObjectType.THREEJS; } initializeBaseNode() { this.flags.display.set(false); this.flags.display.onUpdate(() => { if (!this.flags.display.active()) { return; } const parent = this.parent(); if (!(parent && parent.displayNodeController)) { return; } parent.displayNodeController.setDisplayNode(this); }); this.io.outputs.setHasOneOutput(); } // // ALL OBJECTS // // // THREEJS OBJECTS // setCoreGroup(coreGroup) { this._setContainer( coreGroup /*, MESSAGE.FROM_SET_CORE_GROUP*/ ); } setObject(object) { this._setContainerObjects( [object] /*, MESSAGE.FROM_SET_OBJECT*/ ); } setObjects(objects) { this._setContainerObjects( objects /*, MESSAGE.FROM_SET_OBJECTS*/ ); } setGeometry(geometry, type = ObjectType.MESH) { const object = this.createObject(geometry, type); this._setContainerObjects( object ? [object] : [] /*, MESSAGE.FROM_SET_GEOMETRY*/ ); } setGeometries(geometries, type = ObjectType.MESH) { const objects = []; for (const geometry of geometries) { const object = this.createObject(geometry, type); if (object) { objects.push(object); } } this._setContainerObjects( objects /*, MESSAGE.FROM_SET_GEOMETRIES*/ ); } // protected _setContainerAllObjects(objects: Object3D[] /*, message: MESSAGE*/) { // const coreGroup = this.containerController.container().coreContent() || new CoreGroup(); // coreGroup.setAllObjects(objects); // this._setContainer(coreGroup); // } _setContainerObjects(objects) { const coreGroup = this.containerController.container().coreContent() || new CoreGroup(); coreGroup.setAllObjects(objects); this._setContainer(coreGroup); } static createObject(geometry, type, material) { return BaseSopOperation.createObject(geometry, type, material); } createObject(geometry, type, material) { return TypedSopNode.createObject(geometry, type, material); } static createIndexIfNone(geometry) { BaseSopOperation.createIndexIfNone(geometry); } _createIndexIfNone(geometry) { TypedSopNode.createIndexIfNone(geometry); } } export class BaseSopNodeClass extends TypedSopNode { }