diff options
author | Chris Robinson <[email protected]> | 2018-12-23 08:51:28 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2018-12-23 08:51:28 -0800 |
commit | 3fe38fed7c29869a43b42d634417452b1a5fedbc (patch) | |
tree | b61cd690dbaced50afef8ff69c880d9a99136149 /Alc/effects/dedicated.cpp | |
parent | e218999b4f408b7fd35daa9d021288b68f5b4ab5 (diff) |
Mix effect slot output to the effect target if it's set
Diffstat (limited to 'Alc/effects/dedicated.cpp')
-rw-r--r-- | Alc/effects/dedicated.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/Alc/effects/dedicated.cpp b/Alc/effects/dedicated.cpp index fa550397..851e48a5 100644 --- a/Alc/effects/dedicated.cpp +++ b/Alc/effects/dedicated.cpp @@ -52,11 +52,23 @@ ALboolean ALdedicatedState::deviceUpdate(const ALCdevice *UNUSED(device)) void ALdedicatedState::update(const ALCcontext *context, const ALeffectslot *slot, const ALeffectProps *props) { const ALCdevice *device = context->Device; - ALfloat Gain; std::fill(std::begin(mTargetGains), std::end(mTargetGains), 0.0f); - Gain = slot->Params.Gain * props->Dedicated.Gain; + const ALfloat Gain{slot->Params.Gain * props->Dedicated.Gain}; + if(ALeffectslot *target{slot->Params.Target}) + { + mOutBuffer = target->WetBuffer; + mOutChannels = target->NumChannels; + if(slot->Params.EffectType == AL_EFFECT_DEDICATED_DIALOGUE) + { + ALfloat coeffs[MAX_AMBI_COEFFS]; + CalcAngleCoeffs(0.0f, 0.0f, 0.0f, coeffs); + ComputePanGains(target, coeffs, Gain, mTargetGains); + } + return; + } + if(slot->Params.EffectType == AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT) { int idx; |