コード例 #1
0
        private void GenerateChildrenNodes(CharacterStateNode _startingNode)
        {
            foreach (KeyValuePair <OTGCombatState, StateNodeTransition> pair in _startingNode.NodeData.StateTransitions)
            {
                Port   outPort  = _startingNode.InstantiatePort(Orientation.Horizontal, Direction.Output, Port.Capacity.Single, typeof(OTGCombatState));
                string portName = pair.Value.Transition.OwnerState.name.Split('_')[1];
                outPort.portName = portName;
                _startingNode.outputContainer.Add(outPort);
                _startingNode.RefreshExpandedState();
                _startingNode.RefreshPorts();
                Edge e = new Edge();

                if (pair.Value.ShouldReturnToAnExistingState)
                {
                    outPort.portColor = Color.red;
                    //CharacterStateNode n = GenerateNode(pair.Value.Transition);
                    //outPort.ConnectTo(n.InputPort);
                    //e.input = n.InputPort;
                    //e.output = outPort;
                    //n.SetPosition(new Rect((n.NodeData.Level * 150) + 150, (n.NodeData.Order * 150) + 150, 150, 150));
                    //AddElement(e);
                }
                else
                {
                    CharacterStateNode n = GenerateNode(pair.Value.Transition);
                    outPort.ConnectTo(n.InputPort);
                    e.input  = n.InputPort;
                    e.output = outPort;
                    AddElement(e);
                    GenerateChildrenNodes(n);
                }
            }
        }