/// <summary> /// Called when a wrapper is finished. /// </summary> /// <param name="sender">Sender.</param> /// <param name="eventArgs">Event arguments.</param> private static void WrapperFinished(object sender, EventArgs eventArgs) { AudioSourceWrapper wrapper = sender as AudioSourceWrapper; wrapper.onClipsFinishedCallback -= WrapperFinished; Store(wrapper); }
/// <summary> /// Plays the clip. /// </summary> /// <param name="position">Position.</param> /// <param name="clip">Clip.</param> /// <param name="volumeScale">Volume scale.</param> /// <param name="pitch">Pitch.</param> public static AudioSource PlayOneShot(Vector3 position, AudioClip clip, float volumeScale, float pitch) { AudioSourceWrapper wrapper = New(); wrapper.transform.parent = null; wrapper.transform.position = position; wrapper.audioSource.pitch = pitch; wrapper.onClipsFinishedCallback += WrapperFinished; wrapper.PlayOneShot(clip, volumeScale); return(wrapper.audioSource); }
/// <summary> /// Retrieves a stored wrapper, or makes a new one. Enables the GameObject. /// </summary> private static AudioSourceWrapper New() { AudioSourceWrapper output = m_Pool.New(); try { output.gameObject.SetActive(true); } catch (MissingReferenceException) { // The GameObject has been destroyed so return a different one. return(New()); } return(output); }
/// <summary> /// Stores and disables the wrapper. /// </summary> /// <param name="wrapper">Wrapper.</param> private static void Store(AudioSourceWrapper wrapper) { wrapper.gameObject.SetActive(false); m_Pool.Store(wrapper); }
/// <summary> /// Stores and disables the wrapper. /// </summary> /// <param name="wrapper">Wrapper.</param> private static void Store(AudioSourceWrapper wrapper) { wrapper.gameObject.SetActive(false); m_Pool.Store(wrapper); }