diff options
author | Chris Robinson <[email protected]> | 2011-07-05 14:14:20 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2011-07-05 14:14:20 -0700 |
commit | 75fa891e0a4d00739a8a0ddd037782f99f22a578 (patch) | |
tree | aca7575098bde2ecb999ef1fd533cb32eb68163e /Alc | |
parent | 21574f7e16d8ff2826b32cf11086e5c7dbac7c30 (diff) |
Store and use the send slot in the source params
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/ALu.c | 5 | ||||
-rw-r--r-- | Alc/mixer.c | 20 |
2 files changed, 15 insertions, 10 deletions
@@ -323,8 +323,11 @@ ALvoid CalcNonAttnSourceParams(ALsource *ALSource, const ALCcontext *ALContext) } } for(i = 0;i < NumSends;i++) + { + ALSource->Params.Send[i].Slot = ALSource->Send[i].Slot; ALSource->Params.Send[i].WetGain = WetGain[i] * ListenerGain / ALSource->NumChannels; + } /* Update filter coefficients. Calculations based on the I3DL2 * spec. */ @@ -444,6 +447,8 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext) WetGainAuto = AL_TRUE; WetGainHFAuto = DryGainHFAuto; } + + ALSource->Params.Send[i].Slot = Slot; } //1. Translate Listener to origin (convert to head relative) diff --git a/Alc/mixer.c b/Alc/mixer.c index 4caca6e2..df0480aa 100644 --- a/Alc/mixer.c +++ b/Alc/mixer.c @@ -168,19 +168,19 @@ static void Mix_Hrtf_##T##_##sampler(ALsource *Source, ALCdevice *Device, \ \ for(out = 0;out < Device->NumAuxSends;out++) \ { \ + ALeffectslot *Slot = Source->Params.Send[i].Slot; \ ALfloat WetSend; \ ALfloat *RESTRICT WetBuffer; \ ALfloat *RESTRICT WetClickRemoval; \ ALfloat *RESTRICT WetPendingClicks; \ FILTER *WetFilter; \ \ - if(!Source->Send[out].Slot || \ - Source->Send[out].Slot->effect.type == AL_EFFECT_NULL) \ + if(!Slot || Slot->effect.type == AL_EFFECT_NULL) \ continue; \ \ - WetBuffer = Source->Send[out].Slot->WetBuffer; \ - WetClickRemoval = Source->Send[out].Slot->ClickRemoval; \ - WetPendingClicks = Source->Send[out].Slot->PendingClicks; \ + WetBuffer = Slot->WetBuffer; \ + WetClickRemoval = Slot->ClickRemoval; \ + WetPendingClicks = Slot->PendingClicks; \ WetFilter = &Source->Params.Send[out].iirFilter; \ WetSend = Source->Params.Send[out].WetGain; \ \ @@ -308,19 +308,19 @@ static void Mix_##T##_##sampler(ALsource *Source, ALCdevice *Device, \ \ for(out = 0;out < Device->NumAuxSends;out++) \ { \ + ALeffectslot *Slot = Source->Params.Send[i].Slot; \ ALfloat WetSend; \ ALfloat *WetBuffer; \ ALfloat *WetClickRemoval; \ ALfloat *WetPendingClicks; \ FILTER *WetFilter; \ \ - if(!Source->Send[out].Slot || \ - Source->Send[out].Slot->effect.type == AL_EFFECT_NULL) \ + if(!Slot || Slot->effect.type == AL_EFFECT_NULL) \ continue; \ \ - WetBuffer = Source->Send[out].Slot->WetBuffer; \ - WetClickRemoval = Source->Send[out].Slot->ClickRemoval; \ - WetPendingClicks = Source->Send[out].Slot->PendingClicks; \ + WetBuffer = Slot->WetBuffer; \ + WetClickRemoval = Slot->ClickRemoval; \ + WetPendingClicks = Slot->PendingClicks; \ WetFilter = &Source->Params.Send[out].iirFilter; \ WetSend = Source->Params.Send[out].WetGain; \ \ |