1.start to build inspector

main
taoria 3 years ago
parent 0d3d0e09dd
commit 7eb9406b75
  1. 4
      TNode/Editor/Cache/NodeEditorExtensions.cs
  2. 34
      TNode/Editor/Inspector/DefaultInspectorItemFactory.cs
  3. 3
      TNode/Editor/Inspector/DefaultInspectorItemFactory.cs.meta
  4. 4
      TNode/Editor/Inspector/INodeDataBinding.cs
  5. 3
      TNode/Editor/Inspector/InspectorImplementation.meta
  6. 16
      TNode/Editor/Inspector/InspectorImplementation/DefaultInspectorItem.cs
  7. 3
      TNode/Editor/Inspector/InspectorImplementation/DefaultInspectorItem.cs.meta
  8. 29
      TNode/Editor/Inspector/InspectorItem.cs
  9. 8
      TNode/Editor/Inspector/TinyInspector.cs
  10. 13
      TNode/Editor/Inspector/TinyInspectorItem.cs
  11. 0
      TNode/Editor/Inspector/TinyInspectorItem.cs.meta

@ -45,5 +45,9 @@ namespace TNode.Cache{
var instance = Activator.CreateInstance(implementedType);
return instance;
}
public static bool HasSpecificType<T>() where T : class{
var implementedType = NodeEditorSingleton.Instance.FromGenericToSpecific[typeof(T)] as T;
return (T)implementedType!=null;
}
}
}

@ -0,0 +1,34 @@
using System;
using TNode.Cache;
using TNode.Editor.Inspector.InspectorImplementation;
using UnityEditor;
using UnityEngine.UIElements;
namespace TNode.Editor.Inspector{
public class DefaultInspectorItemFactory{
public InspectorItem<T> Create<T>(){
//Check type of T
var hasSpecificType = NodeEditorExtensions.HasSpecificType<InspectorItem<T>>();
if (hasSpecificType){
return NodeEditorExtensions.CreateInstance<InspectorItem<T>>();
}
else{
return DefaultInspectorItem<T>();
}
}
public static InspectorItem<T> DefaultInspectorItem<T>(){
DefaultInspectorItem<T> item = new DefaultInspectorItem<T>();
if (typeof(string) == typeof(T)){
item.FoldOut.Add(new TextField(){
name = "StringTextField"
});
}
return item;
}
}
}

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 83b9e37f79cf4a18b265e3e22e7e3ced
timeCreated: 1656142463

@ -18,5 +18,9 @@ namespace TNode.Editor.Inspector{
public string BindingPath{ get; set; }
public NodeData BindingNodeData{ get; set; }
public T Value => GetValue();
public void OnBindingDataUpdate(){
}
}
}

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4cdebd0430794d32918ba8c63d71d0cc
timeCreated: 1656142311

@ -0,0 +1,16 @@
using UnityEngine.UIElements;
namespace TNode.Editor.Inspector.InspectorImplementation{
public class DefaultInspectorItem<T>:InspectorItem<T>{
public Foldout FoldOut;
public DefaultInspectorItem(){
var foldout = new Foldout{
text = ""
};
this.Add(foldout);
OnValueChanged += () => {
foldout.text = this.BindingPath;
};
}
}
}

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6b4f88e6c094449280ba5e38cb508287
timeCreated: 1656143219

@ -4,7 +4,32 @@ using UnityEngine.UIElements;
namespace TNode.Editor.Inspector{
public abstract class InspectorItem<T>:VisualElement,INodeDataBinding<T>{
public string BindingPath{ get; set; }
public NodeData BindingNodeData{ get; set; }
private NodeData _bindingNodeData;
private string _bindingFieldName;
protected event System.Action OnValueChanged;
public string BindingPath{
get => _bindingFieldName;
set{
_bindingFieldName = value;
if(_bindingFieldName!=null&&_bindingNodeData!=null){
OnValueChanged?.Invoke();
}
}
}
public NodeData BindingNodeData{
get => _bindingNodeData;
set{
_bindingNodeData = value;
if(_bindingFieldName!=null&&_bindingNodeData!=null){
OnValueChanged?.Invoke();
}
}
}
}
}

@ -1,8 +0,0 @@
namespace TNode.Editor.Inspector{
/// <summary>
/// Tiny Inspector item is a simple inspector inside a node view
/// </summary>
public class TinyInspector{
}
}

@ -0,0 +1,13 @@
using TNode.Models;
using UnityEngine.UIElements;
namespace TNode.Editor.Inspector{
/// <summary>
/// Tiny Inspector item is a simple inspector item inside a node view ,it monitor node data
///
/// </summary>
public class TinyInspectorItem<T>:VisualElement,INodeDataBinding<T>{
public string BindingPath{ get; set; }
public NodeData BindingNodeData{ get; set; }
}
}
Loading…
Cancel
Save