Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // to call this function no need to select the composite in the node view, it will be chosen with a prompt.
- function ConnectButton(){
- if (KeyModifiers.IsAlternatePressed()){
- disconnectAllSellNodes()
- }else{
- connectAllSellNodes()
- }
- }
- function connectAllSellNodes(){
- // connects selected Nodes to a chosen Composite
- scene.beginUndoRedoAccum("connectAllSelNodes");
- // filter out some nodes types
- var typesFilter = ["PEG"]
- var sel = selection.selectedNodes()
- sel = sel.filter(function(x){return typesFilter.indexOf(node.type(x)) == -1})
- // get nodes sorted by coordinates
- sel = sel.sort(function (b,a){return (node.coordY(a)*10000+node.coordX(a)) - (node.coordY(b)*10000+node.coordX(b))});
- if (sel.length==0) return;
- var homeGroup = node.parentNode(sel[0])
- var sceneComps = getSceneComposites(homeGroup);
- // prompt for a composite to connect to if there is more than one
- if (sceneComps.length > 1){
- var compsNames = sceneComps.map(function(x){return node.getName(x)})
- var comp = homeGroup+"/"+Input.getItem("Select a composite to link to:", compsNames);
- }else{
- var comp = sceneComps[0]
- }
- // link the nodes to the comp
- for (var i in sel){
- MessageLog.trace("linking node "+sel[i]+" "+" to "+comp)
- node.link(sel[i], 0, comp, node.numberOfInputPorts(comp)+1)
- }
- scene.endUndoRedoAccum();
- }
- function disconnectAllSellNodes(){
- scene.beginUndoRedoAccum("disconnectAllSelNodes");
- var sel = selection.selectedNodes();
- for (var i in sel){
- for (var j=0; j<node.numberOfOutputPorts(sel[i]); j++){
- for (var k=0; k<node.numberOfOutputLinks(sel[i], j); j++){
- var dstNode = node.dstNode(sel[i], j, k)
- var port = getInputPort(sel[i], dstNode)
- if (port != -1) node.unlink(dstNode, port)
- }
- }
- }
- scene.endUndoRedoAccum();
- }
- function getSceneComposites(group){
- // returns a sorted list of all the composite Nodes in a group
- var nodes = node.subNodes(group).filter(function(x){return node.type(x) == "COMPOSITE"})
- return nodes.sort(function (a,b){return (node.coordY(a)*10000+node.coordX(a)) - (node.coordY(b)*10000+node.coordX(b))});
- }
- function getInputPort(srcNode, dstNode){
- // find the InPort through which two nodes are connected
- for (var i=0; i<node.numberOfInputPorts(dstNode); i++){
- var linkedNode = node.srcNode(dstNode, i);
- if (linkedNode == srcNode) return i;
- }
- return -1
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement