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