static partial void UpdateAllProjSpecific(float deltaTime) { bool doMuffleCheck = Timing.TotalTime > LastMuffleCheckTime + 0.2; if (doMuffleCheck) { LastMuffleCheckTime = Timing.TotalTime; } foreach (StatusEffect statusEffect in ActiveLoopingSounds) { if (statusEffect.soundChannel == null) { continue; } //stop looping sounds if the statuseffect hasn't been applied in 0.1 //= keeping the sound looping requires continuously applying the statuseffect if (Timing.TotalTime > statusEffect.loopStartTime + 0.1) { statusEffect.soundChannel.FadeOutAndDispose(); statusEffect.soundChannel = null; } else { statusEffect.soundChannel.Position = new Vector3(statusEffect.soundEmitter.WorldPosition, 0.0f); if (doMuffleCheck) { statusEffect.soundChannel.Muffled = SoundPlayer.ShouldMuffleSound( Character.Controlled, statusEffect.soundEmitter.WorldPosition, statusEffect.soundChannel.Far, Character.Controlled?.CurrentHull); } } } ActiveLoopingSounds.RemoveWhere(s => s.soundChannel == null); }