summaryrefslogtreecommitdiff
path: root/Assets/Plugins/AdvancedInspector/Attributes/Enum.cs
blob: f9b8828183f74a9eb610522bc329718fa13b9ce1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;

namespace AdvancedInspector
{
    /// <summary>
    /// Controls how an enum is handled and displayed.
    /// </summary>
    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
    public class EnumAttribute : Attribute, IListAttribute
    {
        private bool masked = false;

        /// <summary>
        /// Turns a normal enum into a bitfield.
        /// Careful, your enum should be properly setup to accepted bitfield input.
        /// </summary>
        public bool Masked
        {
            get { return masked; }
            set { masked = value; }
        }

        private EnumDisplay display = EnumDisplay.DropDown;

        /// <summary>
        /// Forces an enum to be displayed differently.
        /// </summary>
        public EnumDisplay Display
        {
            get { return display; }
            set { display = value; }
        }

        private int maxItemsPerRow = 6;

        /// <summary>
        /// When display is using Button or Checkbox, this is the maximum number of button displayed per rows before creating a new one.
        /// </summary>
        public int MaxItemsPerRow
        {
            get { return maxItemsPerRow; }
            set { maxItemsPerRow = value; }
        }

        public EnumAttribute(bool masked) 
        {
            this.masked = masked;
        }

        public EnumAttribute(EnumDisplay display)
        {
            this.display = display;
        }

        public EnumAttribute(bool masked, EnumDisplay display)
        {
            this.masked = masked;
            this.display = display;
        }
    }

    public enum EnumDisplay
    { 
        DropDown,
        Button,
        Checkbox
    }
}