public void StopPersistentAudio(string eventId) { PersistentAudioInfo info = _activePersistentAudioEvents.Find(delegate(PersistentAudioInfo p) { return(p._eventId == eventId); }); if (info != null) { StopPersistentAudioInternal(info); } }
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); }
private void StopPersistentAudioInternal(PersistentAudioInfo info) { FusionAudio.PostEvent(info._eventId, gameObject, false); _activePersistentAudioEvents.Remove(info); }
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; } } }
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); } } }