diff options
author | chai <chaifix@163.com> | 2020-10-15 19:05:22 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-10-15 19:05:22 +0800 |
commit | f049177e20a276049c61edbad631c1b2bbdd5706 (patch) | |
tree | 7d1a1cd9b690a5d9a8b9a65554a191d6ec769601 /Assets/Plugins/AdvancedInspector/Attributes/RuntimeResolve.cs | |
parent | 6990a0d1fbdcbbf404f40713363ac1a148c8840a (diff) |
-advanced inspector
+odin
Diffstat (limited to 'Assets/Plugins/AdvancedInspector/Attributes/RuntimeResolve.cs')
-rw-r--r-- | Assets/Plugins/AdvancedInspector/Attributes/RuntimeResolve.cs | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/Assets/Plugins/AdvancedInspector/Attributes/RuntimeResolve.cs b/Assets/Plugins/AdvancedInspector/Attributes/RuntimeResolve.cs deleted file mode 100644 index 16a56fc4..00000000 --- a/Assets/Plugins/AdvancedInspector/Attributes/RuntimeResolve.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; - -using UnityEngine; - -namespace AdvancedInspector -{ - /// <summary> - /// Forces a field to display a FieldEditor related to its current runtime type instead of the field type. - /// The Runtime version supply the type itself. Useful when the field value is null or for an unknown object picker. - /// </summary> - [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] - public class RuntimeResolveAttribute : Attribute, IListAttribute, IRuntimeAttribute<Type> - { - public delegate Type RuntimeResolveDelegate(); - public delegate Type RuntimeResolveStaticDelegate(RuntimeResolveAttribute runtimeResolve, object instance, object value); - - #region IRuntime Implementation - private string methodName = ""; - - public string MethodName - { - get { return methodName; } - } - - public Type Template - { - get { return typeof(RuntimeResolveDelegate); } - } - - public Type TemplateStatic - { - get { return typeof(RuntimeResolveStaticDelegate); } - } - - private List<Delegate> delegates = new List<Delegate>(); - - public List<Delegate> Delegates - { - get { return delegates; } - set { delegates = value; } - } - - public Type Invoke(int index, object instance, object value) - { - if (delegates.Count == 0 || index >= delegates.Count) - return null; - - try - { - if (delegates[index].Target == null) - { - return delegates[index].DynamicInvoke(this, instance, value) as Type; - } - else - { - return delegates[index].DynamicInvoke() as Type; - } - } - catch (Exception e) - { - if (e is TargetInvocationException) - e = ((TargetInvocationException)e).InnerException; - - Debug.LogError(string.Format("Invoking a method from a RuntimeResolve attribute failed. The exception was \"{0}\".", e.Message)); - return null; - } - } - #endregion - - public RuntimeResolveAttribute() { } - - public RuntimeResolveAttribute(string methodName) - { - this.methodName = methodName; - } - - public RuntimeResolveAttribute(Delegate method) - { - this.delegates.Add(method); - } - } -}
\ No newline at end of file |