Maze / Library /PackageCache /com.unity.test-framework@1.1.33 /UnityEditor.TestRunner /TestRunner /Messages /ExitPlayMode.cs
| using System; | |
| using System.Collections; | |
| using UnityEditor; | |
| namespace UnityEngine.TestTools | |
| { | |
| /// <summary> | |
| /// Implements <see cref="IEditModeTestYieldInstruction"/>. A new instance of the class is a yield instruction to exit Play Mode. | |
| /// </summary> | |
| public class ExitPlayMode : IEditModeTestYieldInstruction | |
| { | |
| /// <summary> | |
| /// Gets the value of ExpectDomainReload | |
| /// </summary> | |
| public bool ExpectDomainReload { get; } | |
| /// <summary> | |
| /// Gets the value of ExpectedPlaymodeState | |
| /// </summary> | |
| public bool ExpectedPlaymodeState { get; private set; } | |
| /// <summary> | |
| /// Sets ExpectDomainReload and ExpectedPlaymodeState to false. | |
| /// </summary> | |
| public ExitPlayMode() | |
| { | |
| ExpectDomainReload = false; | |
| ExpectedPlaymodeState = false; | |
| } | |
| /// <summary> | |
| /// Performs the multi-step instruction of exiting PlayMode. | |
| /// </summary> | |
| /// <returns>An IEnumerator with the async steps.</returns> | |
| /// <exception cref="Exception">An exception is thrown if the editor is not in PlayMode.</exception> | |
| public IEnumerator Perform() | |
| { | |
| if (!EditorApplication.isPlayingOrWillChangePlaymode) | |
| { | |
| throw new Exception("Editor is already in EditMode"); | |
| } | |
| EditorApplication.isPlaying = false; | |
| while (EditorApplication.isPlaying) | |
| { | |
| yield return null; | |
| } | |
| } | |
| } | |
| } | |