David Catuhe hace 5 años
padre
commit
5abab13723

+ 10 - 0
nodeEditor/src/diagram/graphCanvas.tsx

@@ -712,6 +712,16 @@ export class GraphCanvasComponent extends React.Component<IGraphCanvasComponentP
             });
             });
         }
         }
 
 
+        if (pointB.ownerBlock.inputsAreExclusive) { // Disconnect all inputs if block has exclusive inputs
+            pointB.ownerBlock.inputs.forEach(i => {
+                let links = nodeB.getLinksForConnectionPoint(i);
+
+                links.forEach(link => {
+                    link.dispose();
+                });
+            })
+        }
+
         pointA.connectTo(pointB);
         pointA.connectTo(pointB);
         this.connectPorts(pointA, pointB);
         this.connectPorts(pointA, pointB);
 
 

+ 2 - 0
src/Materials/Node/Blocks/colorSplitterBlock.ts

@@ -25,6 +25,8 @@ export class ColorSplitterBlock extends NodeMaterialBlock {
         this.registerOutput("g", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("g", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("b", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("b", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("a", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("a", NodeMaterialBlockConnectionPointTypes.Float);
+
+        this.inputsAreExclusive = true;
     }
     }
 
 
     /**
     /**

+ 2 - 0
src/Materials/Node/Blocks/vectorSplitterBlock.ts

@@ -27,6 +27,8 @@ export class VectorSplitterBlock extends NodeMaterialBlock {
         this.registerOutput("y", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("y", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("z", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("z", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("w", NodeMaterialBlockConnectionPointTypes.Float);
         this.registerOutput("w", NodeMaterialBlockConnectionPointTypes.Float);
+
+        this.inputsAreExclusive = true;
     }
     }
 
 
     /**
     /**

+ 3 - 0
src/Materials/Node/nodeMaterialBlock.ts

@@ -24,6 +24,9 @@ export class NodeMaterialBlock {
     private _isInput = false;
     private _isInput = false;
     protected _isUnique = false;
     protected _isUnique = false;
 
 
+    /** Gets or sets a boolean indicating that only one input can be connected at a time */
+    public inputsAreExclusive = false;
+
     /** @hidden */
     /** @hidden */
     public _codeVariableName = "";
     public _codeVariableName = "";