Пример #1
0
        private void DoEnterPlayModeSettings()
        {
            GUILayout.Space(10);
            GUILayout.Label(Content.enterPlayModeSettings, EditorStyles.boldLabel);

            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(m_EnterPlayModeOptionsEnabled, Content.enterPlayModeOptionsEnabled);
            if (EditorGUI.EndChangeCheck() && m_IsGlobalSettings)
            {
                EditorSettings.enterPlayModeOptionsEnabled = m_EnterPlayModeOptionsEnabled.boolValue;
            }

            EditorGUI.indentLevel++;
            using (new EditorGUI.DisabledScope(!m_EnterPlayModeOptionsEnabled.boolValue))
            {
                EnterPlayModeOptions options = (EnterPlayModeOptions)m_EnterPlayModeOptions.intValue;
                options = ToggleEnterPlayModeOptions(options, EnterPlayModeOptions.DisableDomainReload, Content.enterPlayModeOptionsEnableDomainReload);
                options = ToggleEnterPlayModeOptions(options, EnterPlayModeOptions.DisableSceneReload, Content.enterPlayModeOptionsEnableSceneReload);

                if (m_EnterPlayModeOptions.intValue != (int)options)
                {
                    m_EnterPlayModeOptions.intValue = (int)options;
                    if (m_IsGlobalSettings)
                    {
                        EditorSettings.enterPlayModeOptions = options;
                    }
                }
            }
            EditorGUI.indentLevel--;
        }
Пример #2
0
        private static void InitializeOnEnterPlayMode(EnterPlayModeOptions options)
        {
            LogMethod(type: Type.Structure);

            // _frameCount = 0;
            _lastLogFrameCount = 0;
        }
        public IEnumerator SubScene_NotOpenedForEdit_RemainsClosedInPlayMode([Values(EnterPlayModeOptions.DisableDomainReload | EnterPlayModeOptions.DisableSceneReload)] EnterPlayModeOptions enterPlayModeOptions)
        {
            // Set editor settings
            EditorSettings.enterPlayModeOptionsEnabled = enterPlayModeOptions != EnterPlayModeOptions.None;
            EditorSettings.enterPlayModeOptions        = enterPlayModeOptions;
            var expectingDomainReload = !enterPlayModeOptions.HasFlag(EnterPlayModeOptions.DisableDomainReload);

            DisableSetupAndTearDown();

            EditorSceneManager.OpenScene("Assets/HelloCube/3. SubScene/SubScene.unity", OpenSceneMode.Single);
            var subScene = Object.FindObjectOfType <SubScene>();

            Assert.NotNull(subScene);
            Assert.IsFalse(subScene.IsLoaded);
            Assert.AreEqual(1, SceneManager.sceneCount);

            // Enter play mode
            yield return(new EnterPlayMode(expectingDomainReload));

            // Validate that subscene is still loaded
            subScene = Object.FindObjectOfType <SubScene>();
            Assert.NotNull(subScene);
            Assert.IsFalse(subScene.IsLoaded);
            Assert.AreEqual(1, SceneManager.sceneCount);

            yield return(new ExitPlayMode());

            EnableSetupAndTearDown();
        }
        public IEnumerator RuntimeSetup()
        {
            savedState = EditorSettings.enterPlayModeOptionsEnabled;
            EditorSettings.enterPlayModeOptionsEnabled = true;
            savedOptions = EditorSettings.enterPlayModeOptions;
            EditorSettings.enterPlayModeOptions   = EnterPlayModeOptions.DisableDomainReload;
            Addressables.reinitializeAddressables = true;

            Assert.False(Application.isPlaying);
            yield return(new EnterPlayMode(false));
        }
