// Creates acoustic meshes from terrain objects and builds a mapping from GUIDs of the terrain // data to the generated acoustic meshes. private void BuildTerrainData(Terrain[] activeTerrains, string[] guidsForTerrains, Shader surfaceMaterialShader) { terrainAcousticMeshDataFromGuid.Clear(); for (int terrainIndex = 0; terrainIndex < activeTerrains.Length; ++terrainIndex) { var terrain = activeTerrains[terrainIndex]; string guid = guidsForTerrains[terrainIndex]; // Generate an acoustic mesh for the terrain object. var acousticMesh = ResonanceAudioAcousticMesh.GenerateFromTerrain(terrain, surfaceMaterialShader); // If this guid is not mapped to a surface material yet, map it to the default surface // material. if (!surfaceMaterialFromGuid.ContainsKey(guid)) { surfaceMaterialFromGuid.Add(guid, defaultSurfaceMaterial); } if (!terrainAcousticMeshDataFromGuid.ContainsKey(guid)) { terrainAcousticMeshDataFromGuid[guid] = new TerrainAcousticMeshData(); } TerrainAcousticMeshData data = terrainAcousticMeshDataFromGuid[guid]; data.terrainData = terrain.terrainData; data.acousticMeshes.Add(acousticMesh); } }
// Applies surface material to (the acoustic meshes) of terrains whose terrain data are // identified by |guid|. private void ApplySurfaceMaterialToTerrains( ResonanceAudioRoomManager.SurfaceMaterial surfaceMaterial, string guid) { TerrainAcousticMeshData acousticMeshesData = terrainAcousticMeshDataFromGuid[guid]; var acousticMeshes = acousticMeshesData.acousticMeshes.ToList(); for (int i = 0; i < acousticMeshes.Count; ++i) { acousticMeshes[i].SetSurfaceMaterialToAllSubMeshes(surfaceMaterial); } }
// Creates acoustic meshes from terrain objects and builds a mapping from GUIDs of the terrain // data to the generated acoustic meshes. private void BuildTerrainData(Terrain[] activeTerrains, string[] guidsForTerrains, Shader surfaceMaterialShader) { terrainAcousticMeshDataFromGuid.Clear(); for (int terrainIndex = 0; terrainIndex < activeTerrains.Length; ++terrainIndex) { var terrain = activeTerrains[terrainIndex]; string guid = guidsForTerrains[terrainIndex]; // Generate an acoustic mesh for the terrain object. var acousticMesh = ResonanceAudioAcousticMesh.GenerateFromTerrain(terrain, surfaceMaterialShader); materialMap.AddDefaultMaterialIfGuidUnmapped(guid); if (!terrainAcousticMeshDataFromGuid.ContainsKey(guid)) { terrainAcousticMeshDataFromGuid[guid] = new TerrainAcousticMeshData(); } TerrainAcousticMeshData data = terrainAcousticMeshDataFromGuid[guid]; data.acousticMeshes.Add(acousticMesh); } }