private void InitializeNode() { if (editorNodes == null) { editorNodes = new List <EditorNode <NodeData> >(); } editorNodes.Clear(); if (selected == null) { return; } for (int i = 0; i < selected.advancedStates.Count; i++) { AdvancedState state = selected.advancedStates[i]; CreateStateNode(state, new Vector2(30.0f + (i * 10.0f), 30.0f + (i * 10.0f)), state.ID); } for (int i = 0; i < Transitions.Length; i++) { CreateTransitionNode(Transitions[i], new Vector2(60.0f + (i * 10.0f), 30.0f + (i * 10.0f)), Transitions[i].ID); } }
public EditorNode <NodeData> FindNodeByState(AdvancedState state) { if (state == null) { return(null); } if (state.ID == null) { return(null); } for (int i = 0; i < editorNodes.Count; i++) { if (editorNodes[i].myData.type != NodeType.STATE) { continue; } if (editorNodes[i].myData.state.ID == state.ID) { return(editorNodes[i]); } } return(null); }
public override void OnInspectorGUI() { serializedObject.Update(); DisplayScriptField(); if (GUILayout.Button("ceshi")) { LogConsole.Log(allStates.arraySize); for (int i = 0; i < allStates.arraySize; ++i) { SerializedProperty elem = allStates.GetArrayElementAtIndex(i); LogConsole.Log(elem.name + " " + elem.type); while (elem.Next(true)) { LogConsole.Log(elem.name + " " + elem.type); } } } EditorGUILayout.LabelField("allStates"); int count = allStates.arraySize; for (int i = 0; i < count; ++i) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(10f); EditorGUILayout.BeginVertical(); EditorGUILayout.LabelField("element " + i); SerializedProperty elem = allStates.GetArrayElementAtIndex(i); if (target.allStates[i] is BaseState) { BaseState state = target.allStates[i] as BaseState; state.s = EditorGUILayout.TextField("s = ", state.s); } if (target.allStates[i] is AdvancedState) { AdvancedState state = target.allStates[i] as AdvancedState; state.i = EditorGUILayout.IntField("i = ", state.i); } if (target.allStates[i] is AnotherState) { AnotherState state = target.allStates[i] as AnotherState; state.f = EditorGUILayout.FloatField("f = ", state.f); } if (target.allStates[i] is AnotherAdvancedState) { AnotherAdvancedState state = target.allStates[i] as AnotherAdvancedState; state.b = EditorGUILayout.Toggle("b = ", state.b); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } serializedObject.ApplyModifiedProperties(); }
private EditorNode <NodeData> CreateStateNode(AdvancedState state, Vector2 position, string title) { EditorNode <NodeData> node = new EditorNode <NodeData>(new NodeData(NodeType.STATE, state, null) , editorNodes.Count , new Rect(position.x - (NODE_WIDTH * 0.5f), position.y - (NODE_HEIGHT * 0.5f), NODE_WIDTH, NODE_HEIGHT) , title , (GUIStyle)"flow node hex 4", (GUIStyle)"flow node hex 4 on" , OnStateNodeGenericMenu); editorNodes.Add(node); return(node); }
public void SelectNodeByState(AdvancedState state) { for (int i = 0; i < editorNodes.Count; i++) { if (editorNodes[i].myData.type == NodeType.STATE) { if (editorNodes[i].myData.state.ID == state.ID) { SelectNode(editorNodes[i]); return; } } } }
public void Test() { StateMachineTemplate template = ScriptableObject.CreateInstance <StateMachineTemplate>(); template.allStates = new List <BaseState>(); AdvancedState advancedState = new AdvancedState(); AnotherState anotherState = new AnotherState(); AnotherAdvancedState anotherAdvancedState = new AnotherAdvancedState(); BaseState baseState = new BaseState(); template.allStates.Add(advancedState); template.allStates.Add(anotherState); template.allStates.Add(anotherAdvancedState); template.allStates.Add(baseState); AssetDatabase.CreateAsset(template, "Assets/State.asset"); }
public NodeData(NodeType type, AdvancedState state, AdvancedTransition transition) { this.type = type; this.state = state; this.transition = transition; }