mirror of https://github.com/AxioDL/metaforce.git
Particle/C*EPulse: Fix implementations
This commit is contained in:
parent
3c9fef492a
commit
5e748a0d7f
|
@ -123,17 +123,16 @@ bool CCEPulse::GetValue(int frame, zeus::CColor& valOut) const {
|
|||
int a, b;
|
||||
x4_aDuration->GetValue(frame, a);
|
||||
x8_bDuration->GetValue(frame, b);
|
||||
int cv = zeus::max(1, a + b + 1);
|
||||
int cv = a + b + 1;
|
||||
if (cv < 0) {
|
||||
cv = 1;
|
||||
}
|
||||
|
||||
if (b >= 1) {
|
||||
int cv2 = frame % cv;
|
||||
if (cv2 >= a)
|
||||
x10_bVal->GetValue(frame, valOut);
|
||||
else
|
||||
xc_aVal->GetValue(frame, valOut);
|
||||
} else
|
||||
if (b < 1 || frame % cv <= a) {
|
||||
xc_aVal->GetValue(frame, valOut);
|
||||
|
||||
} else {
|
||||
x10_bVal->GetValue(frame, valOut);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -158,17 +158,16 @@ bool CIEPulse::GetValue(int frame, int& valOut) const {
|
|||
int a, b;
|
||||
x4_aDuration->GetValue(frame, a);
|
||||
x8_bDuration->GetValue(frame, b);
|
||||
int cv = std::max(1, a + b + 1);
|
||||
int cv = a + b + 1;
|
||||
if (cv < 0) {
|
||||
cv = 1;
|
||||
}
|
||||
|
||||
if (b >= 1) {
|
||||
int cv2 = frame % cv;
|
||||
if (cv2 >= a)
|
||||
x10_bVal->GetValue(frame, valOut);
|
||||
else
|
||||
xc_aVal->GetValue(frame, valOut);
|
||||
} else
|
||||
if (b < 1 || frame % cv <= a) {
|
||||
xc_aVal->GetValue(frame, valOut);
|
||||
|
||||
} else {
|
||||
x10_bVal->GetValue(frame, valOut);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -202,17 +202,16 @@ bool CMVEPulse::GetValue(int frame, zeus::CVector3f& pVel, zeus::CVector3f& pPos
|
|||
int a, b;
|
||||
x4_aDuration->GetValue(frame, a);
|
||||
x8_bDuration->GetValue(frame, b);
|
||||
int cv = std::max(1, a + b + 1);
|
||||
int cv = a + b + 1;
|
||||
if (cv < 0) {
|
||||
cv = 1;
|
||||
}
|
||||
|
||||
if (b >= 1) {
|
||||
int cv2 = frame % cv;
|
||||
if (cv2 >= a)
|
||||
x10_bVal->GetValue(frame, pVel, pPos);
|
||||
else
|
||||
xc_aVal->GetValue(frame, pVel, pPos);
|
||||
} else
|
||||
if (b < 1 || frame % cv <= a) {
|
||||
xc_aVal->GetValue(frame, pVel, pPos);
|
||||
|
||||
} else {
|
||||
x10_bVal->GetValue(frame, pVel, pPos);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -137,17 +137,18 @@ bool CREPulse::GetValue(int frame, float& valOut) const {
|
|||
int a, b;
|
||||
x4_aDuration->GetValue(frame, a);
|
||||
x8_bDuration->GetValue(frame, b);
|
||||
int cv = std::max(1, a + b + 1);
|
||||
int cv = a + b + 1;
|
||||
if (cv < 0) {
|
||||
cv = 1;
|
||||
}
|
||||
|
||||
if (b >= 1) {
|
||||
int cv2 = frame % cv;
|
||||
if (cv2 >= a)
|
||||
x10_valB->GetValue(frame, valOut);
|
||||
else
|
||||
xc_valA->GetValue(frame, valOut);
|
||||
} else
|
||||
// CREPulse is an outlier here, the other
|
||||
// IElement classes use <= instead of <.
|
||||
if (b < 1 || frame % cv < a) {
|
||||
xc_valA->GetValue(frame, valOut);
|
||||
|
||||
} else {
|
||||
x10_valB->GetValue(frame, valOut);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -227,17 +227,16 @@ bool CVEPulse::GetValue(int frame, zeus::CVector3f& valOut) const {
|
|||
int a, b;
|
||||
x4_aDuration->GetValue(frame, a);
|
||||
x8_bDuration->GetValue(frame, b);
|
||||
int cv = std::max(1, a + b + 1);
|
||||
int cv = a + b + 1;
|
||||
if (cv < 0) {
|
||||
cv = 1;
|
||||
}
|
||||
|
||||
if (b >= 1) {
|
||||
int cv2 = frame % cv;
|
||||
if (cv2 >= a)
|
||||
x10_bVal->GetValue(frame, valOut);
|
||||
else
|
||||
xc_aVal->GetValue(frame, valOut);
|
||||
} else
|
||||
if (b < 1 || frame % cv <= a) {
|
||||
xc_aVal->GetValue(frame, valOut);
|
||||
|
||||
} else {
|
||||
x10_bVal->GetValue(frame, valOut);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue