예제 #1
0
    public static bool LoadBank(string name, int skin = 0)
    {
        if (name.Contains("[]"))
        {
            return(false);
        }
        if (skin > 0)
        {
            name += skin;
        }
        bool result = false;

        AkBankManager.m_Mutex.WaitOne();
        AkBankHandle akBankHandle = null;

        if (!AkBankManager.m_BankHandles.TryGetValue(name, out akBankHandle))
        {
            akBankHandle = new AkBankHandle(name);
            AkBankManager.m_BankHandles.Add(name, akBankHandle);
            result = akBankHandle.LoadBank(skin > 0);
            AkBankManager.m_Mutex.ReleaseMutex();
        }
        else
        {
            akBankHandle.IncRef();
            AkBankManager.m_Mutex.ReleaseMutex();
        }
        return(result);
    }
    public static void LoadBank(string name, byte[] data)
    {
        AkBankHandle akBankHandle = null;

        if (!AkBankManager.m_BankHandles.TryGetValue(name, out akBankHandle))
        {
            akBankHandle = new AkBankHandle(name);
            AkBankManager.m_BankHandles.Add(name, akBankHandle);
            akBankHandle.LoadBank(data);
        }
    }
예제 #3
0
    public static void LoadBank(string name)
    {
        AkBankHandle handle = null;

        if (!m_BankHandles.TryGetValue(name, out handle))
        {
            handle = new AkBankHandle(name);
            m_BankHandles.Add(name, handle);
            handle.LoadBank();
        }
    }
    public static void UnloadBank(string name)
    {
        AkBankHandle akBankHandle = null;

        if (AkBankManager.m_BankHandles.TryGetValue(name, out akBankHandle))
        {
            akBankHandle.DecRef();
            if (akBankHandle.RefCount == 0)
            {
                AkBankManager.m_BankHandles.Remove(name);
            }
        }
    }
예제 #5
0
    public static void UnloadBank(string name)
    {
        AkBankHandle handle = null;

        if (m_BankHandles.TryGetValue(name, out handle))
        {
            handle.DecRef();
            if (handle.RefCount == 0)
            {
                m_BankHandles.Remove(name);
            }
        }
    }
예제 #6
0
    /// Unloads a bank.  See AK::SoundEngine::UnloadBank for more information
    public static void UnloadBank(string name)
    {
        m_Mutex.WaitOne();
        AkBankHandle handle = null;

        if (m_BankHandles.TryGetValue(name, out handle))
        {
            handle.DecRef();
            if (handle.RefCount == 0)
            {
                m_BankHandles.Remove(name);
            }
        }
        m_Mutex.ReleaseMutex();
    }
예제 #7
0
    public static void GlobalBankCallback(uint in_bankID, IntPtr in_pInMemoryBankPtr, AKRESULT in_eLoadResult, uint in_memPoolId, object in_Cookie)
    {
        AkBankManager.m_Mutex.WaitOne();
        AkBankHandle akBankHandle = (AkBankHandle)in_Cookie;

        AkCallbackManager.BankCallback bankCallback = akBankHandle.bankCallback;
        if (in_eLoadResult != AKRESULT.AK_Success)
        {
            AkBankManager.m_BankHandles.Remove(akBankHandle.bankName);
        }
        AkBankManager.m_Mutex.ReleaseMutex();
        if (bankCallback != null)
        {
            bankCallback(in_bankID, in_pInMemoryBankPtr, in_eLoadResult, in_memPoolId, null);
        }
    }
예제 #8
0
    public static void LoadBankAsync(string name, AkCallbackManager.BankCallback callback = null)
    {
        m_Mutex.WaitOne();
        AkBankHandle handle = null;

        if (!m_BankHandles.TryGetValue(name, out handle))
        {
            handle = new AkBankHandle(name);
            m_BankHandles.Add(name, handle);
            m_Mutex.ReleaseMutex();
            handle.LoadBankAsync(callback);
        }
        else
        {
            m_Mutex.ReleaseMutex();
        }
    }
예제 #9
0
    public static void LoadBank(string name, byte[] data)
    {
        m_Mutex.WaitOne();
        AkBankHandle handle = null;

        if (!m_BankHandles.TryGetValue(name, out handle))
        {
            handle = new AkBankHandle(name);
            m_BankHandles.Add(name, handle);
            m_Mutex.ReleaseMutex();
            handle.LoadBank(data);
        }
        else
        {
            m_Mutex.ReleaseMutex();
        }
    }
예제 #10
0
    public static void GlobalBankCallback(uint in_bankID, IntPtr in_pInMemoryBankPtr, AKRESULT in_eLoadResult, uint in_memPoolId, object in_Cookie)
    {
        m_Mutex.WaitOne();
        AkBankHandle handle = (AkBankHandle)in_Cookie;

        AkCallbackManager.BankCallback bankCallback = handle.bankCallback;
        if (in_eLoadResult != AKRESULT.AK_Success)
        {
            Debug.LogWarning("Wwise: Bank " + handle.bankName + " failed to load (" + in_eLoadResult.ToString() + ")");
            m_BankHandles.Remove(handle.bankName);
        }
        m_Mutex.ReleaseMutex();
        if (bankCallback != null)
        {
            bankCallback(in_bankID, in_pInMemoryBankPtr, in_eLoadResult, in_memPoolId, null);
        }
    }
