Ejemplo n.º 1
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            if (Target.ParentComponent || Target.IsPrefab())
            {
                EditorGUILayout.PropertyField(_openType, new GUIContent("Open Type"));
                EditorGUILayout.PropertyField(_closeType, new GUIContent("Close Type"));
            }
            else
            {
                var toggle = EditorGUILayout.Toggle(new GUIContent("Auto Open"), Target.OpenType != UIOpenType.Manual);

                if (toggle)
                {
                    var openType = (UIOpenType)_openType.intValue;

                    if (openType == UIOpenType.Manual)
                    {
                        _openType.intValue = (int)UIOpenType.Auto;
                        var group = Target.GetComponent <UIComponentGroup>();
                        if (group)
                        {
                            UIComponentGroupEditor.SetGroupToAutoOpen(group);
                        }
                    }
                }
                else
                {
                    _openType.intValue = (int)UIOpenType.Manual;
                }

                EGUI.Readonly(() => {
                    EditorGUILayout.Toggle(new GUIContent("Manual Close"), true);

                    _closeType.intValue = (int)UIOpenType.Manual;
                });
            }

            EditorGUILayout.PropertyField(_overrideParent, new GUIContent("Override Parent"));

            GUILayout.Space(10);

            EditorGUILayout.PropertyField(_beforeOpenEvent);
            EditorGUILayout.PropertyField(_afterOpenEvent);

            EditorGUILayout.PropertyField(_beforeCloseEvent);
            EditorGUILayout.PropertyField(_afterCloseEvent);

            if (targets.Length > 1)
            {
                return;
            }

            GUILayout.Space(10);

            GUILayout.BeginHorizontal();

            GUILayout.FlexibleSpace();

            if (Application.isPlaying)
            {
                GUI.enabled = !Target.OpenConditions || Target.OpenConditions.CanOpen;
                var label = Target.IsOpened ? "Close" : "Open";
                if (GUILayout.Button(label, GUILayout.MaxWidth(180)))
                {
                    if (Target.IsOpened)
                    {
                        Target.Close();
                    }
                    else
                    {
                        Target.Open();
                    }
                }

                GUI.enabled = Target.HasAnimator;

                label = "Reset";
                if (GUILayout.Button(label, GUILayout.MaxWidth(180)))
                {
                    Animator.ResetToSavedPropertiesGraceful();
                    EventSystem.current.SetSelectedGameObject(Target.gameObject);
                }

                GUI.enabled = true;
            }
            else
            {
                if (EGUI.AddComponentsButton("Add Helper Component", Target.gameObject, Helpers))
                {
                    UpdateHelpers();
                }
            }

            GUILayout.FlexibleSpace();

            GUILayout.EndHorizontal();

            GUILayout.Space(10);

            serializedObject.ApplyModifiedProperties();
        }