Example #1
0
        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);
        }
Example #2
0
        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);
                }
            }
        }
Example #4
0
        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();
            }
        }
Example #5
0
        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();
        }
Example #6
0
        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();
            }
        }
Example #7
0
        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);
            }
        }
Example #8
0
        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);
            }
        }
Example #9
0
        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();
            }
        }