some early work on Reflection Inspector

This commit is contained in:
sinaioutlander committed 2020-11-09 21:38:25 +11:00
1 parent 5e761e2379
commit 6766a8cf4c
26 files changed
+1178 -929

No files matched your search

@@ -0,0 +1,119 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEngine;
using UnityExplorer.UI;
using UnityExplorer.UI.Shared;
using UnityExplorer.Helpers;
namespace UnityExplorer.Inspectors.Reflection
{
public class CacheObjectBase
{
public InteractiveValue IValue;
public virtual bool CanWrite => false;
public virtual bool HasParameters => false;
public virtual bool IsMember => false;
//public bool IsStaticClassSearchResult { get; set; }
// TODO
public virtual void InitValue(object value, Type valueType)
{
if (valueType == null && value == null)
{
return;
}
//ExplorerCore.Log("Initializing InteractiveValue of type " + valueType.FullName);
// InteractiveValue interactive;
//if (valueType == typeof(GameObject) || valueType == typeof(Transform))
//{
// interactive = new InteractiveGameObject();
//}
//else if (valueType == typeof(Texture2D))
//{
// interactive = new InteractiveTexture2D();
//}
//else if (valueType == typeof(Texture))
//{
// interactive = new InteractiveTexture();
//}
//else if (valueType == typeof(Sprite))
//{
// interactive = new InteractiveSprite();
//}
//else if (valueType.IsPrimitive || valueType == typeof(string))
//{
// interactive = new InteractivePrimitive();
//}
//else if (valueType.IsEnum)
//{
// if (valueType.GetCustomAttributes(typeof(FlagsAttribute), true) is object[] attributes && attributes.Length > 0)
// {
// interactive = new InteractiveFlags();
// }
// else
// {
// interactive = new InteractiveEnum();
// }
//}
//else if (valueType == typeof(Vector2) || valueType == typeof(Vector3) || valueType == typeof(Vector4))
//{
// interactive = new InteractiveVector();
//}
//else if (valueType == typeof(Quaternion))
//{
// interactive = new InteractiveQuaternion();
//}
//else if (valueType == typeof(Color))
//{
// interactive = new InteractiveColor();
//}
//else if (valueType == typeof(Rect))
//{
// interactive = new InteractiveRect();
//}
//// must check this before IsEnumerable
//else if (ReflectionHelpers.IsDictionary(valueType))
//{
// interactive = new InteractiveDictionary();
//}
//else if (ReflectionHelpers.IsEnumerable(valueType))
//{
// interactive = new InteractiveEnumerable();
//}
//else
//{
// interactive = new InteractiveValue();
//}
//interactive.Value = obj;
//interactive.ValueType = valueType;
//this.IValue = interactive;
//this.IValue.OwnerCacheObject = this;
//UpdateValue();
//this.IValue.Init();
}
public virtual void Draw(Rect window, float width)
{
// IValue.Draw(window, width);
}
public virtual void UpdateValue()
{
IValue.UpdateValue();
}
public virtual void SetValue() => throw new NotImplementedException();
}
}