1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using UnityEditor;
- using UnityEngine;
- #if ODIN_INSPECTOR
- using Sirenix.OdinInspector.Editor;
- using Sirenix.Utilities;
- using Sirenix.Utilities.Editor;
- #endif
- namespace 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
- }
|