Ejemplo n.º 1
0
    public void OneTimeTearDown()
    {
        PrefabStageAutoSavingUtil.SetPrefabStageAutoSave(SessionState.GetBool(k_AutoSaveKey, PrefabStageAutoSavingUtil.GetPrefabStageAutoSave()));
        StageUtility.GoToMainStage();

        EditorSceneManager.SaveScene(SceneManager.GetActiveScene());

        if (string.IsNullOrEmpty(m_PreviousScenePath))
        {
            EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);
        }

#if !KEEP_ARTIFACTS_FOR_INSPECTION
        AssetDatabase.DeleteAsset(m_TempFolder);
#endif
    }
Ejemplo n.º 2
0
    public void OneTimeSetup()
    {
        AssetDatabase.DeleteAsset(m_TempFolder);

        var folderGUID = AssetDatabase.CreateFolder(k_ParentFolder, k_TempFolderName);

        m_TempFolder = AssetDatabase.GUIDToAssetPath(folderGUID);

        SessionState.SetBool(k_AutoSaveKey, PrefabStageAutoSavingUtil.GetPrefabStageAutoSave());
        PrefabStageAutoSavingUtil.SetPrefabStageAutoSave(false);
        StageUtility.GoToMainStage();

        m_PreviousScenePath = SceneManager.GetActiveScene().path;
        m_TempScenePath     = Path.Combine(m_TempFolder, "NavMeshSurfacePrefabVariantTestsScene.unity");
        var tempScene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);

        EditorSceneManager.SaveScene(tempScene, m_TempScenePath);
        EditorSceneManager.OpenScene(m_TempScenePath);
    }
    public IEnumerator NavMeshSurfacePrefab_WhenRebakedAndAutoSaved_InstanceHasTheNewNavMeshData()
    {
        var wasAutoSave = PrefabStageAutoSavingUtil.GetPrefabStageAutoSave();

        PrefabStageAutoSavingUtil.SetPrefabStageAutoSave(true);

        var prefab = AssetDatabase.LoadAssetAtPath <GameObject>(m_PrefabPath);

        AssetDatabase.OpenAsset(prefab);
        var prefabStage              = PrefabStageUtility.GetCurrentPrefabStage();
        var prefabSurface            = prefabStage.prefabContentsRoot.GetComponent <NavMeshSurface>();
        var initialPrefabNavMeshData = prefabSurface.navMeshData;

        yield return(BakeNavMeshAsync(() => prefabSurface, k_GrayArea));

        var rebuiltPrefabNavMeshData = prefabSurface.navMeshData;

        Assert.IsTrue(rebuiltPrefabNavMeshData != null, "NavMeshSurface must have NavMeshData after baking.");
        Assert.AreNotSame(initialPrefabNavMeshData, rebuiltPrefabNavMeshData);

        StageUtility.GoToMainStage();

        AssetDatabase.OpenAsset(prefab);
        var prefabStageReopened   = PrefabStageUtility.GetCurrentPrefabStage();
        var prefabSurfaceReopened = prefabStageReopened.prefabContentsRoot.GetComponent <NavMeshSurface>();
        var prefabNavMeshData     = prefabSurfaceReopened.navMeshData;

        Assert.AreNotSame(initialPrefabNavMeshData, prefabNavMeshData);
        Assert.AreSame(rebuiltPrefabNavMeshData, prefabNavMeshData);

        StageUtility.GoToMainStage();

        PrefabStageAutoSavingUtil.SetPrefabStageAutoSave(wasAutoSave);

        yield return(null);
    }