예제 #1
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            var targetObject      = (AdaptiveActivator)serializedObject.targetObject;
            var propertiesChanged = false;

            if (targetObject.items.FirstOrDefault(i => i.gameObject == targetObject.gameObject) != null)
            {
                EGUI.Space(3);
                EGUI.MessageBox("Making object controlling itself might result in unexpected behavior.", MessageType.Warning);
                EGUI.Space(5);
            }

            EGUI.Horizontally(() =>
            {
                EGUI.Label("Managed Objects", FontStyle.Bold);
                EGUI.Space();
                EGUI.Label("Count:", 40);
                EGUI.Int(items.arraySize, 50, value => { items.arraySize = value; });
            });

            EGUI.Panel(10, () =>
            {
                EGUI.Horizontally(() =>
                {
                    EGUI.Label("Game Object", 200);
                    EGUI.Label("Active on Interfaces");
                });
                EGUI.Space(2);

                for (var i = 0; i < items.arraySize; i++)
                {
                    var item = targetObject.items[i];

                    EGUI.Horizontally(() =>
                    {
                        EGUI.Object(item.gameObject, false, 200, gameObjectNew =>
                        {
                            item.gameObject   = gameObjectNew;
                            propertiesChanged = true;
                        });

                        EGUI.Enum(item.interfaceType, EnumRenderMode.DropDown, value =>
                        {
                            item.interfaceType = (InterfaceType)value;
                            propertiesChanged  = true;
                        });

                        if (EGUI.Button("-", 30, 18, new RectOffset(1, 1, 0, 2)))
                        {
                            ArrayUtility.Remove(ref targetObject.items, item);
                        }
                    });
                    EGUI.Space(2);
                }

                EGUI.Horizontally(() =>
                {
                    EGUI.Space();
                    if (EGUI.Button("+", 30, 25, new RectOffset(1, 1, 0, 2)))
                    {
                        ArrayUtility.Add(ref targetObject.items, AdaptiveActivatorItem.New(null));
                    }
                });
            });

            serializedObject.ApplyModifiedProperties();

            if (propertiesChanged)
            {
                targetObject.SendMessage("OnValidate", null, SendMessageOptions.DontRequireReceiver);
                EditorUtility.SetDirty(targetObject);
            }
        }
예제 #2
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            var targetObject      = (AdaptiveMargin)serializedObject.targetObject;
            var propertiesChanged = false;

            EGUI.Horizontally(() =>
            {
                EGUI.Label("Managed Objects", FontStyle.Bold);
                EGUI.Space();
                EGUI.Label("Count:", 40);
                EGUI.Int(items.arraySize, 50, value => { items.arraySize = value; });
            });

            EGUI.Panel(10, () =>
            {
                EGUI.Horizontally(() =>
                {
                    EGUI.Label("Rect Transform");
                    EGUI.Label(" Interface", 75);
                    EGUI.Label("Left", 60);
                    EGUI.Label("Right", 60);
                    EGUI.Label("Top", 60);
                    EGUI.Label("Bottom", 60);
                    EGUI.Label(string.Empty, 30);
                });
                EGUI.Space(2);

                for (var i = 0; i < items.arraySize; i++)
                {
                    var item = targetObject.items[i];

                    EGUI.Horizontally(() =>
                    {
                        EGUI.Object(item.rectTransform, false, rectTransformNew =>
                        {
                            item.rectTransform = rectTransformNew;
                            propertiesChanged  = true;
                        });

                        EGUI.Vertically(() =>
                        {
                            for (var j = 0; j < item.items.Length; j++)
                            {
                                var subItem = item.items[j];

                                EGUI.Horizontally(() =>
                                {
                                    EGUI.Label(subItem.interfaceType.ToString(), 75);

                                    EGUI.Int(subItem.padding.left, 60, left =>
                                    {
                                        subItem.padding.left = left;
                                        propertiesChanged    = true;
                                    });

                                    EGUI.Int(subItem.padding.right, 60, right =>
                                    {
                                        subItem.padding.right = right;
                                        propertiesChanged     = true;
                                    });

                                    EGUI.Int(subItem.padding.top, 60, top =>
                                    {
                                        subItem.padding.top = top;
                                        propertiesChanged   = true;
                                    });

                                    EGUI.Int(subItem.padding.bottom, 60, bottom =>
                                    {
                                        subItem.padding.bottom = bottom;
                                        propertiesChanged      = true;
                                    });
                                });
                            }
                        });

                        if (EGUI.Button("-", 30, 18, new RectOffset(1, 1, 0, 2)))
                        {
                            ArrayUtility.Remove(ref targetObject.items, item);
                        }
                    });
                    EGUI.Space(2);
                }

                EGUI.Horizontally(() =>
                {
                    EGUI.Space();
                    if (EGUI.Button("+", 30, 25, new RectOffset(1, 1, 0, 2)))
                    {
                        ArrayUtility.Add(ref targetObject.items, AdaptiveMarginItem.New(null));
                    }
                });
            });

            serializedObject.ApplyModifiedProperties();

            if (propertiesChanged)
            {
                targetObject.SendMessage("OnValidate", null, SendMessageOptions.DontRequireReceiver);
                EditorUtility.SetDirty(targetObject);
            }
        }
예제 #3
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            var targetObject      = (AdaptiveScaler)serializedObject.targetObject;
            var propertiesChanged = false;

            EGUI.Horizontally(() =>
            {
                EGUI.Label("Managed Objects", FontStyle.Bold);
                EGUI.Space();
                EGUI.Label("Count:", 40);
                EGUI.Int(items.arraySize, 50, value => { items.arraySize = value; });
            });

            EGUI.Panel(10, () =>
            {
                EGUI.Horizontally(() =>
                {
                    EGUI.Label("Game Object", 200);
                    EGUI.Label("Scales");
                });
                EGUI.Space(2);

                for (var i = 0; i < items.arraySize; i++)
                {
                    var item = targetObject.items.ElementAtOrDefault(i);
                    if (item == null)
                    {
                        continue;
                    }

                    EGUI.Horizontally(() =>
                    {
                        EGUI.Object(item.gameObject, false, 200, gameObjectNew =>
                        {
                            item.gameObject   = gameObjectNew;
                            propertiesChanged = true;
                        });

                        EGUI.Vertically(() =>
                        {
                            for (var j = 0; j < item.items.Length; j++)
                            {
                                var subItem = item.items[j];

                                EGUI.Horizontally(() =>
                                {
                                    EGUI.Label(subItem.interfaceType.ToString(), 75);
                                    EGUI.Float(subItem.scale, scaleNew =>
                                    {
                                        subItem.scale     = scaleNew;
                                        propertiesChanged = true;
                                    });
                                });
                            }
                        });

                        if (EGUI.Button("-", 30, 18, new RectOffset(1, 1, 0, 2)))
                        {
                            ArrayUtility.Remove(ref targetObject.items, item);
                        }
                    });
                    EGUI.Space(2);
                }

                EGUI.Horizontally(() =>
                {
                    EGUI.Space();
                    if (EGUI.Button("+", 30, 25, new RectOffset(1, 1, 0, 2)))
                    {
                        ArrayUtility.Add(ref targetObject.items, AdaptiveScalerItem.New(null));
                    }
                });
            });

            serializedObject.ApplyModifiedProperties();

            if (propertiesChanged)
            {
                targetObject.SendMessage("OnValidate", null, SendMessageOptions.DontRequireReceiver);
                EditorUtility.SetDirty(targetObject);
            }
        }