mirror of https://github.com/AxioDL/metaforce.git
CRealElement: Fixes from decomp
This commit is contained in:
parent
c36f478a21
commit
67369f075c
|
@ -71,10 +71,11 @@ bool CREConstant::GetValue([[maybe_unused]] int frame, float& valOut) const {
|
||||||
bool CRETimeChain::GetValue(int frame, float& valOut) const {
|
bool CRETimeChain::GetValue(int frame, float& valOut) const {
|
||||||
int v;
|
int v;
|
||||||
xc_swFrame->GetValue(frame, v);
|
xc_swFrame->GetValue(frame, v);
|
||||||
if (frame >= v)
|
if (frame < v) {
|
||||||
return x8_b->GetValue(frame, valOut);
|
|
||||||
else
|
|
||||||
return x4_a->GetValue(frame, valOut);
|
return x4_a->GetValue(frame, valOut);
|
||||||
|
} else {
|
||||||
|
return x8_b->GetValue(frame - v, valOut);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CREAdd::GetValue(int frame, float& valOut) const {
|
bool CREAdd::GetValue(int frame, float& valOut) const {
|
||||||
|
@ -109,11 +110,11 @@ bool CREInitialRandom::GetValue(int frame, float& valOut) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CRERandom::GetValue(int frame, float& valOut) const {
|
bool CRERandom::GetValue(int frame, float& valOut) const {
|
||||||
float a, b;
|
float min;
|
||||||
x4_min->GetValue(frame, a);
|
float max;
|
||||||
x8_max->GetValue(frame, b);
|
x4_min->GetValue(frame, min);
|
||||||
float rand = CRandom16::GetRandomNumber()->Float();
|
x8_max->GetValue(frame, max);
|
||||||
valOut = b * rand + a * (1.0f - rand);
|
valOut = (max - min) * CRandom16::GetRandomNumber()->Float() + min;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,10 +178,11 @@ bool CRESineWave::GetValue(int frame, float& valOut) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CREInitialSwitch::GetValue(int frame, float& valOut) const {
|
bool CREInitialSwitch::GetValue(int frame, float& valOut) const {
|
||||||
if (frame == 0)
|
if (frame == 0) {
|
||||||
x4_a->GetValue(frame, valOut);
|
x4_a->GetValue(0, valOut);
|
||||||
else
|
} else {
|
||||||
x8_b->GetValue(frame, valOut);
|
x8_b->GetValue(frame - 1, valOut);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,7 +201,7 @@ bool CRECompareEquals::GetValue(int frame, float& valOut) const {
|
||||||
float a, b;
|
float a, b;
|
||||||
x4_a->GetValue(frame, a);
|
x4_a->GetValue(frame, a);
|
||||||
x8_b->GetValue(frame, b);
|
x8_b->GetValue(frame, b);
|
||||||
if (std::fabs(a - b) < 0.00001f)
|
if (zeus::close_enough(a, b))
|
||||||
xc_c->GetValue(frame, valOut);
|
xc_c->GetValue(frame, valOut);
|
||||||
else
|
else
|
||||||
x10_d->GetValue(frame, valOut);
|
x10_d->GetValue(frame, valOut);
|
||||||
|
|
|
@ -152,7 +152,7 @@ class CRESineWave : public CRealElement {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CRESineWave(std::unique_ptr<CRealElement>&& a, std::unique_ptr<CRealElement>&& b, std::unique_ptr<CRealElement>&& c)
|
CRESineWave(std::unique_ptr<CRealElement>&& a, std::unique_ptr<CRealElement>&& b, std::unique_ptr<CRealElement>&& c)
|
||||||
: x4_frequency(std::move(a)), x8_amplitude(std::move(b)), xc_phase(std::move(c)) {}
|
: x4_frequency(std::move(b)), x8_amplitude(std::move(c)), xc_phase(std::move(a)) {}
|
||||||
bool GetValue(int frame, float& valOut) const override;
|
bool GetValue(int frame, float& valOut) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue