Example #1
0
    private void DrawState(StateMachineData.State state)
    {
        // Draw
        GameObject o = Instantiate(statePrefab);

        o.transform.position = (Vector3)state.pos + (Vector3.back * state.id * 0.01f);
        TMP_Text t = o.GetComponentInChildren <TMP_Text>();

        t.SetText(state.name);

        if (state.id == stateMachineData.initialState)
        {
            o.transform.Find("InitialStateArrow").gameObject.SetActive(true);
        }

        // Remove old and add new obj to list
        GameObject old;

        if (drawnStates.TryGetValue(state, out old))
        {
            Destroy(old);
            drawnStates[state] = o;
        }
        else
        {
            drawnStates.Add(state, o);
        }
    }
    private void ChangeEditMode(EditMode editMode, bool deselect = true)
    {
        if (deselect)
        {
            smc.DeselectState(selectedState);
            selectedState = null;
            smc.DeselectTransition(selectedTransition);
            selectedTransition = null;
        }
        if (editMode != EditMode.Test && this.editMode == EditMode.Test)
        {
            NextButtonText.SetText("Test");
            fileNameText.SetText(smc.stateMachineData.meta_name);
            smc.TestClear();
        }

        switch (editMode)
        {
        case EditMode.Edit:
            this.editMode = EditMode.Edit;
            animator.SetTrigger("Cancle");
            tooltip.SetText("Tap to select a state or transition.");
            break;

        case EditMode.AddState:
            this.editMode = EditMode.AddState;
            animator.SetTrigger("AddState");
            tooltip.SetText("Tap to add a new state.");
            break;

        case EditMode.AddTransition:
            this.editMode = EditMode.AddTransition;
            animator.SetTrigger("AddTransition");
            tooltip.SetText("Tap to add a new transition.");
            break;

        case EditMode.SelectState:
            this.editMode = EditMode.SelectState;
            animator.SetTrigger("SelectState");
            tooltip.SetText("Drag the selected state to move.");
            break;

        case EditMode.SelectTransition:
            this.editMode = EditMode.SelectTransition;
            animator.SetTrigger("SelectTransition");
            tooltip.SetText("");
            break;

        case EditMode.Test:
            this.editMode = EditMode.Test;
            animator.SetTrigger("Test");
            tooltip.SetText("");
            NextButtonText.SetText("Run");
            fileNameText.SetText(smc.stateMachineData.meta_name + testTopPanelText);
            break;

        default:
            break;
        }
    }
    private void ClickAddTransition(Vector2 pos)
    {
        if (!IsInCanvas(pos))
        {
            return;
        }
        Vector2 wp = Camera.main.ScreenToWorldPoint(pos);

        if (selectedState == null)
        {
            selectedState = smc.SelectState(wp);
        }
        else
        {
            StateMachineData.State otherState = smc.SelectState(wp);
            if (otherState != null)
            {
                StateMachineData.Transition t = smc.stateMachineData.transitions.Find(x => x.from == selectedState.id && x.to == otherState.id);
                if (t != null)
                {
                    smc.DeselectState(otherState);
                    ChangeEditMode(EditMode.SelectTransition);
                    selectedTransition = smc.SelectTransition(t.from, t.to);
                }
                else
                {
                    CreateTransition(selectedState.id, otherState.id, 0);
                    smc.DeselectState(otherState);
                    ChangeEditMode(EditMode.Edit);
                }
            }
        }
    }
Example #4
0
 public void UndrawState(StateMachineData.State state)
 {
     if (drawnStates.TryGetValue(state, out GameObject g))
     {
         Destroy(g);
         DrawTransitions();
     }
 }
Example #5
0
 public void DrawState(StateMachineData.State state, bool selected = false)
 {
     DrawState(state);
     if (selected)
     {
         ColorSelectedState(state);
     }
 }
Example #6
0
    private void ColorSelectedState(StateMachineData.State s, Color?c = null)
    {
        c = c ?? Appdata.highlightColor;
        // Change Color
        GameObject g = drawnStates[s];

        g.GetComponent <SpriteRenderer>().color     = c.Value;
        g.GetComponentInChildren <TMP_Text>().color = c.Value;
        g.transform.position = new Vector3(g.transform.position.x, g.transform.position.y, -100f);
    }
Example #7
0
 public StateMachineData.State SelectState(Vector2 pos)
 {
     StateMachineData.State s = stateMachineData.states.FindLast(x => Vector2.Distance(x.pos, pos) < Appdata.circleSize);
     if (s == null)
     {
         return(null);
     }
     ColorSelectedState(s);
     return(s);
 }
Example #8
0
    public void DeselectState(StateMachineData.State s)
    {
        if (s == null)
        {
            return;
        }
        GameObject g = drawnStates[s];

        g.GetComponent <SpriteRenderer>().color     = Color.black;
        g.GetComponentInChildren <TMP_Text>().color = Color.black;
        g.transform.position = new Vector3(g.transform.position.x, g.transform.position.y, s.id * -0.01f);
    }
    private bool SelectThing(Vector2 pos)
    {
        if (!IsInCanvas(pos))
        {
            return(false);
        }

        smc.DeselectState(selectedState);
        smc.DeselectTransition(selectedTransition);
        selectedState = null;

        Vector2 wp = Camera.main.ScreenToWorldPoint(pos);

        selectedState = smc.SelectState(wp);

        if (selectedState == null)
        {
            selectedTransition = smc.SelectTransition(wp);
        }
        return(true);
    }
 private void RemoveState(StateMachineData.State s)
 {
     smc.stateMachineData.RemoveState(s);
     smc.UndrawState(s);
 }