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);
        }
Example #2
0
        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);
        }
Example #3
0
        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;
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }