///<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()); }
// 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); }