Store and use the send slot in the source params
This commit is contained in:
parent
21574f7e16
commit
75fa891e0a
@ -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)
|
||||
|
20
Alc/mixer.c
20
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; \
|
||||
\
|
||||
|
@ -108,6 +108,7 @@ typedef struct ALsource
|
||||
ALfloat history[MAXCHANNELS*2];
|
||||
|
||||
struct {
|
||||
struct ALeffectslot *Slot;
|
||||
ALfloat WetGain;
|
||||
FILTER iirFilter;
|
||||
ALfloat history[MAXCHANNELS];
|
||||
|
Loading…
x
Reference in New Issue
Block a user