| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- using UnityEngine;
 
- using UnityEngine.UIElements;
 
- using UnityEditor;
 
- using System;
 
- using System.Collections.Generic;
 
- using Object = UnityEngine.Object;
 
- namespace GraphProcessor
 
- {
 
-     /// <summary>
 
-     /// Custom editor of the node inspector, you can inherit from this class to customize your node inspector.
 
-     /// </summary>
 
-     [CustomEditor(typeof(NodeInspectorObject))]
 
-     public class NodeInspectorObjectEditor : Editor
 
-     {
 
-         NodeInspectorObject inspector;
 
-         protected VisualElement root;
 
-         protected VisualElement selectedNodeList;
 
-         protected VisualElement placeholder;
 
-         protected virtual void OnEnable()
 
-         {
 
-             inspector = target as NodeInspectorObject;
 
-             inspector.nodeSelectionUpdated += UpdateNodeInspectorList;
 
-             root = new VisualElement();
 
-             selectedNodeList = new VisualElement();
 
-             selectedNodeList.styleSheets.Add(Resources.Load<StyleSheet>("GraphProcessorStyles/InspectorView"));
 
-             root.Add(selectedNodeList);
 
-             placeholder = new Label("Select a node to show it's settings in the inspector");
 
-             placeholder.AddToClassList("PlaceHolder");
 
-             UpdateNodeInspectorList();
 
-         }
 
-         protected virtual void OnDisable()
 
-         {
 
-             inspector.nodeSelectionUpdated -= UpdateNodeInspectorList;
 
-         }
 
-         public override VisualElement CreateInspectorGUI() => root;
 
-         protected virtual void UpdateNodeInspectorList()
 
-         {
 
-             selectedNodeList.Clear();
 
-             if (inspector.selectedNodes.Count == 0)
 
-                 selectedNodeList.Add(placeholder);
 
-             foreach (var nodeView in inspector.selectedNodes)
 
-                 selectedNodeList.Add(CreateNodeBlock(nodeView));
 
-         }
 
-         protected VisualElement CreateNodeBlock(BaseNodeView nodeView)
 
-         {
 
-             var view = new VisualElement();
 
-             view.Add(new Label(nodeView.nodeTarget.name));
 
-             var tmp = nodeView.controlsContainer;
 
-             nodeView.controlsContainer = view;
 
-             nodeView.Enable(true);
 
-             nodeView.controlsContainer.AddToClassList("NodeControls");
 
-             var block = nodeView.controlsContainer;
 
-             nodeView.controlsContainer = tmp;
 
-             
 
-             return block;
 
-         }
 
-     }
 
-     /// <summary>
 
-     /// Node inspector object, you can inherit from this class to customize your node inspector.
 
-     /// </summary>
 
-     public class NodeInspectorObject : ScriptableObject
 
-     {
 
-         /// <summary>Previously selected object by the inspector</summary>
 
-         public Object previouslySelectedObject;
 
-         /// <summary>List of currently selected nodes</summary>
 
-         public HashSet<BaseNodeView> selectedNodes { get; private set; } = new HashSet<BaseNodeView>();
 
-         /// <summary>Triggered when the selection is updated</summary>
 
-         public event Action nodeSelectionUpdated;
 
-         /// <summary>Updates the selection from the graph</summary>
 
-         public virtual void UpdateSelectedNodes(HashSet<BaseNodeView> views)
 
-         {
 
-             selectedNodes = views;
 
-             nodeSelectionUpdated?.Invoke();
 
-         }
 
-         public virtual void RefreshNodes() => nodeSelectionUpdated?.Invoke();
 
-         public virtual void NodeViewRemoved(BaseNodeView view)
 
-         {
 
-             selectedNodes.Remove(view);
 
-             nodeSelectionUpdated?.Invoke();
 
-         }
 
-     }
 
- }
 
 
  |