//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // * New Static Methods: Fadeout Audio THEN Fade Back In //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public static void FadeoutAudioThenFadeBackIn(AudioHandlerInfo a_rAudioHandlerInfo, float a_fFadeoutTime, float a_fFadeBackInWaitTime) { if (a_rAudioHandlerInfo != null && IsValidAudioHandlerID(a_rAudioHandlerInfo.AudioHandlerID)) { FadeoutAudioThenFadeBackIn(a_rAudioHandlerInfo.AudioHandlerID, sm_aAudioSource[a_rAudioHandlerInfo.AudioHandlerID].Volume, a_rAudioHandlerInfo.m_fMaxVolume * 0.2f, a_rAudioHandlerInfo.m_fMaxVolume, a_fFadeoutTime, a_fFadeBackInWaitTime); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // * New Static Methods: Fade Audio //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public static void FadeAudio(AudioHandlerInfo a_rAudioHandlerInfo) { if (a_rAudioHandlerInfo != null && IsValidAudioHandlerID(a_rAudioHandlerInfo.AudioHandlerID)) { FadeAudio(a_rAudioHandlerInfo.AudioHandlerID, sm_aAudioSource[a_rAudioHandlerInfo.AudioHandlerID].Volume, a_rAudioHandlerInfo.m_fMaxVolume, a_rAudioHandlerInfo.m_fFadeinAudioTime); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // * New Static Methods: Fadeout Audio //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public static void FadeoutAudio(AudioHandlerInfo a_rAudioHandlerInfo) { if (a_rAudioHandlerInfo != null && IsValidAudioHandlerID(a_rAudioHandlerInfo.AudioHandlerID)) { FadeoutAudio(a_rAudioHandlerInfo.AudioHandlerID, sm_aAudioSource[a_rAudioHandlerInfo.AudioHandlerID].Volume, 0.0f, a_rAudioHandlerInfo.m_fFadeoutAudioTime); SetAudioHandler(a_rAudioHandlerInfo, -1); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // * New Static Method: Set Audio Handler ID //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ private static void SetAudioHandler(AudioHandlerInfo a_rAudioHandlerInfo, int a_iNewID) { a_rAudioHandlerInfo.GetType().GetField("m_iAudioHandlerID", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).SetValue(a_rAudioHandlerInfo, a_iNewID); if (a_iNewID > -1) { a_rAudioHandlerInfo.GetType().GetField("m_rAssignedAudioHandler", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).SetValue(a_rAudioHandlerInfo, sm_aAudioSource[a_iNewID]); } }
public static void StopAudio(AudioHandlerInfo a_rAudioHandlerInfo) { if (a_rAudioHandlerInfo != null && IsValidAudioHandlerID(a_rAudioHandlerInfo.AudioHandlerID)) { sm_aAudioSource[a_rAudioHandlerInfo.AudioHandlerID].StopSound(); SetAudioHandler(a_rAudioHandlerInfo, -1); } }
public static void PlayAudioClip(AudioHandlerInfo a_rAudioHandlerInfo) { if (a_rAudioHandlerInfo != null) { int trackStartPosition = (a_rAudioHandlerInfo.m_bRandomiseTrackStartPosition ? Random.Range(0, (a_rAudioHandlerInfo.m_acAudioToPlay.samples / a_rAudioHandlerInfo.m_acAudioToPlay.channels)) : a_rAudioHandlerInfo.m_iStartTrackPosition); int iAudioHandlerID = PlayAudioClip(a_rAudioHandlerInfo.m_acAudioToPlay, a_rAudioHandlerInfo.m_bLoopAudio, a_rAudioHandlerInfo.m_fMaxVolume, a_rAudioHandlerInfo.m_eAudioType, trackStartPosition); SetAudioHandler(a_rAudioHandlerInfo, iAudioHandlerID); if (IsValidAudioHandlerID(a_rAudioHandlerInfo.AudioHandlerID)) { if (a_rAudioHandlerInfo.m_bFadeinAudioUponPlaying) { sm_aAudioSource[a_rAudioHandlerInfo.AudioHandlerID].Volume = 0.0f; FadeAudio(a_rAudioHandlerInfo); } } } }