Combine multiple individual flags
This commit is contained in:
parent
a6c099c63e
commit
af690871b1
@ -593,21 +593,18 @@ private:
|
||||
|
||||
struct State1
|
||||
{
|
||||
bool changed{false};
|
||||
Props1 i; // Immediate.
|
||||
Props1 d; // Deferred.
|
||||
}; // State1
|
||||
|
||||
struct State2
|
||||
{
|
||||
bool changed{false};
|
||||
Props2 i; // Immediate.
|
||||
Props2 d; // Deferred.
|
||||
}; // State2
|
||||
|
||||
struct State3
|
||||
{
|
||||
bool changed{false};
|
||||
Props3 i; // Immediate.
|
||||
Props3 d; // Deferred.
|
||||
}; // State3
|
||||
@ -1112,6 +1109,7 @@ private:
|
||||
}; // EnvironmentSizeDeferrer3
|
||||
|
||||
int version_;
|
||||
bool changed_{};
|
||||
Props3 props_{};
|
||||
State1 state1_{};
|
||||
State2 state2_{};
|
||||
@ -1563,51 +1561,36 @@ void EaxReverbEffect::get(const EaxCall& call)
|
||||
|
||||
/*[[nodiscard]]*/ bool EaxReverbEffect::commit()
|
||||
{
|
||||
if((version_ == 1 && !state1_.changed)
|
||||
|| (version_ == 2 && !state2_.changed)
|
||||
|| (version_ == 3 && !state3_.changed)
|
||||
|| (version_ == 4 && !state4_.changed)
|
||||
|| (version_ == 5 && !state5_.changed))
|
||||
{
|
||||
if(!changed_)
|
||||
return false;
|
||||
}
|
||||
changed_ = false;
|
||||
|
||||
const auto props = props_;
|
||||
|
||||
switch (version_)
|
||||
switch(version_)
|
||||
{
|
||||
case 1:
|
||||
state1_.changed = false;
|
||||
state1_.i = state1_.d;
|
||||
translate(state1_.d, props_);
|
||||
break;
|
||||
case 1:
|
||||
state1_.i = state1_.d;
|
||||
translate(state1_.d, props_);
|
||||
break;
|
||||
case 2:
|
||||
state2_.i = state2_.d;
|
||||
translate(state2_.d, props_);
|
||||
break;
|
||||
case 3:
|
||||
state3_.i = state3_.d;
|
||||
props_ = state3_.d;
|
||||
break;
|
||||
case 4:
|
||||
state4_.i = state4_.d;
|
||||
props_ = state4_.d;
|
||||
break;
|
||||
case 5:
|
||||
state5_.i = state5_.d;
|
||||
props_ = state5_.d;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
state2_.changed = false;
|
||||
state2_.i = state2_.d;
|
||||
translate(state2_.d, props_);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
state3_.changed = false;
|
||||
state3_.i = state3_.d;
|
||||
props_ = state3_.d;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
state4_.changed = false;
|
||||
state4_.i = state4_.d;
|
||||
props_ = state4_.d;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
state5_.changed = false;
|
||||
state5_.i = state5_.d;
|
||||
props_ = state5_.d;
|
||||
break;
|
||||
|
||||
default:
|
||||
fail_unknown_version();
|
||||
default:
|
||||
fail_unknown_version();
|
||||
}
|
||||
|
||||
auto is_dirty = false;
|
||||
@ -1953,17 +1936,16 @@ void EaxReverbEffect::set3(const EaxCall& call, Props3& props)
|
||||
void EaxReverbEffect::set(const EaxCall& call)
|
||||
{
|
||||
const auto version = call.get_version();
|
||||
|
||||
switch (version)
|
||||
switch(version)
|
||||
{
|
||||
case 1: set1(call, state1_.d); state1_.changed = true; break;
|
||||
case 2: set2(call, state2_.d); state2_.changed = true; break;
|
||||
case 3: set3(call, state3_.d); state3_.changed = true; break;
|
||||
case 4: set3(call, state4_.d); state4_.changed = true; break;
|
||||
case 5: set3(call, state5_.d); state5_.changed = true; break;
|
||||
default: fail_unknown_version();
|
||||
case 1: set1(call, state1_.d); break;
|
||||
case 2: set2(call, state2_.d); break;
|
||||
case 3: set3(call, state3_.d); break;
|
||||
case 4: set3(call, state4_.d); break;
|
||||
case 5: set3(call, state5_.d); break;
|
||||
default: fail_unknown_version();
|
||||
}
|
||||
|
||||
changed_ = true;
|
||||
version_ = version;
|
||||
}
|
||||
|
||||
|
@ -4475,13 +4475,14 @@ void ALsource::eax_set(const EaxCall& call)
|
||||
const auto eax_version = call.get_version();
|
||||
switch(eax_version)
|
||||
{
|
||||
case 1: eax1_set(call, eax1_.d); eax1_.changed = true; break;
|
||||
case 2: eax2_set(call, eax2_.d); eax2_.changed = true; break;
|
||||
case 3: eax3_set(call, eax3_.d); eax3_.changed = true; break;
|
||||
case 4: eax4_set(call, eax4_.d); eax4_.changed = true; break;
|
||||
case 5: eax5_set(call, eax5_.d); eax5_.changed = true; break;
|
||||
default: eax_fail_unknown_property_id();
|
||||
case 1: eax1_set(call, eax1_.d); break;
|
||||
case 2: eax2_set(call, eax2_.d); break;
|
||||
case 3: eax3_set(call, eax3_.d); break;
|
||||
case 4: eax4_set(call, eax4_.d); break;
|
||||
case 5: eax5_set(call, eax5_.d); break;
|
||||
default: eax_fail_unknown_property_id();
|
||||
}
|
||||
eax_changed_ = true;
|
||||
eax_version_ = eax_version;
|
||||
}
|
||||
|
||||
@ -4894,54 +4895,37 @@ void ALsource::eax_commit(EaxCommitType commit_type)
|
||||
const auto primary_fx_slot_id = eax_al_context_->eax_get_primary_fx_slot_index();
|
||||
const auto is_primary_fx_slot_id_changed = (eax_primary_fx_slot_id_ != primary_fx_slot_id);
|
||||
|
||||
const auto is_forced = is_primary_fx_slot_id_changed || commit_type == EaxCommitType::forced;
|
||||
if(commit_type != EaxCommitType::forced && !is_primary_fx_slot_id_changed && !eax_changed_)
|
||||
return;
|
||||
|
||||
eax_primary_fx_slot_id_ = primary_fx_slot_id;
|
||||
eax_changed_ = false;
|
||||
|
||||
switch(eax_version_)
|
||||
{
|
||||
case 1:
|
||||
if(!is_forced && !eax1_.changed)
|
||||
return;
|
||||
eax1_.changed = false;
|
||||
eax1_.i = eax1_.d;
|
||||
eax1_translate(eax1_.i, eax_);
|
||||
break;
|
||||
case 1:
|
||||
eax1_.i = eax1_.d;
|
||||
eax1_translate(eax1_.i, eax_);
|
||||
break;
|
||||
case 2:
|
||||
eax2_.i = eax2_.d;
|
||||
eax2_translate(eax2_.i, eax_);
|
||||
break;
|
||||
case 3:
|
||||
eax3_.i = eax3_.d;
|
||||
eax3_translate(eax3_.i, eax_);
|
||||
break;
|
||||
case 4:
|
||||
eax4_.i = eax4_.d;
|
||||
eax4_translate(eax4_.i, eax_);
|
||||
break;
|
||||
case 5:
|
||||
eax5_.i = eax5_.d;
|
||||
eax_ = eax5_.d;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if(!is_forced && !eax2_.changed)
|
||||
return;
|
||||
eax2_.changed = false;
|
||||
eax2_.i = eax2_.d;
|
||||
eax2_translate(eax2_.i, eax_);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if(!is_forced && !eax3_.changed)
|
||||
return;
|
||||
eax3_.changed = false;
|
||||
eax3_.i = eax3_.d;
|
||||
eax3_translate(eax3_.i, eax_);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if(!is_forced && !eax4_.changed)
|
||||
return;
|
||||
eax4_.changed = false;
|
||||
eax4_.i = eax4_.d;
|
||||
eax4_translate(eax4_.i, eax_);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if(!is_forced && !eax5_.changed)
|
||||
return;
|
||||
eax5_.changed = false;
|
||||
eax5_.i = eax5_.d;
|
||||
eax_ = eax5_.d;
|
||||
break;
|
||||
|
||||
default:
|
||||
eax_fail_unknown_version();
|
||||
default:
|
||||
eax_fail_unknown_version();
|
||||
}
|
||||
|
||||
eax_set_efx_outer_gain_hf();
|
||||
|
@ -200,7 +200,6 @@ private:
|
||||
using Eax1Props = EAXBUFFER_REVERBPROPERTIES;
|
||||
|
||||
struct Eax1State {
|
||||
bool changed{false};
|
||||
Eax1Props i; // Immediate.
|
||||
Eax1Props d; // Deferred.
|
||||
};
|
||||
@ -208,7 +207,6 @@ private:
|
||||
using Eax2Props = EAX20BUFFERPROPERTIES;
|
||||
|
||||
struct Eax2State {
|
||||
bool changed{false};
|
||||
Eax2Props i; // Immediate.
|
||||
Eax2Props d; // Deferred.
|
||||
};
|
||||
@ -216,7 +214,6 @@ private:
|
||||
using Eax3Props = EAX30SOURCEPROPERTIES;
|
||||
|
||||
struct Eax3State {
|
||||
bool changed{false};
|
||||
Eax3Props i; // Immediate.
|
||||
Eax3Props d; // Deferred.
|
||||
};
|
||||
@ -233,7 +230,6 @@ private:
|
||||
};
|
||||
|
||||
struct Eax4State {
|
||||
bool changed{false};
|
||||
Eax4Props i; // Immediate.
|
||||
Eax4Props d; // Deferred.
|
||||
};
|
||||
@ -251,7 +247,6 @@ private:
|
||||
};
|
||||
|
||||
struct Eax5State {
|
||||
bool changed{false};
|
||||
Eax5Props i; // Immediate.
|
||||
Eax5Props d; // Deferred.
|
||||
};
|
||||
@ -260,6 +255,7 @@ private:
|
||||
EaxFxSlotIndex eax_primary_fx_slot_id_{};
|
||||
EaxActiveFxSlots eax_active_fx_slots_{};
|
||||
int eax_version_{};
|
||||
bool eax_changed_{};
|
||||
Eax1State eax1_{};
|
||||
Eax2State eax2_{};
|
||||
Eax3State eax3_{};
|
||||
|
Loading…
x
Reference in New Issue
Block a user