public void EnableInstancedMesh(IntPtr instancedMesh) { if (instancedMesh == IntPtr.Zero) { return; } var scene = managerData.gameEngineState.Scene().GetScene(); PhononCore.iplAddInstancedMesh(scene, instancedMesh); }
public Error AddAdditiveScene(UnityEngine.SceneManagement.Scene unityScene, IntPtr activeScene, ComputeDevice computeDevice, SimulationSettings simulationSettings, IntPtr globalContext, out IntPtr addedScene, out IntPtr addedMesh) { addedScene = IntPtr.Zero; addedMesh = IntPtr.Zero; if (simulationSettings.sceneType != SceneType.Embree) { Debug.LogWarning("Additive scenes are only supported with Embree."); return(Error.Fail); } string fileName = SceneFileName(unityScene.name); if (!File.Exists(fileName)) { return(Error.Fail); } byte[] data = File.ReadAllBytes(fileName); var error = PhononCore.iplLoadScene(globalContext, simulationSettings.sceneType, data, data.Length, computeDevice.GetDevice(), null, ref addedScene); var transformMatrix = new Matrix4x4 { m00 = 1.0f, m01 = 0.0f, m02 = 0.0f, m03 = 0.0f, m10 = 0.0f, m11 = 1.0f, m12 = 0.0f, m13 = 0.0f, m20 = 0.0f, m21 = 0.0f, m22 = 1.0f, m23 = 0.0f, m30 = 0.0f, m31 = 0.0f, m32 = 0.0f, m33 = 1.0f }; error = PhononCore.iplCreateInstancedMesh(activeScene, addedScene, transformMatrix, ref addedMesh); if (error != Error.None) { return(error); } PhononCore.iplAddInstancedMesh(activeScene, addedMesh); return(error); }
public void AddAdditiveScene(UnityEngine.SceneManagement.Scene unityScene) { string steamAudioSceneFile = Scene.SceneFileName(unityScene.name); if (!File.Exists(steamAudioSceneFile)) { return; } var context = managerData.gameEngineState.Context(); var computeDevice = managerData.gameEngineState.ComputeDevice().GetDevice(); var simulationSettings = managerData.gameEngineState.SimulationSettings(); if (simulationSettings.sceneType != SceneType.Embree) { Debug.LogWarning("Additive scenes are only supported with Embree."); return; } var scene = IntPtr.Zero; byte[] data = File.ReadAllBytes(steamAudioSceneFile); var error = PhononCore.iplLoadScene(context, simulationSettings.sceneType, data, data.Length, computeDevice, null, ref scene); var additiveScenes = managerData.gameEngineState.additiveScenes; if (additiveScenes == null) { managerData.gameEngineState.additiveScenes = new Dictionary <UnityEngine.SceneManagement.Scene, IntPtr>(); } if (!managerData.gameEngineState.additiveScenes.ContainsKey(unityScene)) { managerData.gameEngineState.additiveScenes.Add(unityScene, scene); } var activeScene = managerData.gameEngineState.Scene().GetScene(); var additiveSceneMeshes = managerData.gameEngineState.additiveSceneMeshes; var sceneMesh = IntPtr.Zero; var transformMatrix = new Matrix4x4 { m00 = 1.0f, m01 = 0.0f, m02 = 0.0f, m03 = 0.0f, m10 = 0.0f, m11 = 1.0f, m12 = 0.0f, m13 = 0.0f, m20 = 0.0f, m21 = 0.0f, m22 = 1.0f, m23 = 0.0f, m30 = 0.0f, m31 = 0.0f, m32 = 0.0f, m33 = 1.0f }; error = PhononCore.iplCreateInstancedMesh(activeScene, scene, transformMatrix, ref sceneMesh); if (error != Error.None) { throw new Exception(); } PhononCore.iplAddInstancedMesh(activeScene, sceneMesh); if (additiveSceneMeshes == null) { managerData.gameEngineState.additiveSceneMeshes = new Dictionary <UnityEngine.SceneManagement.Scene, IntPtr>(); } if (!managerData.gameEngineState.additiveSceneMeshes.ContainsKey(unityScene)) { managerData.gameEngineState.additiveSceneMeshes.Add(unityScene, sceneMesh); } }