Skip to content

Commit

Permalink
Recognize EAX5 flags when setting them
Browse files Browse the repository at this point in the history
  • Loading branch information
kcat committed Jun 8, 2024
1 parent dcfc09a commit f21e916
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 14 deletions.
27 changes: 15 additions & 12 deletions al/auxeffectslot.h
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,17 @@ struct ALeffectslot {
}
};

struct Eax5FlagsValidator {
void operator()(unsigned long ulFlags) const
{
EaxRangeValidator{}(
"Flags",
ulFlags,
0UL,
~EAX50FXSLOTFLAGS_RESERVED);
}
};

struct Eax5OcclusionValidator {
void operator()(long lOcclusion) const
{
Expand All @@ -214,21 +225,13 @@ struct ALeffectslot {
}
};

struct Eax5FlagsValidator {
void operator()(unsigned long ulFlags) const
{
EaxRangeValidator{}(
"Flags",
ulFlags,
0UL,
~EAX50FXSLOTFLAGS_RESERVED);
}
};

struct Eax5AllValidator {
void operator()(const EAX50FXSLOTPROPERTIES& all) const
{
Eax4AllValidator{}(static_cast<const EAX40FXSLOTPROPERTIES&>(all));
Eax4GuidLoadEffectValidator{}(all.guidLoadEffect);
Eax4VolumeValidator{}(all.lVolume);
Eax4LockValidator{}(all.lLock);
Eax5FlagsValidator{}(all.ulFlags);
Eax5OcclusionValidator{}(all.lOcclusion);
Eax5OcclusionLfRatioValidator{}(all.flOcclusionLFRatio);
}
Expand Down
5 changes: 4 additions & 1 deletion al/source.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4502,10 +4502,13 @@ void ALsource::eax5_set(const EaxCall& call, Eax5Props& props)
case EAXSOURCE_ROLLOFFFACTOR:
case EAXSOURCE_ROOMROLLOFFFACTOR:
case EAXSOURCE_AIRABSORPTIONFACTOR:
case EAXSOURCE_FLAGS:
eax3_set(call, props.source);
break;

case EAXSOURCE_FLAGS:
eax_defer<Eax5SourceFlagsValidator>(call, props.source.ulFlags);
break;

case EAXSOURCE_SENDPARAMETERS:
eax5_defer_sends<Eax5SendValidator, EAXSOURCESENDPROPERTIES>(call, props.sends);
break;
Expand Down
19 changes: 18 additions & 1 deletion al/source.h
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,24 @@ struct ALsource {
struct Eax5SourceAllValidator {
void operator()(const EAX50SOURCEPROPERTIES& props) const
{
Eax3SourceAllValidator{}(static_cast<const Eax3Props&>(props));
Eax2SourceDirectValidator{}(props.lDirect);
Eax2SourceDirectHfValidator{}(props.lDirectHF);
Eax2SourceRoomValidator{}(props.lRoom);
Eax2SourceRoomHfValidator{}(props.lRoomHF);
Eax2SourceObstructionValidator{}(props.lObstruction);
Eax2SourceObstructionLfRatioValidator{}(props.flObstructionLFRatio);
Eax2SourceOcclusionValidator{}(props.lOcclusion);
Eax2SourceOcclusionLfRatioValidator{}(props.flOcclusionLFRatio);
Eax2SourceOcclusionRoomRatioValidator{}(props.flOcclusionRoomRatio);
Eax3SourceOcclusionDirectRatioValidator{}(props.flOcclusionDirectRatio);
Eax3SourceExclusionValidator{}(props.lExclusion);
Eax3SourceExclusionLfRatioValidator{}(props.flExclusionLFRatio);
Eax2SourceOutsideVolumeHfValidator{}(props.lOutsideVolumeHF);
Eax3SourceDopplerFactorValidator{}(props.flDopplerFactor);
Eax3SourceRolloffFactorValidator{}(props.flRolloffFactor);
Eax2SourceRoomRolloffFactorValidator{}(props.flRoomRolloffFactor);
Eax2SourceAirAbsorptionFactorValidator{}(props.flAirAbsorptionFactor);
Eax5SourceFlagsValidator{}(props.ulFlags);
Eax5SourceMacroFXFactorValidator{}(props.flMacroFXFactor);
}
};
Expand Down

0 comments on commit f21e916

Please sign in to comment.