void OnGUI() { if (!CheckSelectedObject()) { EditorGUILayout.HelpBox("Please select scriptable object instance which has a [Graph] attribute", MessageType.Info, true); return; } if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed") { Event.current.Use(); return; } if (Event.current.type == EventType.Used) { return; } JointHighlight = (JointHighlightHolder)GUIUtility.GetStateObject(typeof(JointHighlightHolder) , GUIUtility.GetControlID(FocusType.Passive)); List <Node> nodes = new List <Node>(); OnGUIToolBar(); scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Width(contentWidth), GUILayout.Height(contentHeight)); if (connectionCollection != null) { foreach (Connection connectionGUI in connectionCollection.allConnections) { connectionGUI.OnGUI(); } } foreach (var graphData in CurrentGraph.ItemList) { Node nodeGUI = Node.GetInstance((ScriptableObjectNode)graphData, this); nodes.Add(nodeGUI); } BeginWindows(); foreach (Node node in nodes) { node.OnGUI(); } EndWindows(); connectionCollection = new ConnectionsCollection(nodes, this); HandleDraggConnections(nodes, connectionCollection.LastDraggedConnection); EditorGUILayout.EndScrollView(); UpdateContentSize(nodes); }
void OnGUI() { if (!CheckSelectedObject()){ EditorGUILayout.HelpBox("Please select scriptable object instance which has a [Graph] attribute", MessageType.Info,true); return; } if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed"){ Event.current.Use(); return; } if (Event.current.type == EventType.Used){ return; } bool firsDrawCallOnThisGraph = CurrentGraph != lastUsedGraph; JointHighlight = (JointHighlightHolder) GUIUtility.GetStateObject(typeof(JointHighlightHolder) ,GUIUtility.GetControlID(FocusType.Passive)); List<Node> nodes = new List<Node>(); OnGUIToolBar(); scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Width(contentWidth), GUILayout.Height(contentHeight)); if (connectionCollection != null){ foreach (Connection connectionGUI in connectionCollection.allConnections) { connectionGUI.OnGUI(); } } foreach(var graphData in CurrentGraph.ItemList){ Node nodeGUI = Node.GetInstance((ScriptableObjectNode)graphData, this); nodes.Add(nodeGUI); } BeginWindows(); foreach (Node node in nodes){ node.OnGUI(); } EndWindows(); connectionCollection = new ConnectionsCollection (nodes, this); HandleDraggConnections(nodes, connectionCollection.LastDraggedConnection); EditorGUILayout.EndScrollView(); UpdateContentSize(nodes); if (firsDrawCallOnThisGraph ){ Repaint(); } lastUsedGraph = CurrentGraph; }