| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | using UnityEditor;using UnityEngine;#if ODIN_INSPECTORusing Sirenix.OdinInspector.Editor;using Sirenix.Utilities;using Sirenix.Utilities.Editor;#endifnamespace XNodeEditor{    /// <summary> Override graph inspector to show an 'Open Graph' button at the top </summary>    [CustomEditor(typeof(XNode.NodeGraph), true)]#if ODIN_INSPECTOR    public class GlobalGraphEditor : OdinEditor {        public override void OnInspectorGUI() {            if (GUILayout.Button("Edit graph", GUILayout.Height(40))) {                NodeEditorWindow.Open(serializedObject.targetObject as XNode.NodeGraph);            }            base.OnInspectorGUI();        }    }#else    [CanEditMultipleObjects]    public class GlobalGraphEditor : Editor    {        public override void OnInspectorGUI()        {            serializedObject.Update();            if (GUILayout.Button("Edit graph", GUILayout.Height(40)))            {                NodeEditorWindow.Open(serializedObject.targetObject as XNode.NodeGraph, Selection.activeObject);            }            GUILayout.Space(EditorGUIUtility.singleLineHeight);            GUILayout.Label("Raw data", "BoldLabel");            DrawDefaultInspector();            serializedObject.ApplyModifiedProperties();        }    }#endif    [CustomEditor(typeof(XNode.Node), true)]#if ODIN_INSPECTOR    public class GlobalNodeEditor : OdinEditor {        public override void OnInspectorGUI() {            if (GUILayout.Button("Edit graph", GUILayout.Height(40))) {                SerializedProperty graphProp = serializedObject.FindProperty("graph");                NodeEditorWindow w = NodeEditorWindow.Open(graphProp.objectReferenceValue as XNode.NodeGraph);                w.Home(); // Focus selected node            }            base.OnInspectorGUI();        }    }#else    [CanEditMultipleObjects]    public class GlobalNodeEditor : Editor    {        public override void OnInspectorGUI()        {            serializedObject.Update();            if (GUILayout.Button("Edit graph", GUILayout.Height(40)))            {                SerializedProperty graphProp = serializedObject.FindProperty("graph");                NodeEditorWindow w = NodeEditorWindow.Open(graphProp.objectReferenceValue as XNode.NodeGraph, Selection.activeObject);                w.Home(); // Focus selected node            }            GUILayout.Space(EditorGUIUtility.singleLineHeight);            GUILayout.Label("Raw data", "BoldLabel");            // Now draw the node itself.            DrawDefaultInspector();            serializedObject.ApplyModifiedProperties();        }    }#endif}
 |