public static void Selection(string[] selectionArray, ref string[] currentArray, string itemName) { int stackIndex = 0; for (int i = 0; i < currentArray.Length; i++) { EditorGUILayout.BeginHorizontal(); GUI.enabled = false; if (selectionArray.Contains(currentArray[i])) { EditorGUILayout.TextField(currentArray[i]); } else { ErrorText($"<Removed {itemName}>"); } GUI.enabled = true; currentArray[stackIndex] = currentArray[i]; if (!ButtonDrawers.Minus()) { stackIndex++; } EditorGUILayout.EndHorizontal(); } if (stackIndex != currentArray.Length) { System.Array.Resize(ref currentArray, stackIndex); } SelectionPopup(selectionArray, ref currentArray, itemName); }
public static void Selection(List <string> selectionList, List <string> currentList, string itemName) { int indexToRemove = -1; for (int i = 0; i < currentList.Count; i++) { EditorGUILayout.BeginHorizontal(); GUI.enabled = false; if (selectionList.Contains(currentList[i])) { EditorGUILayout.TextField(currentList[i]); } else { ErrorText($"<Removed {itemName}>"); } GUI.enabled = true; if (ButtonDrawers.Minus()) { indexToRemove = i; } EditorGUILayout.EndHorizontal(); } if (indexToRemove > -1) { currentList.RemoveAt(indexToRemove); } SelectionPopup(selectionList, currentList, itemName); }
private void DrawBody(Rect position, IEditorDictionary dict) { foreach (KeyValuePair <object, object> entry in dict.GetEntries().ToList()) { position = position.ColumnNext(); float buttonWidth = ButtonDrawers.ButtonSize.x; float columnSize = (position.width - buttonWidth) / 2; Rect[] row = position.SplitRow(columnSize, columnSize, buttonWidth); object newKey = Drawers.Draw(row[0], dict.KeyType, entry.Key); object newValue = Drawers.Draw(row[1], dict.ValueType, entry.Value); if (newKey != entry.Key || newValue != entry.Value) { dict.RemoveEntry(entry.Key); dict.AddEntry(newKey, newValue); } if (ButtonDrawers.Minus(row[2])) { dict.RemoveEntry(newKey); } } }
private void DrawComponentsUnderContext() { EditorGUILayout.LabelField("Components under context", EditorStyles.boldLabel); foreach (Component component in SceneContext.componentsUnderContext.ToArray()) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(component.ToString()); if (ButtonDrawers.Minus()) { SceneContext.componentsUnderContext.Remove(component); SceneContext.objectContexts.Remove(component); } EditorGUILayout.EndHorizontal(); } }
private void DrawObjectContextFoldout(Object obj) { if (!_objContextFoldouts.ContainsKey(obj)) { _objContextFoldouts[obj] = true; } EditorGUILayout.BeginHorizontal(); _objContextFoldouts[obj] = EditorGUILayout.Foldout(_objContextFoldouts[obj], obj.ToString(), true); if (ButtonDrawers.Minus()) { SceneContext.objectContexts.Remove(obj); } EditorGUILayout.EndHorizontal(); }
public static void Dictionary <TKey, TValue>(Dictionary <TKey, TValue> dictionary, Func <TKey, TKey> keyGuiMethod, Func <TKey, TValue, TValue> valueGuiMethod) { foreach (KeyValuePair <TKey, TValue> entry in new Dictionary <TKey, TValue>(dictionary)) { EditorGUILayout.BeginHorizontal(); TKey newKey = keyGuiMethod(entry.Key); TValue newValue = valueGuiMethod(entry.Key, entry.Value); dictionary.Remove(entry.Key); if (!ButtonDrawers.Minus()) { dictionary[newKey] = newValue; } EditorGUILayout.EndHorizontal(); } }
public static void Array <T>(ref T[] array, Func <T, int, T> guiMethod) { int stackIndex = 0; for (int i = 0; i < array.Length; i++) { EditorGUILayout.BeginHorizontal(); array[stackIndex] = guiMethod(array[i], i); if (!ButtonDrawers.Minus()) { stackIndex++; } EditorGUILayout.EndHorizontal(); } if (stackIndex != array.Length) { System.Array.Resize(ref array, stackIndex); } }
public static void List <T>(List <T> list, Func <T, int, T> guiMethod) { int indexToRemove = -1; for (int i = 0; i < list.Count; i++) { EditorGUILayout.BeginHorizontal(); list[i] = guiMethod(list[i], i); if (ButtonDrawers.Minus()) { indexToRemove = i; } EditorGUILayout.EndHorizontal(); } if (indexToRemove > -1) { list.RemoveAt(indexToRemove); } }
private void DrawSceneContext() { _sceneContextDrawer ??= new WritableContextDrawer(SceneContext.extraContexts["Scene"], ContractWriters.RawData, "SceneContext"); EditorGUILayout.BeginHorizontal(); _sceneContextFoldout = EditorGUILayout.Foldout(_sceneContextFoldout, "Scene context"); if (ButtonDrawers.Minus()) { SceneContext.extraContexts.Remove("Scene"); _sceneContextDrawer = null; return; } EditorGUILayout.EndHorizontal(); if (_sceneContextFoldout) { _sceneContextDrawer.Draw(); } }