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); } } } }
public void UndrawState(StateMachineData.State state) { if (drawnStates.TryGetValue(state, out GameObject g)) { Destroy(g); DrawTransitions(); } }
public void DrawState(StateMachineData.State state, bool selected = false) { DrawState(state); if (selected) { ColorSelectedState(state); } }
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); }
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); }
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); }