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);
        }
Esempio n. 2
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);
        }
        private static void PlayModeStateChanged()
        {
            bool startingPlay = !EditorApplication.isPlaying && EditorApplication.isPlayingOrWillChangePlaymode;
            bool stoppedPlay  = !EditorApplication.isPlaying && !EditorApplication.isPlayingOrWillChangePlaymode;

            if (startingPlay)
            {
                if (settings.openFullscreenOnGameStart.openAtPosition != EditorFullscreenSettings.OpenFullscreenAtPosition.None && !EditorFullscreenState.WindowTypeIsFullscreenAtOptionsSpecifiedPosition(EditorFullscreenState.gameViewType, settings.openFullscreenOnGameStart))
                {
                    ToggleGameViewFullscreen(true);
                }
            }
            else if (stoppedPlay)
            {
                if (settings.closeFullscreenOnGameStop == EditorFullscreenSettings.CloseFullscreenOnGameStop.AllFullscreenGameWindows)
                {
                    ExitGameFullscreens(false);
                }
                else if (settings.closeFullscreenOnGameStop == EditorFullscreenSettings.CloseFullscreenOnGameStop.FullscreensCreatedAtGameStart)
                {
                    ExitGameFullscreens(true);
                }
            }
        }
 /// <summary>
 /// Returns true if an editor window type is fullscreen on the screen specified by the settings for opening that window type.
 /// </summary>
 public static bool WindowTypeIsFullscreenAtOptionsSpecifiedPosition(Type windowType)
 {
     return(EditorFullscreenState.WindowTypeIsFullscreenAtOptionsSpecifiedPosition(windowType));
 }