private static bool ToggleGameViewFullscreen(bool triggeredOnPlayStateChange)
        {
            EditorFullscreenSettings.FullscreenOption fullscreenOps;
            if (triggeredOnPlayStateChange)
            {
                fullscreenOps = EditorFullscreenSettings.settings.openFullscreenOnGameStart;
            }
            else
            {
                fullscreenOps = EditorFullscreenSettings.GetFullscreenOptionsForWindowType(EditorFullscreenState.gameViewType);
            }
            bool setFullscreen = !EditorFullscreenState.WindowTypeIsFullscreenAtOptionsSpecifiedPosition(EditorFullscreenState.gameViewType, fullscreenOps);

            EditorFullscreenState.RunOnLoad methodToRun;
            if (!triggeredOnPlayStateChange)
            {
                methodToRun = ToggleGameViewFullscreen;
            }
            else
            {
                methodToRun = ToggleGameViewFullscreenPlayStateWasChanged;
            }
            if (EditorFullscreenState.RunAfterInitialStateLoaded(methodToRun))
            {
                return(setFullscreen);
            }

            setFullscreen = EditorFullscreenState.ToggleFullscreenAtOptionsSpecifiedPosition(null, EditorFullscreenState.gameViewType, fullscreenOps, triggeredOnPlayStateChange);
            var focusedWindow = EditorWindow.focusedWindow;

            EditorMainWindow.Focus();
            if (focusedWindow != null)
            {
                focusedWindow.Focus();
            }

            if (!triggeredOnPlayStateChange)
            {
                bool isPlaying = EditorApplication.isPlaying || EditorApplication.isPlayingOrWillChangePlaymode;
                if (settings.startGameWhenEnteringFullscreen && !isPlaying && setFullscreen)
                {
                    //Enter play mode
                    EditorApplication.ExecuteMenuItem("Edit/Play");
                }
                else if (settings.stopGameWhenExitingFullscreen != EditorFullscreenSettings.StopGameWhenExitingFullscreen.Never && isPlaying && !setFullscreen)
                {
                    if (settings.stopGameWhenExitingFullscreen == EditorFullscreenSettings.StopGameWhenExitingFullscreen.WhenAnyFullscreenGameViewIsExited || !WindowTypeIsFullscreen(EditorFullscreenState.gameViewType))
                    {
                        //Exit play mode
                        EditorApplication.ExecuteMenuItem("Edit/Play");
                    }
                }
            }
            return(setFullscreen);
        }
Exemple #2
0
        private static void InitializeInputWin()
        {
            //Close existing input wins except for one
            var allInputWins = (EditorInput[])Resources.FindObjectsOfTypeAll(typeof(EditorInput));

            for (int i = 0; i < allInputWins.Length; i++)
            {
                if (i == allInputWins.Length - 1)
                {
                    //Keep the last one
                    inputWin = allInputWins[i];
                }
                else
                {
                    allInputWins[i].Close();
                }
            }

            if (inputWin == null)
            {
                //If couldn't find an existing one, create a hidden EditorWindow to receive an editor event
                Rect winPos = new Rect(-5000, -5000, 1, 1);
                inputWin = CreateInstance <EditorInput>();
                inputWin.SetWindowTitle("EditorInputWin", true);

                inputWin.minSize  = winPos.size;
                inputWin.maxSize  = winPos.size;
                inputWin.position = winPos;

                inputWin.ShowWithMode(EditorWindowExtensions.ShowMode.NoShadow);
                inputWin.SetSaveToLayout(false);
                EditorMainWindow.Focus();
            }

#if UNITY_STANDALONE_WIN && (UNITY_5_0 || UNITY_5_1)
            inputWin.DisableKeyboardCapture();
            inputWin.InitKeyboardCapture();
#endif
        }
Exemple #3
0
        private static bool ToggleGameViewFullscreen(bool triggeredOnGameStart, int optionID)
        {
            EditorWindow            focusedWindow = null;
            List <FullscreenOption> allGameWins   = null;

            EditorFullscreenState.WindowFullscreenState state = null;
            bool setFullscreen;

            if (triggeredOnGameStart)
            {
                allGameWins   = settings.AllGameWindows;
                setFullscreen = true;
            }
            else
            {
                setFullscreen = !EditorFullscreenState.WindowTypeIsFullscreenAtOptionsSpecifiedPosition(EditorFullscreenState.GameViewType, settings.GetFullscreenOption(optionID));
            }

            EditorFullscreenState.RunOnLoad methodToRun;
            if (!triggeredOnGameStart)
            {
                methodToRun = () => ToggleGameViewFullscreen(false, optionID);
            }
            else
            {
                methodToRun = () => ToggleGameViewFullscreen(true, optionID);
            }
            if (EditorFullscreenState.RunAfterInitialStateLoaded(methodToRun))
            {
                return(setFullscreen);
            }

            if (triggeredOnGameStart)
            {
                for (int i = 0; i < allGameWins.Count; i++)
                {
                    if (allGameWins[i].openOnGameStart)
                    {
                        if (!EditorFullscreenState.WindowTypeIsFullscreenAtOptionsSpecifiedPosition(EditorFullscreenState.GameViewType, allGameWins[i]))
                        {
                            EditorFullscreenState.ToggleFullscreenUsingOptions(null, EditorFullscreenState.GameViewType, allGameWins[i], triggeredOnGameStart, false);
                        }
                    }
                }
            }
            else
            {
                state         = EditorFullscreenState.ToggleFullscreenUsingOptions(null, EditorFullscreenState.GameViewType, settings.GetFullscreenOption(optionID), triggeredOnGameStart, false, out setFullscreen);
                focusedWindow = EditorWindow.focusedWindow;
            }

            EditorMainWindow.Focus();
            if (focusedWindow != null)
            {
                focusedWindow.Focus();
            }

            if (!triggeredOnGameStart)
            {
                bool isPlaying = EditorApplication.isPlaying || EditorApplication.isPlayingOrWillChangePlaymode;
                if (settings.startGameWhenEnteringFullscreen && !isPlaying && setFullscreen)
                {
                    //Enter play mode
                    EditorApplication.ExecuteMenuItem("Edit/Play");
                }
                else if (settings.stopGameWhenExitingFullscreen != EditorFullscreenSettings.StopGameWhenExitingFullscreen.Never && isPlaying && !setFullscreen)
                {
                    if (settings.stopGameWhenExitingFullscreen == EditorFullscreenSettings.StopGameWhenExitingFullscreen.WhenAnyFullscreenGameViewIsExited || !WindowTypeIsFullscreen(EditorFullscreenState.GameViewType, state))
                    {
                        //Exit play mode
                        EditorApplication.ExecuteMenuItem("Edit/Play");
                    }
                }
            }
            return(setFullscreen);
        }