aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/effects/dedicated.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2018-12-23 08:51:28 -0800
committerChris Robinson <[email protected]>2018-12-23 08:51:28 -0800
commit3fe38fed7c29869a43b42d634417452b1a5fedbc (patch)
treeb61cd690dbaced50afef8ff69c880d9a99136149 /Alc/effects/dedicated.cpp
parente218999b4f408b7fd35daa9d021288b68f5b4ab5 (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.cpp16
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;