public void ChangeSceneCacheOnInstancedPrefab()
        {
            //Initial setup
            const string DEST_PREFAB_PATH = "Assets/TestSceneCache.prefab";
            const string ASSETS_FOLDER    = "Assets/TestSceneCacheAssets";

            bool prefabCreated = SceneCachePlayerEditorUtility.CreateSceneCachePlayerAndPrefab(
                Path.GetFullPath(MeshSyncTestEditorConstants.CUBE_TEST_DATA_PATH), DEST_PREFAB_PATH, ASSETS_FOLDER,
                out SceneCachePlayer player, out GameObject prefab
                );

            Assert.IsTrue(prefabCreated);

            //Check the instanced prefab
            Assert.IsNotNull(player);
            Assert.IsTrue(player.gameObject.IsPrefabInstance());


            //Change
            string newSceneCacheFilePath = Path.GetFullPath(MeshSyncTestEditorConstants.SPHERE_TEST_DATA_PATH);

            SceneCachePlayerEditorUtility.ChangeSceneCacheFile(player, newSceneCacheFilePath);
            string convertedPath = newSceneCacheFilePath.Replace('\\', '/');

            Assert.IsTrue(player.IsSceneCacheOpened());
            Assert.AreEqual(convertedPath, player.GetSceneCacheFilePath());

            //Cleanup
            Object.DestroyImmediate(player.gameObject);
            DeleteSceneCachePlayerPrefab(prefab);
        }
        public void CopySceneCacheToStreamingAssets()
        {
            //Initial setup
            const string DEST_PREFAB_PATH    = "Assets/TestSceneCache.prefab";
            const string ASSETS_FOLDER       = "Assets/TestSceneCacheAssets";
            string       destFolder          = Path.Combine(Application.streamingAssetsPath, "TestRunner");
            string       streamingAssetsPath = Path.Combine(destFolder, "Copied.sc");

            bool prefabCreated = SceneCachePlayerEditorUtility.CreateSceneCachePlayerAndPrefab(
                Path.GetFullPath(MeshSyncTestEditorConstants.CUBE_TEST_DATA_PATH), DEST_PREFAB_PATH, ASSETS_FOLDER,
                out SceneCachePlayer player, out GameObject prefab
                );

            Assert.IsTrue(prefabCreated);

            //Copy
            Directory.CreateDirectory(destFolder);
            File.Copy(player.GetSceneCacheFilePath(), streamingAssetsPath);
            Assert.IsTrue(File.Exists(streamingAssetsPath));
            AssetDatabase.Refresh();
            SceneCachePlayerEditorUtility.ChangeSceneCacheFile(player, streamingAssetsPath);
            string convertedPath = streamingAssetsPath.Replace('\\', '/');

            Assert.AreEqual(convertedPath, player.GetSceneCacheFilePath());

            //Cleanup
            Object.DestroyImmediate(player.gameObject);
            DeleteSceneCachePlayerPrefab(prefab);

            AssetDatabase.DeleteAsset(AssetUtility.NormalizeAssetPath(streamingAssetsPath));
            AssetDatabase.DeleteAsset(AssetUtility.NormalizeAssetPath(destFolder));
            AssetDatabase.Refresh();
        }
//----------------------------------------------------------------------------------------------------------------------

        private void CreateAndDeleteSceneCachePlayerPrefab(string sceneCachePath)
        {
            Assert.IsTrue(File.Exists(sceneCachePath));

            const string DEST_PREFAB_PATH = "Assets/TestSceneCache.prefab";
            const string ASSETS_FOLDER    = "Assets/TestSceneCacheAssets";

            bool prefabCreated = SceneCachePlayerEditorUtility.CreateSceneCachePlayerAndPrefab(
                Path.GetFullPath(sceneCachePath), DEST_PREFAB_PATH, ASSETS_FOLDER,
                out SceneCachePlayer player, out GameObject prefab
                );

            Assert.IsTrue(prefabCreated);

            //Check player
            Assert.IsNotNull(player);
            Assert.IsTrue(player.IsSceneCacheOpened());
            Assert.IsTrue(player.gameObject.IsPrefabInstance());

            //Check the prefab
            Assert.IsNotNull(prefab);
            string prefabPath = AssetDatabase.GetAssetPath(prefab);

            Assert.IsFalse(string.IsNullOrEmpty(prefabPath));
            Assert.AreEqual(DEST_PREFAB_PATH, prefabPath);


            DeleteSceneCachePlayerPrefab(prefab);
        }
