From 0572478a0e3fcd6ac00db05f4348adcae6ecd00b Mon Sep 17 00:00:00 2001 From: taoria <445625470@qq.com> Date: Fri, 8 Jul 2022 20:47:53 +0800 Subject: [PATCH] feat:work around another way to inspect properties --- .../PropertyFieldItem.cs | 23 +++++++++++++++++++ .../PropertyFieldItem.cs.meta | 3 +++ TNode/Editor/Inspector/NodeInspector.cs | 19 ++++----------- TNode/Editor/Inspector/NodeInspectorInNode.cs | 11 +-------- .../Search/BlackboardSearchWindowProvider.cs | 12 ++++++---- 5 files changed, 40 insertions(+), 28 deletions(-) create mode 100644 TNode/Editor/Inspector/InspectorImplementation/PropertyFieldItem.cs create mode 100644 TNode/Editor/Inspector/InspectorImplementation/PropertyFieldItem.cs.meta diff --git a/TNode/Editor/Inspector/InspectorImplementation/PropertyFieldItem.cs b/TNode/Editor/Inspector/InspectorImplementation/PropertyFieldItem.cs new file mode 100644 index 0000000..05fa288 --- /dev/null +++ b/TNode/Editor/Inspector/InspectorImplementation/PropertyFieldItem.cs @@ -0,0 +1,23 @@ +using UnityEditor; +using UnityEditor.UIElements; +using UnityEngine; +using UnityEngine.UIElements; + +namespace TNode.Editor.Inspector.InspectorImplementation{ + public class PropertyFieldItem:InspectorItem{ + + public PropertyFieldItem(){ + + + OnDataChanged += () => { + var data = new SerializedObject(Value as Object); + var testProperty = data.GetIterator().GetArrayElementAtIndex(0); + PropertyField propertyField = new PropertyField(testProperty); + this.Q()?.RemoveFromHierarchy(); + this.Add(propertyField); + + }; + } + + } +} \ No newline at end of file diff --git a/TNode/Editor/Inspector/InspectorImplementation/PropertyFieldItem.cs.meta b/TNode/Editor/Inspector/InspectorImplementation/PropertyFieldItem.cs.meta new file mode 100644 index 0000000..bced887 --- /dev/null +++ b/TNode/Editor/Inspector/InspectorImplementation/PropertyFieldItem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 98769c8b285d438197820fa366568fee +timeCreated: 1657280625 \ No newline at end of file diff --git a/TNode/Editor/Inspector/NodeInspector.cs b/TNode/Editor/Inspector/NodeInspector.cs index e4d2ad4..1d2c516 100644 --- a/TNode/Editor/Inspector/NodeInspector.cs +++ b/TNode/Editor/Inspector/NodeInspector.cs @@ -51,21 +51,12 @@ namespace TNode.Editor.Inspector{ var type = field.FieldType; InspectorItemFactory inspectorItemFactory = new InspectorItemFactory(); //Invoke generic function Create<> of default inspector item factory to create an inspector item of appropriate type by reflection - MethodInfo methodInfo = inspectorItemFactory.GetType().GetMethod("Create", BindingFlags.Instance | BindingFlags.Public); - if (methodInfo != null){ - var genericMethod = methodInfo.MakeGenericMethod(type); - var createdItem = genericMethod.Invoke(inspectorItemFactory,null) as VisualElement; - body.Add(createdItem); - if (createdItem is INodeDataBindingBase castedItem){ - castedItem.BindingNodeData = _data; - castedItem.BindingPath = bindingPath; - } - - //Check if field has DisableOnInspector attribute and if so,disable it - if (field.GetCustomAttribute() != null){ - createdItem?.SetEnabled(false); - } + var createdItem = inspectorItemFactory.Create(type); + if (createdItem is { } castedItem){ + castedItem.BindingNodeData = _data; + castedItem.BindingPath = bindingPath; } + Add((VisualElement)createdItem); } } } diff --git a/TNode/Editor/Inspector/NodeInspectorInNode.cs b/TNode/Editor/Inspector/NodeInspectorInNode.cs index e89603e..9a7c53c 100644 --- a/TNode/Editor/Inspector/NodeInspectorInNode.cs +++ b/TNode/Editor/Inspector/NodeInspectorInNode.cs @@ -32,22 +32,13 @@ namespace TNode.Editor.Inspector{ var showInNodeViewAttribute = field.GetCustomAttribute()!=null; if(!showInNodeViewAttribute) continue; - //Invoke generic function Create<> of default inspector item factory to create an inspector item of appropriate type by reflection var createdItem = inspectorItemFactory.Create(type); if (createdItem is { } castedItem){ castedItem.BindingNodeData = _data; castedItem.BindingPath = bindingPath; } Add((VisualElement)createdItem); - // MethodInfo methodInfo = inspectorItemFactory.GetType().GetMethod("Create", BindingFlags.Instance | BindingFlags.Public); - // if (methodInfo != null){ - // var genericMethod = methodInfo.MakeGenericMethod(type); - // Debug.Log(genericMethod); - // var createdItem = genericMethod.Invoke(inspectorItemFactory,null) as VisualElement; - // Add(createdItem); - // Debug.Log(createdItem?.GetType()); - // - // } + } } } diff --git a/TNode/Editor/Search/BlackboardSearchWindowProvider.cs b/TNode/Editor/Search/BlackboardSearchWindowProvider.cs index e0f5ed4..ffe6b32 100644 --- a/TNode/Editor/Search/BlackboardSearchWindowProvider.cs +++ b/TNode/Editor/Search/BlackboardSearchWindowProvider.cs @@ -1,15 +1,19 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using UnityEditor; using UnityEditor.Experimental.GraphView; namespace TNode.Editor{ public class BlackboardSearchWindowProvider:ISearchWindowProvider{ - + private Type _graphType; + private GraphView _graphView; + private EditorWindow _editor; public List CreateSearchTree(SearchWindowContext context){ - throw new System.NotImplementedException(); + return null; } public bool OnSelectEntry(SearchTreeEntry SearchTreeEntry, SearchWindowContext context){ - throw new System.NotImplementedException(); + return false; } }