Ejemplo n.º 1
0
        private void ShowSettings()
        {
            EditorGUILayout.BeginVertical(CustomStyles.thinBox);
            showSettings = CustomGUILayout.ToggleHeader(showSettings, "Editor settings");
            if (showSettings)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Filter by:", GUILayout.Width(65f));
                varFilter = (VarFilter)EditorGUILayout.EnumPopup(varFilter, GUILayout.MaxWidth(100f));
                if (varFilter == VarFilter.Type)
                {
                    typeFilter = (VariableType)EditorGUILayout.EnumPopup(typeFilter);
                }
                else
                {
                    _target.filter = EditorGUILayout.TextField(_target.filter);
                }
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndVertical();
        }
        /**
         * Shows the GUI.
         */
        public void ShowGUI()
        {
            string sceneName = MultiSceneChecker.EditActiveScene();

            if (sceneName != "")
            {
                EditorGUILayout.LabelField("Editing scene: '" + sceneName + "'", CustomStyles.subHeader);
                EditorGUILayout.Space();
            }

            EditorGUILayout.Space();
            GUILayout.BeginHorizontal();

            string label = (vars.Count > 0) ? ("Global (" + vars.Count + ")") : "Global";

            if (GUILayout.Toggle(showGlobalTab, label, "toolbarbutton"))
            {
                SetTab(0);
            }

            label = (KickStarter.localVariables != null && KickStarter.localVariables.localVars.Count > 0) ? ("Local (" + KickStarter.localVariables.localVars.Count + ")") : "Local";
            if (GUILayout.Toggle(showLocalTab, label, "toolbarbutton"))
            {
                SetTab(1);
            }

            GUILayout.EndHorizontal();
            EditorGUILayout.Space();

            EditorGUILayout.BeginVertical(CustomStyles.thinBox);
            showSettings = CustomGUILayout.ToggleHeader(showSettings, "Editor settings");
            if (showSettings)
            {
                updateRuntime = CustomGUILayout.Toggle("Show realtime values?", updateRuntime, "AC.KickStarter.variablesManager.updateRuntime");

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Filter by:", GUILayout.Width(65f));
                varFilter = (VarFilter)EditorGUILayout.EnumPopup(varFilter, GUILayout.MaxWidth(100f));
                filter    = EditorGUILayout.TextField(filter);
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndVertical();

            EditorGUILayout.Space();

            if (showGlobalTab)
            {
                varPresets = ShowPresets(varPresets, vars, VariableLocation.Global);

                if (Application.isPlaying && updateRuntime && KickStarter.runtimeVariables != null)
                {
                    ShowVarList(KickStarter.runtimeVariables.globalVars, VariableLocation.Global, false);
                }
                else
                {
                    ShowVarList(vars, VariableLocation.Global, true);

                    foreach (VarPreset varPreset in varPresets)
                    {
                        varPreset.UpdateCollection(vars);
                    }
                }
            }
            else if (showLocalTab)
            {
                if (KickStarter.localVariables != null)
                {
                    KickStarter.localVariables.varPresets = ShowPresets(KickStarter.localVariables.varPresets, KickStarter.localVariables.localVars, VariableLocation.Local);

                    if (Application.isPlaying && updateRuntime)
                    {
                        ShowVarList(KickStarter.localVariables.localVars, VariableLocation.Local, false);
                    }
                    else
                    {
                        ShowVarList(KickStarter.localVariables.localVars, VariableLocation.Local, true);
                    }
                }
                else
                {
                    EditorGUILayout.LabelField("Local variables", CustomStyles.subHeader);
                    EditorGUILayout.HelpBox("A GameEngine prefab must be present in the scene before Local variables can be defined", MessageType.Info);
                }
            }

            EditorGUILayout.Space();
            if (selectedVar != null && (!Application.isPlaying || !updateRuntime))
            {
                int i = selectedVar.id;
                if (vars.Contains(selectedVar))
                {
                    ShowVarGUI(VariableLocation.Global, varPresets, "AC.GlobalVariables.GetVariable (" + i + ")");
                }
                else if (KickStarter.localVariables != null && KickStarter.localVariables.localVars.Contains(selectedVar))
                {
                    ShowVarGUI(VariableLocation.Local, KickStarter.localVariables.varPresets, "AC.LocalVariables.GetVariable (" + i + ")");
                }
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(this);

                if (KickStarter.localVariables != null)
                {
                    UnityVersionHandler.CustomSetDirty(KickStarter.localVariables);
                }
            }
        }