Ejemplo n.º 1
0
        public void StopPersistentAudio(string eventId)
        {
            PersistentAudioInfo info = _activePersistentAudioEvents.Find(delegate(PersistentAudioInfo p) { return(p._eventId == eventId); });

            if (info != null)
            {
                StopPersistentAudioInternal(info);
            }
        }
Ejemplo n.º 2
0
        public PersistentAudioInfo RegisterPersistentAudio(string eventId, bool stopOnExitAnim)
        {
            if (!string.IsNullOrEmpty(eventId))
            {
                PersistentAudioInfo pai = new PersistentAudioInfo();
                pai._eventId        = eventId;
                pai._stopOnExitAnim = stopOnExitAnim;
                pai._clipHash       = GetCurrentAnimHash();

                _activePersistentAudioEvents.Add(pai);

                return(pai);
            }

            return(null);
        }
Ejemplo n.º 3
0
 private void StopPersistentAudioInternal(PersistentAudioInfo info)
 {
     FusionAudio.PostEvent(info._eventId, gameObject, false);
     _activePersistentAudioEvents.Remove(info);
 }
Ejemplo n.º 4
0
        public void PlayAudio(AudioEventProperties audioPropes, bool forcePlay = false)
        {
            if (audioPropes._applyOnTargetList)
            {
                //AudioEventProperties clone = AudioEventProperties.Deserialize(audioPropes.Serialize());
                PlayAudioOnTargetList(audioPropes);
                return;
            }

            bool canPlay = true;

            if (!forcePlay)
            {
                if (audioPropes._event.Length > 0 && _activePersistentAudioEvents.Count(pi => pi._eventId == audioPropes._event) > 0)
                {
                    PersistentAudioInfo info = _activePersistentAudioEvents.Find(pi => pi._eventId == audioPropes._event);
                    if (!info._stopOnOverride)
                    {
                        canPlay = false;
                    }
                }
                else if (audioPropes._cancelIfBlocked || audioPropes._cancelIfHit || audioPropes._cancelIfMissed)
                {
                    _cachedConditionalAudioes.Add(audioPropes);
                    canPlay = false;
                }
            }

            if (!canPlay)
            {
                return;
            }

            if (audioPropes._event.Length > 0 && _activePersistentAudioEvents.Count(pi => pi._eventId == audioPropes._event) > 0)
            {
                foreach (PersistentAudioInfo info in _activePersistentAudioEvents.FindAll(pi => pi._eventId == audioPropes._event))
                {
                    if (info._stopOnOverride)
                    {
                        StopPersistentAudio(info._eventId);
                    }
                }
            }

            if (FusionAudio.PostEvent(audioPropes._event, gameObject, true))
            {
                // Register the audio if its persistent
                if (audioPropes._isPersistent)
                {
                    PersistentAudioInfo pai = RegisterPersistentAudio(audioPropes._event, audioPropes._stopOnExitAnim);
                    pai._activeTime     = Time.realtimeSinceStartup;
                    pai._activeTurn     = GetCurrentTurn();
                    pai._activeTurn     = Mathf.Max(1, pai._activeTurn);
                    pai._stopOnDuration = audioPropes._stopOnDuration;
                    pai._duration       = audioPropes._duration;
                    pai._stopOnEndTurn  = audioPropes._stopOnEndTurn;
                    pai._stopAfterTurns = audioPropes._stopAfterTurns;
                    pai._turns          = audioPropes._turns;
                    pai._interruptable  = audioPropes._interruptable;
                    pai._stopOnOverride = audioPropes._stopOnOverride;
                }
            }
        }
Ejemplo n.º 5
0
        private void Update()
        {
            if (!GameEngine.Instance.IsTimeToRootScene)
            {
                return;
            }
            if (_activeEnvLightingInfo != null)
            {
                //if (!_player.IsFrozen())
                {
                    if (_activeEnvLightingInfo.Update(Time.deltaTime))
                    {
                        _activeEnvLightingInfo = null;
                    }
                }
            }

            if (_activePostFxEvents.Count > 0)
            {
                for (int i = _activePostFxEvents.Count - 1; i >= 0; i--)
                {
                    if (_activePostFxEvents[i].Update(Time.deltaTime))
                    {
                        _activePostFxEvents.RemoveAt(i);
                    }
                }
            }

            for (int i = _activeParticles.Count - 1; i >= 0; i--)
            {
                if (_activeParticles[i]._stopOnDuration &&
                    Time.realtimeSinceStartup - _activeParticles[i]._activeTime > _activeParticles[i]._duration)
                {
                    StopParticleInternal(_activeParticles[i]);
                }
                else if (_activeParticles[i]._stopAfterTurns && GetCurrentTurn() - _activeParticles[i]._activeTurn >= _activeParticles[i]._turns)
                {
                    StopParticleInternal(_activeParticles[i]);
                }
                else if (_activeParticles[i]._stopOnEndTurn && _activeParticles[i]._activeTurn != GetCurrentTurn())
                {
                    StopParticleInternal(_activeParticles[i]);
                }
            }

            for (int i = _activePersistentAudioEvents.Count - 1; i >= 0; i--)
            {
                PersistentAudioInfo audio = _activePersistentAudioEvents[i];
                if (audio._stopOnDuration && Time.realtimeSinceStartup - audio._activeTime > audio._duration)
                {
                    StopPersistentAudioInternal(audio);
                }
                else if (audio._stopAfterTurns && GetCurrentTurn() - audio._activeTurn >= audio._turns)
                {
                    StopPersistentAudioInternal(audio);
                }
                else if (audio._stopOnEndTurn && audio._activeTurn != GetCurrentTurn())
                {
                    StopPersistentAudioInternal(audio);
                }
            }
        }