123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import {Object2D} from "../../Object2D";
- import {Node} from "./Node";
- /**
- * Node graph object should be used as a container for node elements.
- *
- * The node graph object specifies how the nodes are processed, each individual node can store and process data, the node graph specified how this information is processed.
- *
- * All node elements are stored as children of the node graph.
- *
- * @class
- * @extends {Object2D}
- */
- function NodeGraph()
- {
- Object2D.call(this);
- }
- NodeGraph.prototype = Object.create(Object2D.prototype);
- NodeGraph.prototype.constructor = NodeGraph;
- NodeGraph.prototype.type = "NodeGraph";
- Object2D.register(NodeGraph, "NodeGraph");
- /**
- * Create and add a new node of specific node type to the graph.
- *
- * Automatically finds an empty space as close as possible to other nodes to add this new node.
- *
- * @param {Node} node Node object to be added.
- * @return {Node} Node created (already added to the graph).
- */
- NodeGraph.prototype.addNode = function(node)
- {
- // Check available position on screen.
- var x = 0, y = 0;
- for(var i = 0; i < this.children.length; i++)
- {
- if(this.children[i].position.x > x)
- {
- x = this.children[i].position.x;
- }
- if(this.children[i].position.y > y)
- {
- y = this.children[i].position.y;
- }
- }
- // Create and add new node
- node.position.set(x + 200, y / 2.0);
- this.add(node);
- if(node.registerSockets !== null)
- {
- node.registerSockets();
- }
- return node;
- };
- export {NodeGraph};
|