public override ExecutionWireNode GetNextExecutionNode() { TruePin = Outputs[0]; FalsePin = Outputs[1]; bool conditionResult; InputWirePin conditionInput = Inputs[1]; WireNode conditionNode = conditionInput.GetConnectedPin().GetOwner(); if (conditionNode is ComparationWireNode) // If the condition input is linked to a comparation, then we get the value of this comparation { conditionResult = (conditionNode as ComparationWireNode).GetResult(); } else // Otherwise we just take the input value, which can only be a boolean { conditionResult = (bool)conditionInput.Value; } if (conditionResult) // The condition is true { // Try to return the TRUE pin target's node if (TruePin.IsConnected == false || TruePin.GetConnectedPin() == null) { return(null); } return(TruePin.GetConnectedPin().GetOwner() as ExecutionWireNode); } // Try to return the FALSE pin target's node if (FalsePin.IsConnected == false || FalsePin.GetConnectedPin() == null) { return(null); } return(FalsePin.GetConnectedPin().GetOwner() as ExecutionWireNode); }
public void AddOutput(OutputWirePin output) { if (!output.RefusedNodes.Contains(typeof(BranchWireNode).Name)) { output.RefusedNodes.Add(typeof(BranchWireNode).Name); } if (!output.RefusedNodes.Contains(typeof(ReunionWireNode).Name)) { output.RefusedNodes.Add(typeof(ReunionWireNode).Name); } if (!output.RefusedNodes.Contains(typeof(ChooseReplyWireNode).Name)) { output.RefusedNodes.Add(typeof(ChooseReplyWireNode).Name); } if (!output.RefusedNodes.Contains(typeof(SetVariableValWireNode).Name)) { output.RefusedNodes.Add(typeof(SetVariableValWireNode).Name); } if (!output.RefusedNodes.Contains(typeof(SetAnimatorVariableWireNode).Name)) { output.RefusedNodes.Add(typeof(SetAnimatorVariableWireNode).Name); } RenderedNode.Outputs.Add(output); SetRenderedNode(RenderedNode); }
protected override void DoCustomDrawing() { int outputsCount = RenderedNode.Outputs.Count; EditorGUILayout.BeginHorizontal(); int wantedOutputsCount = Mathf.Clamp(EditorGUILayout.IntField("Count", outputsCount, GUILayout.Width(182)), 2, 20); EditorGUILayout.EndHorizontal(); int delta = 0; if (outputsCount < wantedOutputsCount) // Need to add outputs { delta = wantedOutputsCount - outputsCount; for (int i = 0; i < delta; i++) { OutputWirePin newPin = new OutputWirePin(RenderedNode, DialogEditor.Instance.EditingDialog) { PinName = "Choice", DataType = WDEngine.ActivityStream }; AddOutput(newPin); } } else if (outputsCount > wantedOutputsCount) { delta = outputsCount - wantedOutputsCount; for (int i = 0; i < delta; i++) { RemoveLastOutput(); } } if (delta != 0) { SetRenderedNode(RenderedNode); } outputsCount = wantedOutputsCount; int finalHeight = 50; foreach (OutputWirePin outputs in RenderedNode.Outputs) { if (!outputs.IsConnected) { outputs.PinName = "Choice"; } else { outputs.PinName = outputs.GetConnectedPin().GetOwner().NodeName; } finalHeight += 25; } WindowRect.height = finalHeight; }
public override ExecutionWireNode GetNextExecutionNode() { OutputWirePin output = Outputs[0]; InputWirePin connectedPin = output.GetConnectedPin() as InputWirePin; WireNode connectedPinOwner = connectedPin.GetOwner(); if (!output.IsConnected || connectedPin == null) { return(null); } return(connectedPinOwner as ExecutionWireNode); }
public void RemoveOutput(OutputWirePin output) { Dictionary <uint, WirePin> dic = DialogEditor.Instance.EditingDialog.Pins; if (dic.ContainsKey(output.WirePinId)) { dic.Remove(output.WirePinId); } output.Disconnect(true); RenderedNode.Outputs.Remove(output); }
public void AddOutput() { OutputWirePin pin = new OutputWirePin(RenderedNode, DialogEditor.Instance.EditingDialog) { PinName = "Choice", DataType = WDEngine.ActivityStream }; pin.RefusedNodes.Add(typeof(BranchWireNode).Name); pin.RefusedNodes.Add(typeof(ReunionWireNode).Name); pin.RefusedNodes.Add(typeof(ChooseReplyWireNode).Name); pin.RefusedNodes.Add(typeof(SetVariableValWireNode).Name); pin.RefusedNodes.Add(typeof(SetAnimatorVariableWireNode).Name); AddOutput(pin); }