Beispiel #1
0
    public void DrawTransitions()
    {
        // Remove old
        drawnTransitions.ForEach(x => Destroy(x.gameObject));
        drawnTransitions.Clear();

        // Copy of all transitions to draw
        List <StateMachineData.Transition> transitions = new List <StateMachineData.Transition>(stateMachineData.transitions);

        while (transitions.Count > 0)
        {
            // Stack same transition with other transitions
            List <StateMachineData.Transition> sameTransition = transitions.FindAll(x => x.from == transitions[0].from && x.to == transitions[0].to);
            transitions.RemoveAll(x => sameTransition.Contains(x));

            // Draw
            GameObject o = Instantiate(transitionPrefab);
            o.transform.position = Vector3.zero;

            // Pos
            Vector2 startPos = stateMachineData.states.Find(x => x.id == sameTransition[0].from).pos;
            Vector2 endPos   = stateMachineData.states.Find(x => x.id == sameTransition[0].to).pos;

            // Set & Add Text
            TransitionPrefab t = o.GetComponent <TransitionPrefab>();
            t.Set(startPos, endPos, stateMachineData.InputToString(sameTransition[0].input), sameTransition[0]);
            sameTransition.RemoveAt(0);
            foreach (StateMachineData.Transition item in sameTransition)
            {
                t.AddText(stateMachineData.InputToString(item.input), item);
            }

            drawnTransitions.Add(t);
        }
    }