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); } } }