Exemple #1
0
 public void Virtualise()
 {
     if (m_currentAudioSource != null)
     {
         WingroveRoot.Instance.UnlinkSource(m_currentAudioSource);
         m_currentAudioSource = null;
     }
 }
Exemple #2
0
 public void Unlink()
 {
     if (m_currentAudioSource != null)
     {
         WingroveRoot.Instance.UnlinkSource(m_currentAudioSource);
         m_currentAudioSource = null;
     }
     GameObject.Destroy(gameObject);
 }
        void Update()
        {
            bool queueEnableAndPlay = false;
            if (m_currentAudioSource == null)
            {
                // don't bother stealing if we're going to be silent anyway...
                if (GetTheoreticalVolume() > 0)
                {
                    m_currentAudioSource = WingroveRoot.Instance.TryClaimPoolSource(this);
                }
                if (m_currentAudioSource != null)
                {
                    m_currentAudioSource.m_audioSource.clip = m_audioClipSource.GetAudioClip();
                    if (!m_isPaused)
                    {
                        m_currentAudioSource.m_audioSource.loop = m_audioClipSource.GetLooping();
                        queueEnableAndPlay = true;
                    }
                }
                else
                {
                    if (!m_isPaused)
                    {
                        if (m_hasStartedEver)
                        {
                            m_currentPosition += (int)(WingroveRoot.GetDeltaTime() * m_audioClipSource.GetAudioClip().frequency * GetMixPitch());
                        }
                        if (m_currentPosition > m_audioClipSource.GetAudioClip().samples)
                        {
                            if (m_audioClipSource.GetLooping())
                            {
                                m_currentPosition -= m_audioClipSource.GetAudioClip().samples;
                            }
                            else
                            {
                                StopInternal();
                            }
                        }
                    }
                }
            }
            else
            {
                if (!m_isPaused)
                {
                    m_currentPosition = m_currentAudioSource.m_audioSource.timeSamples;
                }
            }

            if (!m_isPaused)
            {
                switch (m_currentState)
                {
                    case CueState.Initial:
                        break;
                    case CueState.Playing:
                        m_fadeT = 1;
                        break;
                    case CueState.PlayingFadeIn:
                        m_fadeT += m_fadeSpeed * WingroveRoot.GetDeltaTime();
                        if (m_fadeT >= 1)
                        {
                            m_fadeT = 1.0f;
                            m_currentState = CueState.Playing;
                        }
                        break;
                    case CueState.PlayingFadeOut:
                        m_fadeT -= m_fadeSpeed * WingroveRoot.GetDeltaTime();
                        if (m_fadeT <= 0)
                        {
                            m_fadeT = 0.0f;
                            StopInternal();
                            // early return!!!!
                            return;
                        }
                        break;
                }

                if (!m_audioClipSource.GetLooping())
                {
                    if (m_currentPosition > m_audioClipSource.GetAudioClip().samples - 1000)
                    {
                        StopInternal();
                        return;
                    }
                }
            }

            SetMix();

            if (queueEnableAndPlay)
            {
                if (m_currentAudioSource != null)
                {
                    m_currentAudioSource.m_audioSource.enabled = true;
                    m_currentAudioSource.m_audioSource.timeSamples = m_currentPosition;
                    Audio3DSetting settings = m_audioClipSource.Get3DSettings();
                    if (settings == null)
                    {
                        WingroveRoot.Instance.SetDefault3DSettings(m_currentAudioSource.m_audioSource);
                    }
                    else
                    {
                        AudioRolloffMode rolloffMode = settings.GetRolloffMode();
                        if ( rolloffMode != AudioRolloffMode.Custom )
                        {
                            m_currentAudioSource.m_audioSource.rolloffMode = rolloffMode;
                            m_currentAudioSource.m_audioSource.minDistance = settings.GetMinDistance();
                            m_currentAudioSource.m_audioSource.maxDistance = settings.GetMaxDistance();
                        }
                        else
                        {
                            m_currentAudioSource.m_audioSource.rolloffMode = AudioRolloffMode.Linear;
                            m_currentAudioSource.m_audioSource.minDistance = float.MaxValue;
                            m_currentAudioSource.m_audioSource.maxDistance = float.MaxValue;

                        }
                    }
                    if ((m_hasDSPStartTime) && (m_dspStartTime > AudioSettings.dspTime))
                    {
                        m_currentAudioSource.m_audioSource.timeSamples = m_currentPosition = 0;
                        m_currentAudioSource.m_audioSource.PlayScheduled(m_dspStartTime);
                    }
                    else
                    {
                        m_currentAudioSource.m_audioSource.Play();
                    }
                }
            }

            m_hasStartedEver = true;
        }
 void OnDestroy()
 {
     if (m_currentAudioSource != null)
     {
         WingroveRoot.Instance.UnlinkSource(m_currentAudioSource);
         m_currentAudioSource = null;
     }
     m_audioClipSource.RemoveUsage();
 }
 public void Virtualise()
 {
     if (m_currentAudioSource != null)
     {
         WingroveRoot.Instance.UnlinkSource(m_currentAudioSource);
         m_currentAudioSource = null;
     }
 }
 public void Unlink()
 {
     if (m_currentAudioSource != null)
     {
         WingroveRoot.Instance.UnlinkSource(m_currentAudioSource);
         m_currentAudioSource = null;
     }
     GameObject.Destroy(gameObject);
 }