예제 #11
0
    public static void LoadBankAsync(string name, AkCallbackManager.BankCallback callback = null)
    {
        AkBankManager.m_Mutex.WaitOne();
        AkBankHandle akBankHandle = null;

        if (!AkBankManager.m_BankHandles.TryGetValue(name, out akBankHandle))
        {
            akBankHandle = new AkBankHandle(name);
            AkBankManager.m_BankHandles.Add(name, akBankHandle);
            AkBankManager.m_Mutex.ReleaseMutex();
            akBankHandle.LoadBankAsync(callback);
        }
        else
        {
            akBankHandle.IncRef();
            AkBankManager.m_Mutex.ReleaseMutex();
        }
    }
예제 #12
0
    /// Loads a bank.  This version blocks until the bank is loaded.  See AK::SoundEngine::LoadBank for more information
    public static void LoadBank(string name, bool decodeBank, bool saveDecodedBank)
    {
        m_Mutex.WaitOne();
        AkBankHandle handle = null;

        if (!m_BankHandles.TryGetValue(name, out handle))
        {
            handle = new AkBankHandle(name, decodeBank, saveDecodedBank);
            m_BankHandles.Add(name, handle);
            m_Mutex.ReleaseMutex();
            handle.LoadBank();
        }
        else
        {
            // Bank already loaded, increment its ref count.
            handle.IncRef();
            m_Mutex.ReleaseMutex();
        }
    }
예제 #13
0
    /// Loads a bank.  This version returns right away and loads in background. See AK::SoundEngine::LoadBank for more information
    public static void LoadBankAsync(string name, AkCallbackManager.BankCallback callback = null)
    {
        m_Mutex.WaitOne();
        AkBankHandle handle = null;

        if (!m_BankHandles.TryGetValue(name, out handle))
        {
            handle = new AkBankHandle(name);
            m_BankHandles.Add(name, handle);
            m_Mutex.ReleaseMutex();
            handle.LoadBankAsync(callback);
        }
        else
        {
            // Bank already loaded, increment its ref count.
            handle.IncRef();
            m_Mutex.ReleaseMutex();
        }
    }
예제 #14
0
 static bool Prefix(AkBankHandle __instance)
 {
     try
     {
         if (!Main.enabled)
         {
             return(true);
         }
         if (!Main.CustomSoundpackPaths.ContainsKey(__instance.bankName))
         {
             return(true);
         }
         __instance.LoadBank();
         return(false);
     } catch (Exception ex)
     {
         Main.DebugError(ex);
     }
     return(true);
 }
예제 #15
0
    public static void UnloadBank(string name, bool realy = false, int skin = 0)
    {
        if (name.Equals("[]"))
        {
            return;
        }
        if (skin > 0)
        {
            if (!AkBankManager.m_BankHandles.ContainsKey(name + skin))
            {
                return;
            }
            name += skin;
        }
        AkBankManager.m_Mutex.WaitOne();
        AkBankHandle akBankHandle = null;

        if (AkBankManager.m_BankHandles.TryGetValue(name, out akBankHandle))
        {
            if (!realy)
            {
                akBankHandle.DecRef();
                if (akBankHandle.RefCount == 0)
                {
                    AkBankManager.m_BankHandles.Remove(name);
                }
            }
            else
            {
                akBankHandle.m_RefCount = 0;
                AkSoundEngine.UnloadBank(akBankHandle.m_BankID, IntPtr.Zero, null, null);
                AkBankManager.m_BankHandles.Remove(name);
            }
        }
        AkBankManager.m_Mutex.ReleaseMutex();
    }
예제 #16
0
 /// Loads a SoundBank. This version blocks until the bank is loaded. See AK::SoundEngine::LoadBank for more information.
 public static void LoadBank(string name, bool decodeBank, bool saveDecodedBank)
 {
     m_Mutex.WaitOne();
     AkBankHandle handle = null;
     if (!m_BankHandles.TryGetValue(name, out handle))
     {
         handle = new AkBankHandle(name, decodeBank, saveDecodedBank);
         m_BankHandles.Add(name, handle);
         m_Mutex.ReleaseMutex();
         handle.LoadBank();
     }
     else
     {
         // Bank already loaded, increment its ref count.
         handle.IncRef();
         m_Mutex.ReleaseMutex();
     }
 }
예제 #17
0
 /// Loads a SoundBank. This version returns right away and loads in background. See AK::SoundEngine::LoadBank for more information.
 public static void LoadBankAsync(string name, AkCallbackManager.BankCallback callback = null)
 {
     m_Mutex.WaitOne();
     AkBankHandle handle = null;
     if (!m_BankHandles.TryGetValue(name, out handle))
     {
         handle = new AkBankHandle(name, false, false);
         m_BankHandles.Add(name, handle);
         m_Mutex.ReleaseMutex();
         handle.LoadBankAsync(callback);
     }
     else
     {
         // Bank already loaded, increment its ref count.
         handle.IncRef();
         m_Mutex.ReleaseMutex();
     }
 }