Example #1
0
 ///<summary>
 /// Array GUI drawer utility (Will not modify the source array)
 /// </summary>
 public static T[] ArrayFieldGUI <T>(T[] arr, ArrayFieldOption option = ArrayFieldOption.Default)
 {
     return(ArrayFieldGUI(arr.ToList(), option).ToArray());
 }
Example #2
0
        // Build-Compatible GUI Utilities:

        /// <summary>
        /// List GUI drawer utility (Will modify the source list)
        /// </summary>
        public static List <T> ArrayFieldGUI <T>(List <T> list, ArrayFieldOption option = ArrayFieldOption.Default)
        {
            var _listCopy = new List <T>(list);

            U.GUIStyle _style = new U.GUIStyle("Box");

            if (!option.ContainsFlag(ArrayFieldOption.NoBoundries))
            {
                Gl.BeginVertical(_style, Gl.ExpandWidth(true));
            }

            var _clearButtonContent  = new U.GUIContent("Clr", "Clear Field");
            var _removeButtonContent = new U.GUIContent("X", "Remove Element");

            for (int i = 0; i < _listCopy.Count; i++)
            {
                if (!option.ContainsFlag(ArrayFieldOption.NoBoundries))
                {
                    Gl.BeginHorizontal(_style, Gl.ExpandWidth(true));
                }

                if (!option.ContainsFlag(ArrayFieldOption.NoIndex))
                {
                    Gl.Label(i.ToString(), Gl.ExpandWidth(false));
                }

                Gl.BeginVertical();
                {
                    _listCopy[i] = DrawPropertyField(_listCopy[i]);
                }
                Gl.EndVertical();

                if (!option.ContainsFlag(ArrayFieldOption.NoClearButton))
                {
                    if (Gl.Button(_clearButtonContent, Gl.ExpandWidth(false)))
                    {
                        _listCopy[i] = default(T);
                    }
                }

                if (!option.ContainsFlag(ArrayFieldOption.FixedSize))
                {
                    if (Gl.Button(_removeButtonContent, Gl.ExpandWidth(false)))
                    {
                        _listCopy.Remove(_listCopy[i]);
                        i--;
                    }
                }

                if (!option.ContainsFlag(ArrayFieldOption.NoBoundries))
                {
                    Gl.EndHorizontal();
                }
            }

            if (!option.ContainsFlag(ArrayFieldOption.FixedSize))
            {
                if (Gl.Button("Add Element"))
                {
                    _listCopy.Add(default(T));
                }
            }

            if (!option.ContainsFlag(ArrayFieldOption.NoBoundries))
            {
                Gl.EndVertical();
            }

            return(_listCopy);
        }