Exemple #7
0
        void Update()
        {
            bool queueEnableAndPlay = false;

            if (m_currentAudioSource == null)
            {
                // don't bother stealing if we're going to be silent anyway...
                if (GetTheoreticalVolume() > 0)
                {
                    m_currentAudioSource = WingroveRoot.Instance.TryClaimPoolSource(this);
                }
                if (m_currentAudioSource != null)
                {
                    m_currentAudioSource.m_audioSource.clip = m_audioClipSource.GetAudioClip();
                    if (!m_isPaused)
                    {
                        m_currentAudioSource.m_audioSource.loop = m_audioClipSource.GetLooping();
                        queueEnableAndPlay = true;
                    }
                }
                else
                {
                    if (!m_isPaused)
                    {
                        if (m_hasStartedEver)
                        {
                            m_currentPosition += (int)(WingroveRoot.GetDeltaTime() * m_audioClipSource.GetAudioClip().frequency *GetMixPitch());
                        }
                        if (m_currentPosition > m_audioClipSource.GetAudioClip().samples)
                        {
                            if (m_audioClipSource.GetLooping())
                            {
                                m_currentPosition -= m_audioClipSource.GetAudioClip().samples;
                            }
                            else
                            {
                                StopInternal();
                            }
                        }
                    }
                }
            }
            else
            {
                if (!m_isPaused)
                {
                    m_currentPosition = m_currentAudioSource.m_audioSource.timeSamples;
                }
            }

            if (!m_isPaused)
            {
                switch (m_currentState)
                {
                case CueState.Initial:
                    break;

                case CueState.Playing:
                    m_fadeT = 1;
                    break;

                case CueState.PlayingFadeIn:
                    m_fadeT += m_fadeSpeed * WingroveRoot.GetDeltaTime();
                    if (m_fadeT >= 1)
                    {
                        m_fadeT        = 1.0f;
                        m_currentState = CueState.Playing;
                    }
                    break;

                case CueState.PlayingFadeOut:
                    m_fadeT -= m_fadeSpeed * WingroveRoot.GetDeltaTime();
                    if (m_fadeT <= 0)
                    {
                        m_fadeT = 0.0f;
                        StopInternal();
                        // early return!!!!
                        return;
                    }
                    break;
                }

                if (!m_audioClipSource.GetLooping())
                {
                    if (m_currentPosition > m_audioClipSource.GetAudioClip().samples - 1000)
                    {
                        StopInternal();
                        return;
                    }
                }
            }

            SetMix();

            if (queueEnableAndPlay)
            {
                if (m_currentAudioSource != null)
                {
                    m_currentAudioSource.m_audioSource.enabled     = true;
                    m_currentAudioSource.m_audioSource.timeSamples = m_currentPosition;
                    Audio3DSetting settings = m_audioClipSource.Get3DSettings();
                    if (settings == null)
                    {
                        WingroveRoot.Instance.SetDefault3DSettings(m_currentAudioSource.m_audioSource);
                    }
                    else
                    {
                        AudioRolloffMode rolloffMode = settings.GetRolloffMode();
                        if (rolloffMode != AudioRolloffMode.Custom)
                        {
                            m_currentAudioSource.m_audioSource.rolloffMode = rolloffMode;
                            m_currentAudioSource.m_audioSource.minDistance = settings.GetMinDistance();
                            m_currentAudioSource.m_audioSource.maxDistance = settings.GetMaxDistance();
                        }
                        else
                        {
                            m_currentAudioSource.m_audioSource.rolloffMode = AudioRolloffMode.Linear;
                            m_currentAudioSource.m_audioSource.minDistance = float.MaxValue;
                            m_currentAudioSource.m_audioSource.maxDistance = float.MaxValue;
                        }
                    }
                    if ((m_hasDSPStartTime) && (m_dspStartTime > AudioSettings.dspTime))
                    {
                        m_currentAudioSource.m_audioSource.timeSamples = m_currentPosition = 0;
                        m_currentAudioSource.m_audioSource.PlayScheduled(m_dspStartTime);
                    }
                    else
                    {
                        m_currentAudioSource.m_audioSource.Play();
                    }
                }
            }

            m_hasStartedEver = true;
        }