Extend GraphGUI found in UnityEditor.Graphs. This class is responsible for drawing graph.
using System; using UnityEditor; using UnityEngine; using UnityEditor.Graphs; using System.Collections.Generic; namespace ws.winx.editor.components { public class GraphGUIEx:GraphGUI{ } }Create EditorWindow
public class GraphEditorWindow : EditorWindow { static GraphEditorWindow graphEditorWindow; Graph stateMachineGraph; GraphGUIEx stateMachineGraphGUI; [MenuItem("Window/Example")] static void Do () { graphEditorWindow = GetWindow<grapheditorwindow$gt; (); } ....Create Graph structure. It will contains nodes and edges between nodes.
stateMachineGraph = ScriptableObject.CreateInstance<Graph> (); stateMachineGraph.hideFlags = HideFlags.HideAndDontSave; //create new node Node node=ScriptableObject.CreateInstance<Node>(); node.title="mile2"; node.position=new Rect(400,34,300,200); node.AddInputSlot("input"); start=node.AddOutputSlot("output"); node.AddProperty(new Property(typeof(System.Int32),"integer")); stateMachineGraph.AddNode(node); //create new node Node node=ScriptableObject.CreateInstance<Node>(); node.title="mile"; node.position=new Rect(0,0,300,200); Slot end=node.AddInputSlot("input"); node.AddOutputSlot("output"); node.AddProperty(new Property(typeof(System.Int32),"integer")); stateMachineGraph.AddNode(node); //create edge stateMachineGraph.Connect(start,end);Create new GraphGUIEx instance and attach graph that should be drawn.
GraphGUIEx graphGUI = ScriptableObject.CreateInstance<GraphGUIEx>(); graphGUI.graph = graph;Draw Graph.
void OnGUI () { if (graphEditorWindow && stateMachineGraphGUI != null) { stateMachineGraphGUI.BeginGraphGUI (graphEditorWindow, new Rect (0, 0, graphEditorWindow.position.width, graphEditorWindow.position.height)); stateMachineGraphGUI.OnGraphGUI (); stateMachineGraphGUI.EndGraphGUI (); } }Override NodeGUI or EdgeGUI for more styling and drawing control or copy styling from Your MecanimEditor is in namespace UnityEditor.Graphs.AnimationStateMachine.GraphGUI to create Mecanim look like Graph.
sd
ReplyDelete