diff options
author | Boris I. Bendovsky <[email protected]> | 2022-07-15 11:10:17 +0300 |
---|---|---|
committer | Boris I. Bendovsky <[email protected]> | 2022-07-17 20:59:06 +0300 |
commit | e24f124a89ebba6063e67189c2d4c45bd8946ef3 (patch) | |
tree | efde1b780bd5986d5f00cc19ae59b29a0d007149 | |
parent | 71ac63e5a86f1516e19fc1ddd2d4f2f3cd4a9f9e (diff) |
[EAX_FX_SLOT] Fix defaults for current properties
-rw-r--r-- | al/auxeffectslot.cpp | 54 | ||||
-rw-r--r-- | al/auxeffectslot.h | 9 |
2 files changed, 45 insertions, 18 deletions
diff --git a/al/auxeffectslot.cpp b/al/auxeffectslot.cpp index 4cc26f0a..a322cb71 100644 --- a/al/auxeffectslot.cpp +++ b/al/auxeffectslot.cpp @@ -1182,7 +1182,7 @@ long ALeffectslot::eax_get_eax_default_lock() const noexcept return eax4_fx_slot_is_legacy() ? EAXFXSLOT_LOCKED : EAXFXSLOT_UNLOCKED; } -void ALeffectslot::eax4_fx_slot_set_defaults(Eax4Props& props) +void ALeffectslot::eax4_fx_slot_set_defaults(Eax4Props& props) noexcept { props.guidLoadEffect = eax_get_eax_default_effect_guid(); props.lVolume = EAXFXSLOT_DEFAULTVOLUME; @@ -1190,32 +1190,58 @@ void ALeffectslot::eax4_fx_slot_set_defaults(Eax4Props& props) props.ulFlags = EAX40FXSLOT_DEFAULTFLAGS; } -void ALeffectslot::eax4_fx_slot_set_defaults() +void ALeffectslot::eax5_fx_slot_set_defaults(Eax5Props& props) noexcept { - eax4_fx_slot_set_defaults(eax4_.i); + props.guidLoadEffect = eax_get_eax_default_effect_guid(); + props.lVolume = EAXFXSLOT_DEFAULTVOLUME; + props.lLock = EAXFXSLOT_UNLOCKED; + props.ulFlags = EAX50FXSLOT_DEFAULTFLAGS; + props.lOcclusion = EAXFXSLOT_DEFAULTOCCLUSION; + props.flOcclusionLFRatio = EAXFXSLOT_DEFAULTOCCLUSIONLFRATIO; } -void ALeffectslot::eax5_fx_slot_set_defaults(Eax5Props& props) +void ALeffectslot::eax4_fx_slot_set_current_defaults(const Eax4Props& props) noexcept { - eax4_fx_slot_set_defaults(static_cast<Eax4Props&>(props)); - props.lOcclusion = EAXFXSLOT_DEFAULTOCCLUSION; - props.flOcclusionLFRatio = EAXFXSLOT_DEFAULTOCCLUSIONLFRATIO; + static_cast<Eax4Props&>(eax_) = props; + eax_.lOcclusion = EAXFXSLOT_DEFAULTOCCLUSION; + eax_.flOcclusionLFRatio = EAXFXSLOT_DEFAULTOCCLUSIONLFRATIO; } -void ALeffectslot::eax5_fx_slot_set_defaults() +void ALeffectslot::eax5_fx_slot_set_current_defaults(const Eax5Props& props) noexcept { - eax5_fx_slot_set_defaults(eax5_.i); + eax_ = props; } -void ALeffectslot::eax_fx_slot_set_defaults() +void ALeffectslot::eax_fx_slot_set_current_defaults() { - eax4_fx_slot_set_defaults(); - eax5_fx_slot_set_defaults(); - eax123_ = eax5_; - eax_ = eax5_.i; + switch(eax_version_) + { + case 1: + case 2: + case 3: + eax5_fx_slot_set_current_defaults(eax123_.i); + break; + case 4: + eax4_fx_slot_set_current_defaults(eax4_.i); + break; + case 5: + eax5_fx_slot_set_current_defaults(eax5_.i); + break; + default: + eax_fail_unknown_version(); + } + eax_df_ = ~EaxDirtyFlags{}; } +void ALeffectslot::eax_fx_slot_set_defaults() +{ + eax5_fx_slot_set_defaults(eax123_.i); + eax4_fx_slot_set_defaults(eax4_.i); + eax5_fx_slot_set_defaults(eax5_.i); + eax_fx_slot_set_current_defaults(); +} + void ALeffectslot::eax4_fx_slot_get(const EaxCall& call, const Eax4Props& props) const { switch(call.get_property_id()) diff --git a/al/auxeffectslot.h b/al/auxeffectslot.h index 78b0c95a..bf2060fe 100644 --- a/al/auxeffectslot.h +++ b/al/auxeffectslot.h @@ -285,10 +285,11 @@ private: const GUID& eax_get_eax_default_effect_guid() const noexcept; long eax_get_eax_default_lock() const noexcept; - void eax4_fx_slot_set_defaults(Eax4Props& props); - void eax4_fx_slot_set_defaults(); - void eax5_fx_slot_set_defaults(Eax5Props& props); - void eax5_fx_slot_set_defaults(); + void eax4_fx_slot_set_defaults(Eax4Props& props) noexcept; + void eax5_fx_slot_set_defaults(Eax5Props& props) noexcept; + void eax4_fx_slot_set_current_defaults(const Eax4Props& props) noexcept; + void eax5_fx_slot_set_current_defaults(const Eax5Props& props) noexcept; + void eax_fx_slot_set_current_defaults(); void eax_fx_slot_set_defaults(); void eax4_fx_slot_get(const EaxCall& call, const Eax4Props& props) const; |