// #if ! (UNITY_DASHBOARD_WIDGET || UNITY_WEBPLAYER || UNITY_WII || UNITY_WIIU || UNITY_NACL || UNITY_FLASH || UNITY_BLACKBERRY) // Disable under unsupported platforms. // ////////////////////////////////////////////////////////////////////// // // // // Copyright (c) 2019 Audiokinetic Inc. / All Rights Reserved // // // ////////////////////////////////////////////////////////////////////// // // /// @brief This manager tracks AkRoomPortals and the rooms that they connect (front and back room). // /// @details At the end of the frame, the AkRoomPortals which rooms might have changed are updated and sent to Spatial Audio. // public class AkRoomManager // { // private readonly System.Collections.Generic.List m_Portals = // new System.Collections.Generic.List(); // // private readonly System.Collections.Generic.List m_PortalsToUpdate = // new System.Collections.Generic.List(); // // private readonly System.Collections.Generic.List m_Reflectors = // new System.Collections.Generic.List(); // // private readonly System.Collections.Generic.List m_ReflectorsToUpdate = // new System.Collections.Generic.List(); // // private static AkRoomManager m_Instance; // // public static void Init() // { // if (m_Instance == null) // m_Instance = new AkRoomManager(); // } // // public static void Terminate() // { // if (m_Instance != null) // m_Instance = null; // } // // public static void RegisterPortal(AkRoomPortal portal) // { // if (m_Instance != null) // { // if (!m_Instance.m_Portals.Contains(portal)) // { // m_Instance.m_Portals.Add(portal); // } // if (!m_Instance.m_PortalsToUpdate.Contains(portal)) // { // m_Instance.m_PortalsToUpdate.Add(portal); // } // } // } // // public static void UnregisterPortal(AkRoomPortal portal) // { // if (m_Instance != null) // { // m_Instance.m_Portals.Remove(portal); // m_Instance.m_PortalsToUpdate.Remove(portal); // } // } // // public static void RegisterReflector(AkSurfaceReflector reflector) // { // if (m_Instance != null) // { // if (!m_Instance.m_Reflectors.Contains(reflector)) // { // m_Instance.m_Reflectors.Add(reflector); // } // if (!m_Instance.m_ReflectorsToUpdate.Contains(reflector)) // { // m_Instance.m_ReflectorsToUpdate.Add(reflector); // } // } // } // // public static void UnregisterReflector(AkSurfaceReflector reflector) // { // if (m_Instance != null) // { // m_Instance.m_Reflectors.Remove(reflector); // m_Instance.m_ReflectorsToUpdate.Remove(reflector); // } // } // // public static void RegisterPortalUpdate(AkRoomPortal portal) // { // if (m_Instance != null) // { // if (m_Instance.m_Portals.Contains(portal) && !m_Instance.m_PortalsToUpdate.Contains(portal)) // { // m_Instance.m_PortalsToUpdate.Add(portal); // } // } // } // // public static void RegisterRoomUpdate(AkRoom room) // { // if (m_Instance != null) // { // for (var i = 0; i < m_Instance.m_Portals.Count; ++i) // { // var portal = m_Instance.m_Portals[i]; // if (!m_Instance.m_PortalsToUpdate.Contains(portal) && // (room == portal.frontRoom || room == portal.backRoom || portal.Overlaps(room))) // { // m_Instance.m_PortalsToUpdate.Add(portal); // } // } // for (var i = 0; i < m_Instance.m_Reflectors.Count; ++i) // { // var reflector = m_Instance.m_Reflectors[i]; // if (!m_Instance.m_ReflectorsToUpdate.Contains(reflector) && (reflector.AssociatedRoom == room)) // { // m_Instance.m_ReflectorsToUpdate.Add(reflector); // } // } // } // } // // public static void Update() // { // if (m_Instance != null) // { // for (var i = 0; i < m_Instance.m_PortalsToUpdate.Count; ++i) // { // m_Instance.m_PortalsToUpdate[i].UpdateRoomPortal(); // } // m_Instance.m_PortalsToUpdate.Clear(); // for (var i = 0; i < m_Instance.m_ReflectorsToUpdate.Count; ++i) // { // m_Instance.m_ReflectorsToUpdate[i].UpdateGeometry(); // } // m_Instance.m_ReflectorsToUpdate.Clear(); // } // } // } // #endif // #if ! (UNITY_DASHBOARD_WIDGET || UNITY_WEBPLAYER || UNITY_WII || UNITY_WIIU || UNITY_NACL || UNITY_FLASH || UNITY_BLACKBERRY) // Disable under unsupported platforms.