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); }
public void Destroy() { environment.Destroy(); probeManager.Destroy(); scene.Destroy(); computeDevice.Destroy(); PhononCore.iplDestroyContext(ref context); }
public void Export(string assetFileName, bool exportOBJ) { if (!ValidateGeometry()) { return; } assetFileName = Application.streamingAssetsPath + "/" + assetFileName; var objects = SceneExporter.GetDynamicGameObjectsForExport(this); Vector3[] vertices = null; Triangle[] triangles = null; int[] materialIndices = null; Material[] materials = null; SceneExporter.GetGeometryAndMaterialBuffers(objects, ref vertices, ref triangles, ref materialIndices, ref materials, true, exportOBJ); // TODO: Make the log callback function accessible from any class. var context = IntPtr.Zero; var status = PhononCore.iplCreateContext(null, IntPtr.Zero, IntPtr.Zero, ref context); if (status != Error.None) { throw new Exception(); } var computeDevice = IntPtr.Zero; var sceneType = SceneType.Phonon; var scene = IntPtr.Zero; status = PhononCore.iplCreateScene(context, computeDevice, sceneType, materials.Length, materials, null, null, null, null, IntPtr.Zero, ref scene); if (status != Error.None) { throw new Exception(); } var staticMesh = IntPtr.Zero; status = PhononCore.iplCreateStaticMesh(scene, vertices.Length, triangles.Length, vertices, triangles, materialIndices, ref staticMesh); if (status != Error.None) { throw new Exception(); } if (exportOBJ) { PhononCore.iplSaveSceneAsObj(scene, Common.ConvertString(assetFileName + ".obj")); } else { var size = PhononCore.iplSaveScene(scene, null); var data = new byte[size]; PhononCore.iplSaveScene(scene, data); File.WriteAllBytes(assetFileName, data); } PhononCore.iplDestroyStaticMesh(ref staticMesh); PhononCore.iplDestroyScene(ref scene); PhononCore.iplDestroyContext(ref context); var exportedFileName = (exportOBJ) ? assetFileName + ".obj" : assetFileName; Debug.Log(string.Format("Steam Audio Dynamic Object [{0}]: Exported to {1}.", name, exportedFileName)); }