UNPKG

polygonjs-engine

Version:

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

57 lines (56 loc) 1.72 kB
import {TypedNode} from "../../_Base"; import {JsAssemblerNodeSpareParamsController} from "./SpareParamsController"; export class AssemblerControllerNode extends TypedNode { createNode(node_class, params_init_value_overrides) { return super.createNode(node_class, params_init_value_overrides); } children() { return super.children(); } nodesByType(type) { return super.nodesByType(type); } } export class JsAssemblerController { constructor(node, assembler_class) { this.node = node; this._compile_required = true; this._assembler = new assembler_class(this.node); this._spare_params_controller = new JsAssemblerNodeSpareParamsController(this, this.node); } get assembler() { return this._assembler; } add_output_inputs(output_child) { this._assembler.add_output_inputs(output_child); } add_globals_outputs(globals_node) { this._assembler.add_globals_outputs(globals_node); } allow_attribute_exports() { return this._assembler.allow_attribute_exports(); } on_create() { const globals = this.node.createNode("globals"); const output = this.node.createNode("output"); globals.uiData.setPosition(-200, 0); output.uiData.setPosition(200, 0); } set_compilation_required(new_state = true) { this._compile_required = new_state; } set_compilation_required_and_dirty(trigger_node) { this.set_compilation_required(); this.node.setDirty(trigger_node); } compile_required() { return this._compile_required; } post_compile() { this.create_spare_parameters(); this.set_compilation_required(false); } create_spare_parameters() { this._spare_params_controller.create_spare_parameters(); } }