Пример #5
0
    public void BaseOneTimeSetUp()
    {
        if (m_IsSetupAndTearDownDisabled)
        {
            return;
        }

        if (!m_IsInitialized)
        {
            m_OldEnterPlayModeOptionsEnabled = EditorSettings.enterPlayModeOptionsEnabled;
            m_OldEnterPlayModeOptions        = EditorSettings.enterPlayModeOptions;
            m_IsInitialized = true;
        }
    }
        private EnterPlayModeOptions ToggleEnterPlayModeOptions(EnterPlayModeOptions options, EnterPlayModeOptions flag, GUIContent content)
        {
            bool isSet = ((options & flag) == flag);
            isSet = EditorGUILayout.Toggle(content, !isSet);

            if (isSet)
            {
                options &= ~flag;
            }
            else
            {
                options |= flag;
            }

            return options;
        }
        private void DoEnterPlayModeSettings()
        {
            GUILayout.Space(10);
            GUILayout.Label(Content.enterPlayModeSettings, EditorStyles.boldLabel);

            EditorSettings.enterPlayModeOptionsEnabled = EditorGUILayout.Toggle(Content.enterPlayModeOptionsEnabled, EditorSettings.enterPlayModeOptionsEnabled);

            EditorGUI.indentLevel++;
            using (new EditorGUI.DisabledScope(!EditorSettings.enterPlayModeOptionsEnabled))
            {
                EnterPlayModeOptions options = EditorSettings.enterPlayModeOptions;
                options = ToggleEnterPlayModeOptions(options, EnterPlayModeOptions.DisableDomainReload, Content.enterPlayModeOptionsEnableDomainReload);
                options = ToggleEnterPlayModeOptions(options, EnterPlayModeOptions.DisableSceneReload, Content.enterPlayModeOptionsEnableSceneReload);
                EditorSettings.enterPlayModeOptions = options;
            }
            EditorGUI.indentLevel--;
        }
Пример #8
0
    protected override void OnDrawInToolbar()
    {
#if UNITY_2019_3_OR_NEWER
        if (EditorSettings.enterPlayModeOptionsEnabled)
        {
            EnterPlayModeOptions option = EditorSettings.enterPlayModeOptions;
            selectedEnterPlayMode = (int)option + 1;
        }

        selectedEnterPlayMode = EditorGUILayout.Popup(selectedEnterPlayMode, enterPlayModeOption, GUILayout.Width(WidthInToolbar));

        if (GUI.changed && 0 <= selectedEnterPlayMode && selectedEnterPlayMode < enterPlayModeOption.Length)
        {
            EditorSettings.enterPlayModeOptionsEnabled = selectedEnterPlayMode != 0;
            EditorSettings.enterPlayModeOptions        = (EnterPlayModeOptions)(selectedEnterPlayMode - 1);
        }
#endif
    }
        public void SetUp()
        {
            if (m_Assets.TempAssetDir != null)
            {
                // this setup code is run again when we switch to playmode
                return;
            }

            // Create a temporary folder for test assets
            m_Assets.SetUp();
            m_DefaultWorld.Setup();
            m_SubSceneTest.Setup();
            m_WasLiveLinkEnabled = SubSceneInspectorUtility.LiveLinkEnabledInEditMode;
            SubSceneInspectorUtility.LiveLinkEnabledInEditMode = true;
            m_EnterPlayModeOptions      = EditorSettings.enterPlayModeOptions;
            m_UseEnterPlayerModeOptions = EditorSettings.enterPlayModeOptionsEnabled;

            m_TestTexture  = AssetDatabase.LoadAssetAtPath <Texture>(AssetPath("TestTexture.asset"));
            m_TestMaterial = AssetDatabase.LoadAssetAtPath <Material>(AssetPath("TestMaterial.mat"));
        }
        public void SetUp()
        {
            if (m_Assets.TempAssetDir != null)
            {
                // this setup code is run again when we switch to playmode
                return;
            }

            // Create a temporary folder for test assets
            m_Assets.SetUp();
            m_DefaultWorld.Setup();
            m_WasLiveLinkEnabled        = SubSceneInspectorUtility.LiveLinkEnabledInEditMode;
            m_EnterPlayModeOptions      = EditorSettings.enterPlayModeOptions;
            m_UseEnterPlayerModeOptions = EditorSettings.enterPlayModeOptionsEnabled;
            SubSceneInspectorUtility.LiveLinkEnabledInEditMode = true;

            AssetDatabase.CreateAsset(m_TestTexture  = new Texture2D(64, 64), m_Assets.GetNextPath(".asset"));
            AssetDatabase.CreateAsset(m_TestMaterial = new Material(Shader.Find("Standard")), m_Assets.GetNextPath(".mat"));
            m_TestMaterial.mainTexture = m_TestTexture;
        }
