/// <summary> /// Updates listener state /// </summary> /// <param name="audioListener">Listener state</param> private void UpdateListener(GameAudioListener audioListener) { if (listener == null) { listener = new Listener(); } listener.OrientFront = audioListener.Forward; listener.OrientTop = audioListener.Up; listener.Position = audioListener.Position; listener.Velocity = audioListener.Velocity; if (audioListener.Cone.HasValue) { if (listener.Cone == null) { listener.Cone = new Cone(); } listener.Cone.InnerAngle = audioListener.Cone.Value.InnerAngle; listener.Cone.InnerVolume = audioListener.Cone.Value.InnerVolume; listener.Cone.InnerLpf = audioListener.Cone.Value.InnerLpf; listener.Cone.InnerReverb = audioListener.Cone.Value.InnerReverb; listener.Cone.OuterAngle = audioListener.Cone.Value.OuterAngle; listener.Cone.OuterVolume = audioListener.Cone.Value.OuterVolume; listener.Cone.OuterLpf = audioListener.Cone.Value.OuterLpf; listener.Cone.OuterReverb = audioListener.Cone.Value.OuterReverb; } }
/// <summary> /// Constructor /// </summary> /// <param name="soundEffect">Sound effect</param> /// <param name="sourceVoice">Source voice</param> /// <param name="emitterDescription">Emitter description</param> /// <param name="listenerDescription">Listener description</param> /// <param name="destroyWhenFinished">Sets whether the instance must be disposed after it's finished</param> internal GameAudioEffectInstance( GameAudioEffect soundEffect, SourceVoice sourceVoice, GameAudioSourceDescription emitterDescription, GameAudioSourceDescription listenerDescription, bool destroyWhenFinished) { Effect = soundEffect; voice = sourceVoice; paused = false; IsLooped = false; volume = 1.0f; pan = 0.0f; pitch = 0.0f; outputMatrix = null; Emitter = new GameAudioEmitter(emitterDescription); Listener = new GameAudioListener(listenerDescription); voice.BufferStart += SourceVoice_BufferStart; voice.BufferEnd += SourceVoice_BufferEnd; voice.LoopEnd += SourceVoice_LoopEnd; this.destroyWhenFinished = destroyWhenFinished; }