예제 #1
0
        void DoMainWindow()
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("Use ModTools console");
            var newUseConsole = GUILayout.Toggle(useModToolsConsole, "");

            GUILayout.EndHorizontal();

            if (newUseConsole != useModToolsConsole)
            {
                useModToolsConsole = newUseConsole;

                if (useModToolsConsole)
                {
                    console = gameObject.AddComponent <Console>();
                }
                else
                {
                    config.hookUnityLogging = false;
                    UnityLoggingHook.DisableHook();
                    Destroy(console);
                    console = null;
                }

                SaveConfig();
            }

            if (!config.useModToolsConsole)
            {
                GUI.enabled = false;
            }

            GUILayout.BeginHorizontal();
            GUILayout.Label("Hook Unity's logging");
            var newHookLogging = GUILayout.Toggle(config.hookUnityLogging, "");

            GUILayout.EndHorizontal();

            if (newHookLogging != config.hookUnityLogging)
            {
                config.hookUnityLogging = newHookLogging;
                SaveConfig();

                if (config.hookUnityLogging)
                {
                    UnityLoggingHook.EnableHook();
                }
                else
                {
                    UnityLoggingHook.DisableHook();
                }
            }

            GUI.enabled = true;

            GUILayout.BeginHorizontal();
            GUILayout.Label("Log exceptions to console");
            logExceptionsToConsole = GUILayout.Toggle(logExceptionsToConsole, "");
            GUILayout.EndHorizontal();
            if (logExceptionsToConsole != config.logExceptionsToConsole)
            {
                SaveConfig();
            }

            if ((updateMode == SimulationManager.UpdateMode.NewGame || updateMode == SimulationManager.UpdateMode.LoadGame))
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("Game panel extensions");
                var newExtendGamePanels = GUILayout.Toggle(extendGamePanels, "");
                GUILayout.EndHorizontal();

                if (newExtendGamePanels != extendGamePanels)
                {
                    extendGamePanels = newExtendGamePanels;
                    SaveConfig();

                    if (extendGamePanels)
                    {
                        gameObject.AddComponent <GamePanelExtender>();
                    }
                    else
                    {
                        Destroy(gameObject.GetComponent <GamePanelExtender>());
                    }
                }
            }

            GUILayout.BeginHorizontal();
            GUILayout.Label("Improved Workshop integration");
            var improvedWorkshopIntegration = GUILayout.Toggle(config.improvedWorkshopIntegration, "");

            GUILayout.EndHorizontal();
            if (improvedWorkshopIntegration != config.improvedWorkshopIntegration)
            {
                config.improvedWorkshopIntegration = improvedWorkshopIntegration;
                if (config.improvedWorkshopIntegration && updateMode == SimulationManager.UpdateMode.Undefined)
                {
                    ImprovedWorkshopIntegration.Bootstrap();
                    ImprovedWorkshopIntegration.RefreshPlugins();
                }
                else if (updateMode == SimulationManager.UpdateMode.Undefined)
                {
                    ImprovedWorkshopIntegration.Revert();
                }

                SaveConfig();
            }

            if (GUILayout.Button("Debug console (F7)"))
            {
                if (console != null)
                {
                    console.visible = true;
                }
                else
                {
                    var debugOutputPanel = GameObject.Find("(Library) DebugOutputPanel").GetComponent <DebugOutputPanel>();
                    debugOutputPanel.enabled = true;
                    debugOutputPanel.GetComponent <UIPanel>().isVisible = true;
                }
            }

            if (GUILayout.Button("Watches (Ctrl+W)"))
            {
                watches.visible = !watches.visible;
            }

            if (GUILayout.Button("Scene explorer (Ctrl+E)"))
            {
                sceneExplorer.visible = !sceneExplorer.visible;
                if (sceneExplorer.visible)
                {
                    sceneExplorer.Refresh();
                }
            }

            if (GUILayout.Button("Throw exception!"))
            {
                throw new Exception("Hello world!");
            }
        }
예제 #2
0
        public void Initialize(SimulationManager.UpdateMode _updateMode)
        {
            updateMode = _updateMode;

            if (!loggingInitialized)
            {
                Application.logMessageReceived += (condition, trace, type) =>
                {
                    if (!logExceptionsToConsole)
                    {
                        return;
                    }

                    if (Instance.console != null)
                    {
                        Instance.console.AddMessage(String.Format("{0} ({1})", condition, trace), type, true);
                        return;
                    }

                    if (type == LogType.Error || type == LogType.Exception || type == LogType.Assert)
                    {
                        Log.Error(condition);
                    }
                    else if (type == LogType.Warning)
                    {
                        Log.Warning(condition);
                    }
                    else
                    {
                        Log.Message(condition);
                    }
                };

                loggingInitialized = true;
            }

            sceneExplorer = gameObject.AddComponent <SceneExplorer>();
            watches       = gameObject.AddComponent <Watches>();
            colorPicker   = gameObject.AddComponent <ColorPicker>();

            sceneExplorerColorConfig = gameObject.AddComponent <SceneExplorerColorConfig>();

            LoadConfig();

            if (extendGamePanels && (updateMode == SimulationManager.UpdateMode.NewGame || updateMode == SimulationManager.UpdateMode.LoadGame))
            {
                panelExtender = gameObject.AddComponent <GamePanelExtender>();
            }

            if (useModToolsConsole)
            {
                console = gameObject.AddComponent <Console>();
            }

            if (config.hookUnityLogging)
            {
                UnityLoggingHook.EnableHook();
            }

            if (updateMode == SimulationManager.UpdateMode.Undefined && config.improvedWorkshopIntegration)
            {
                ImprovedWorkshopIntegration.Bootstrap();
            }
        }