Пример #11
0
        public void SetUp()
        {
            if (m_TempAssetDir != null)
            {
                // this setup code is run again when we switch to playmode
                return;
            }

            // Create a temporary folder for test assets
            string path;

            do
            {
                path = Path.GetRandomFileName();
            } while (AssetDatabase.IsValidFolder(Path.Combine("Assets", path)));

            var guid = AssetDatabase.CreateFolder("Assets", path);

            m_TempAssetDir              = AssetDatabase.GUIDToAssetPath(guid);
            m_WasLiveLinkEnabled        = SubSceneInspectorUtility.LiveLinkEnabledInEditMode;
            m_EnterPlayModeOptions      = EditorSettings.enterPlayModeOptions;
            m_UseEnterPlayerModeOptions = EditorSettings.enterPlayModeOptionsEnabled;
            SubSceneInspectorUtility.LiveLinkEnabledInEditMode = true;
        }
Пример #12
0
 private static void InitializeOnEnterPlayMode(EnterPlayModeOptions options)
 {
     _minimaps = new Dictionary <int, MinimapBase>();
 }
        public IEnumerator DefaultBootstrappedWorld_OnSecondEnterPlayMode_ProducesOneWorld([ValueSource(nameof(TestEnterPlayModeOptions))] EnterPlayModeOptions enterPlayModeOptions)
        {
            // Set editor settings
            EditorSettings.enterPlayModeOptionsEnabled = enterPlayModeOptions != EnterPlayModeOptions.None;
            EditorSettings.enterPlayModeOptions        = enterPlayModeOptions;
            m_ExpectingDomainReload = !enterPlayModeOptions.HasFlag(EnterPlayModeOptions.DisableDomainReload);

            DisableSetupAndTearDown();

            // Make sure we have an Editor world initialized
            AddVerificationScript();
            Assert.NotNull(World.DefaultGameObjectInjectionWorld);

            // Enter play mode
            Debug.Log("Before EnterPlayMode");
            yield return(new EnterPlayMode(m_ExpectingDomainReload));

            m_DefaultWorldsCount    = GetDefaultWorldsCount();
            m_EditorWorldsCount     = GetEditorWorldsCount();
            m_FirstEnterWorldsCount = World.All.Count;
            Debug.Log("Before ExitPlayMode");
            yield return(new ExitPlayMode());

            // Validate Game World in Play Mode
            Assert.AreEqual(1, m_DefaultWorldsCount);
            // Validate no Editor World in Play Mode
            Assert.AreEqual(0, m_EditorWorldsCount);

            Debug.Log("Before EnterPlayMode");
            yield return(new EnterPlayMode(m_ExpectingDomainReload));

            m_DefaultWorldsCount     = GetDefaultWorldsCount();
            m_EditorWorldsCount      = GetEditorWorldsCount();
            m_SecondEnterWorldsCount = World.All.Count;
            Debug.Log("Before ExitPlayMode");
            yield return(new ExitPlayMode());

            EnableSetupAndTearDown();

            Assert.AreEqual(1, m_DefaultWorldsCount);
            Assert.AreEqual(0, m_EditorWorldsCount);
            Assert.AreEqual(m_FirstEnterWorldsCount, m_SecondEnterWorldsCount);
        }
Пример #14
0
 private static void InitializeOnEnterPlayMode(EnterPlayModeOptions options)
 {
     ManagedLog.LogMethod(type: ManagedLog.Type.Structure);
     StateMachines.Clear();
 }