예제 #1
0
        public void RemoveAllAdditiveScenes()
        {
            var additiveSceneMeshes = managerData.gameEngineState.additiveSceneMeshes;
            var additiveScenes      = managerData.gameEngineState.additiveScenes;
            var activeScene         = managerData.gameEngineState.Scene().GetScene();

            if (additiveSceneMeshes != null)
            {
                foreach (var additiveMesh in additiveSceneMeshes)
                {
                    IntPtr sceneMesh = additiveMesh.Value;
                    PhononCore.iplRemoveInstancedMesh(activeScene, sceneMesh);
                    PhononCore.iplDestroyInstancedMesh(ref sceneMesh);
                }

                additiveSceneMeshes.Clear();
            }

            if (additiveScenes != null)
            {
                foreach (var additiveScene in additiveScenes)
                {
                    IntPtr scene = additiveScene.Value;
                    PhononCore.iplDestroyScene(ref scene);
                }

                additiveScenes.Clear();
            }
        }
예제 #2
0
        public void Destroy()
        {
            if (editorAdditiveSceneMeshes != null)
            {
                for (int i = 0; i < editorAdditiveSceneMeshes.Count; ++i)
                {
                    IntPtr additiveMesh = editorAdditiveSceneMeshes[i];
                    PhononCore.iplRemoveInstancedMesh(scene.GetScene(), additiveMesh);
                    PhononCore.iplDestroyInstancedMesh(ref additiveMesh);
                }

                editorAdditiveSceneMeshes.Clear();
                editorAdditiveSceneMeshes = null;
            }

            if (editorAdditiveScenes != null)
            {
                for (int i = 0; i < editorAdditiveScenes.Count; ++i)
                {
                    IntPtr additiveScene = editorAdditiveScenes[i];
                    PhononCore.iplDestroyScene(ref additiveScene);
                }

                editorAdditiveScenes.Clear();
                editorAdditiveScenes = null;
            }

            environment.Destroy();
            probeManager.Destroy();
            scene.Destroy();
            computeDevice.Destroy();

            PhononCore.iplDestroyContext(ref context);
        }
예제 #3
0
        public void DestroyInstancedMesh(ref IntPtr instancedMesh)
        {
            if (instancedMesh == IntPtr.Zero)
            {
                return;
            }

            PhononCore.iplDestroyInstancedMesh(ref instancedMesh);
        }
예제 #4
0
        public void RemoveAdditiveScene(UnityEngine.SceneManagement.Scene unityScene)
        {
            var additiveSceneMeshes = managerData.gameEngineState.additiveSceneMeshes;
            var additiveScenes      = managerData.gameEngineState.additiveScenes;
            var activeScene         = managerData.gameEngineState.Scene().GetScene();

            if (additiveSceneMeshes != null && additiveSceneMeshes.ContainsKey(unityScene))
            {
                IntPtr sceneMesh = additiveSceneMeshes[unityScene];
                PhononCore.iplRemoveInstancedMesh(activeScene, sceneMesh);
                PhononCore.iplDestroyInstancedMesh(ref sceneMesh);
                additiveSceneMeshes.Remove(unityScene);
            }

            if (additiveScenes != null && additiveScenes.ContainsKey(unityScene))
            {
                IntPtr scene = additiveScenes[unityScene];
                PhononCore.iplDestroyScene(ref scene);
                additiveScenes.Remove(unityScene);
            }
        }