diff options
Diffstat (limited to 'Assets/Plugins/AdvancedInspector/Attributes/Restrict.cs')
-rw-r--r-- | Assets/Plugins/AdvancedInspector/Attributes/Restrict.cs | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/Assets/Plugins/AdvancedInspector/Attributes/Restrict.cs b/Assets/Plugins/AdvancedInspector/Attributes/Restrict.cs deleted file mode 100644 index 43d48f76..00000000 --- a/Assets/Plugins/AdvancedInspector/Attributes/Restrict.cs +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; - -using UnityEngine; - -namespace AdvancedInspector -{ - /// <summary> - /// Restrict an object field to a list of object define by a delegate from the owner. - /// In essence, turn any field into a drop down list of choices. - /// Attributes cannot recieve a delegate, instead you pass the name of the method. - /// The method itself is resolved when creating the field to know which instance to invoke. - /// </summary> - [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] - public class RestrictAttribute : Attribute, IListAttribute, IRuntimeAttribute<IList> - { - public delegate IList RestrictDelegate(); - public delegate IList RestrictStaticDelegate(RestrictAttribute restrict, object instance, object value); - - private RestrictDisplay display = RestrictDisplay.DropDown; - - /// <summary> - /// Should this restricted field use the toolbox instead of a drop down popup. - /// </summary> - public RestrictDisplay Display - { - get { return display; } - set { display = value; } - } - - private int maxItemsPerRow = 6; - - /// <summary> - /// When display is using Button, limits the number of items per row. - /// </summary> - public int MaxItemsPerRow - { - get { return maxItemsPerRow; } - set { maxItemsPerRow = value; } - } - - #region IRuntime Implementation - private string methodName = ""; - - public string MethodName - { - get { return methodName; } - } - - public Type Template - { - get { return typeof(RestrictDelegate); } - } - - public Type TemplateStatic - { - get { return typeof(RestrictStaticDelegate); } - } - - private List<Delegate> delegates = new List<Delegate>(); - - public List<Delegate> Delegates - { - get { return delegates; } - set { delegates = value; } - } - - public IList 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 IList; - } - else - { - return delegates[index].DynamicInvoke() as IList; - } - } - catch (Exception e) - { - if (e is TargetInvocationException) - e = ((TargetInvocationException)e).InnerException; - - Debug.LogError(string.Format("Invoking a method to retrieve a Restrict attribute data failed. The exception was \"{0}\".", e.Message)); - return null; - } - } - #endregion - - public RestrictAttribute(string methodName) - : this(methodName, RestrictDisplay.DropDown) { } - - public RestrictAttribute(string methodName, RestrictDisplay display) - { - this.methodName = methodName; - this.display = display; - } - - public RestrictAttribute(Delegate method) - : this(method, RestrictDisplay.DropDown) { } - - public RestrictAttribute(Delegate method, RestrictDisplay display) - { - this.delegates.Add(method); - this.display = display; - } - } - - public enum RestrictDisplay - { - DropDown, - Toolbox, - Button - } -}
\ No newline at end of file |