GraphAndNodeEditor.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using UnityEditor;
  2. using UnityEngine;
  3. #if ODIN_INSPECTOR
  4. using Sirenix.OdinInspector.Editor;
  5. using Sirenix.Utilities;
  6. using Sirenix.Utilities.Editor;
  7. #endif
  8. namespace XNodeEditor
  9. {
  10. /// <summary> Override graph inspector to show an 'Open Graph' button at the top </summary>
  11. [CustomEditor(typeof(XNode.NodeGraph), true)]
  12. #if ODIN_INSPECTOR
  13. public class GlobalGraphEditor : OdinEditor {
  14. public override void OnInspectorGUI() {
  15. if (GUILayout.Button("Edit graph", GUILayout.Height(40))) {
  16. NodeEditorWindow.Open(serializedObject.targetObject as XNode.NodeGraph);
  17. }
  18. base.OnInspectorGUI();
  19. }
  20. }
  21. #else
  22. [CanEditMultipleObjects]
  23. public class GlobalGraphEditor : Editor
  24. {
  25. public override void OnInspectorGUI()
  26. {
  27. serializedObject.Update();
  28. if (GUILayout.Button("Edit graph", GUILayout.Height(40)))
  29. {
  30. NodeEditorWindow.Open(serializedObject.targetObject as XNode.NodeGraph, Selection.activeObject);
  31. }
  32. GUILayout.Space(EditorGUIUtility.singleLineHeight);
  33. GUILayout.Label("Raw data", "BoldLabel");
  34. DrawDefaultInspector();
  35. serializedObject.ApplyModifiedProperties();
  36. }
  37. }
  38. #endif
  39. [CustomEditor(typeof(XNode.Node), true)]
  40. #if ODIN_INSPECTOR
  41. public class GlobalNodeEditor : OdinEditor {
  42. public override void OnInspectorGUI() {
  43. if (GUILayout.Button("Edit graph", GUILayout.Height(40))) {
  44. SerializedProperty graphProp = serializedObject.FindProperty("graph");
  45. NodeEditorWindow w = NodeEditorWindow.Open(graphProp.objectReferenceValue as XNode.NodeGraph);
  46. w.Home(); // Focus selected node
  47. }
  48. base.OnInspectorGUI();
  49. }
  50. }
  51. #else
  52. [CanEditMultipleObjects]
  53. public class GlobalNodeEditor : Editor
  54. {
  55. public override void OnInspectorGUI()
  56. {
  57. serializedObject.Update();
  58. if (GUILayout.Button("Edit graph", GUILayout.Height(40)))
  59. {
  60. SerializedProperty graphProp = serializedObject.FindProperty("graph");
  61. NodeEditorWindow w = NodeEditorWindow.Open(graphProp.objectReferenceValue as XNode.NodeGraph, Selection.activeObject);
  62. w.Home(); // Focus selected node
  63. }
  64. GUILayout.Space(EditorGUIUtility.singleLineHeight);
  65. GUILayout.Label("Raw data", "BoldLabel");
  66. // Now draw the node itself.
  67. DrawDefaultInspector();
  68. serializedObject.ApplyModifiedProperties();
  69. }
  70. }
  71. #endif
  72. }