Files
BH3/Assets/Plugins/Assembly-CSharp-firstpass/AkTerminator.cs
2025-08-13 09:26:42 +08:00

61 lines
1.1 KiB
C#

using System;
using System.Threading;
using UnityEngine;
[AddComponentMenu("Wwise/AkTerminator")]
public class AkTerminator : MonoBehaviour
{
private static AkTerminator ms_Instance;
private void Awake()
{
if (ms_Instance != null)
{
if (ms_Instance != this)
{
UnityEngine.Object.DestroyImmediate(this);
}
}
else
{
UnityEngine.Object.DontDestroyOnLoad(this);
ms_Instance = this;
}
}
private void OnApplicationQuit()
{
Terminate();
}
private void OnDestroy()
{
if (ms_Instance == this)
{
ms_Instance = null;
}
}
private void Terminate()
{
if (!(ms_Instance != null) || !(ms_Instance == this) || !AkSoundEngine.IsInitialized())
{
return;
}
AkSoundEngine.StopAll();
AkSoundEngine.RenderAudio();
for (uint num = 0u; num < 50; num++)
{
AkCallbackManager.PostCallbacks();
using (EventWaitHandle eventWaitHandle = new ManualResetEvent(false))
{
eventWaitHandle.WaitOne(TimeSpan.FromMilliseconds(1.0));
}
}
AkSoundEngine.Term();
ms_Instance = null;
AkCallbackManager.Term();
AkBankManager.Reset();
}
}