예제 #4
0
        public void ChangeSceneCacheOnDirectPrefab()
        {
            //Initial setup
            const string DEST_PREFAB_PATH = "Assets/TestSceneCache.prefab";
            const string ASSETS_FOLDER    = "Assets/TestSceneCacheAssets";

            bool prefabCreated = SceneCachePlayerEditorUtility.CreateSceneCachePlayerAndPrefab(
                Path.GetFullPath(MeshSyncTestEditorConstants.CUBE_TEST_DATA_PATH), DEST_PREFAB_PATH, ASSETS_FOLDER,
                out SceneCachePlayer player, out GameObject prefab
                );

            Assert.IsTrue(prefabCreated);

            //Check the prefab
            Assert.IsFalse(prefab.IsPrefabInstance());
            Assert.IsTrue(prefab.IsPrefab());
            SceneCachePlayer prefabPlayer = prefab.GetComponent <SceneCachePlayer>();

            Assert.IsNotNull(prefabPlayer);
            Camera cam0   = prefabPlayer.GetComponentInChildren <Camera>();
            Light  light0 = prefabPlayer.GetComponentInChildren <Light>();

            //Change
            TestDataComponents comps = ChangeSceneCacheFileAndVerify(prefabPlayer,
                                                                     Path.GetFullPath(MeshSyncTestEditorConstants.SPHERE_TEST_DATA_PATH)
                                                                     );

            Assert.AreEqual(cam0, comps.cam);
            Assert.AreEqual(light0, comps.light);

            //Cleanup
            Object.DestroyImmediate(player.gameObject);
            DeleteSceneCachePlayerPrefab(prefab);
        }
예제 #5
0
        public void ChangeSceneCacheOnInstancedPrefab()
        {
            //Initial setup
            const string DEST_PREFAB_PATH = "Assets/TestSceneCache.prefab";
            const string ASSETS_FOLDER    = "Assets/TestSceneCacheAssets";

            bool prefabCreated = SceneCachePlayerEditorUtility.CreateSceneCachePlayerAndPrefab(
                Path.GetFullPath(MeshSyncTestEditorConstants.CUBE_TEST_DATA_PATH), DEST_PREFAB_PATH, ASSETS_FOLDER,
                out SceneCachePlayer player, out GameObject prefab
                );

            Assert.IsTrue(prefabCreated);

            //Check the instanced prefab
            Assert.IsNotNull(player);
            Assert.IsTrue(player.gameObject.IsPrefabInstance());
            Camera       cam0   = player.GetComponentInChildren <Camera>();
            Light        light0 = player.GetComponentInChildren <Light>();
            MeshRenderer mr0    = player.GetComponentInChildren <MeshRenderer>();

            Assert.IsNotNull(cam0);
            Assert.IsNotNull(light0);
            Assert.IsNotNull(mr0);

            GameObject capsule = GameObject.CreatePrimitive(PrimitiveType.Capsule);

            capsule.transform.SetParent(light0.transform);

            GameObject cylinder = GameObject.CreatePrimitive(PrimitiveType.Cylinder);

            cylinder.transform.SetParent(mr0.transform);

            //Change
            TestDataComponents comps = ChangeSceneCacheFileAndVerify(player, Path.GetFullPath(MeshSyncTestEditorConstants.SPHERE_TEST_DATA_PATH));

            Assert.IsTrue(player.IsSceneCacheOpened());
            Assert.AreEqual(cam0, comps.cam);
            Assert.AreEqual(light0, comps.light);
            Assert.AreNotEqual(mr0, comps.meshRenderer);

            Assert.IsTrue(capsule != null);
            Assert.IsFalse(capsule.IsPrefabInstance());
            Assert.IsTrue(cylinder == null); //should have been deleted when changing sc


            //Cleanup
            Object.DestroyImmediate(player.gameObject);
            DeleteSceneCachePlayerPrefab(prefab);
        }