JPA small cleanup

This commit is contained in:
LagoLunatic
2025-08-11 17:51:49 -04:00
parent 27bd5a8eca
commit 1c93c48ccf
9 changed files with 83 additions and 69 deletions
+1 -1
View File
@@ -131,7 +131,7 @@ struct JPABaseShapeData {
/* 0x48 */ f32 mTexScrollScaleX;
/* 0x4c */ f32 mTexScrollScaleY;
/* 0x50 */ f32 mTexScrollRotate;
};
}; // Size: 0x54
class JPABaseShapeArc : public JPABaseShape {
public:
+11 -3
View File
@@ -4,7 +4,7 @@
#include "JSystem/JGeometry.h"
struct JPADynamicsBlockData {
/* 0x00 */ u32 mFlag;
/* 0x00 */ u32 mFlags;
/* 0x04 */ f32 mVolumeSweep;
/* 0x08 */ f32 mVolumeMinRad;
/* 0x0C */ u16 mVolumeSize;
@@ -33,6 +33,14 @@ struct JPADynamicsBlockData {
/* 0x60 */ JGeometry::TVec3<f32> mEmitterTrs;
/* 0x6C */ JGeometry::TVec3<f32> mEmitterDir;
/* 0x78 */ JGeometry::TVec3<s16> mEmitterRot;
}; // Size: 0x80
enum {
JPADynFlag_FixedDensity = 0x01,
JPADynFlag_FixedInterval = 0x02,
JPADynFlag_InheritScale = 0x04,
JPADynFlag_FollowEmtr = 0x08,
JPADynFlag_FollowEmtrChld = 0x10,
};
class JPADynamicsBlock {
@@ -74,13 +82,13 @@ class JPADynamicsBlockArc : public JPADynamicsBlock {
public:
JPADynamicsBlockArc(const u8*);
virtual ~JPADynamicsBlockArc() {}
virtual u32 getDataFlag() { return mpData->mFlag; }
virtual u32 getDataFlag() { return mpData->mFlags; }
virtual u32 getUseKeyFlag() { return 0; }
virtual void getEmitterScl(JGeometry::TVec3<f32>& out) { out.set(mpData->mEmitterScl.x, mpData->mEmitterScl.y, mpData->mEmitterScl.z); }
virtual void getEmitterRot(JGeometry::TVec3<s16>& out) { out.set(mpData->mEmitterRot.x, mpData->mEmitterRot.y, mpData->mEmitterRot.z); }
virtual void getEmitterTrs(JGeometry::TVec3<f32>& out) { out.set(mpData->mEmitterTrs.x, mpData->mEmitterTrs.y, mpData->mEmitterTrs.z); }
virtual void getEmitterDir(JGeometry::TVec3<f32>& out) { out.set(mpData->mEmitterDir.x, mpData->mEmitterDir.y, mpData->mEmitterDir.z); }
virtual u32 getVolumeType() { return (mpData->mFlag >> 8) & 0x07; }
virtual u32 getVolumeType() { return (mpData->mFlags >> 8) & 0x07; }
virtual u32 getVolumeSize() { return mpData->mVolumeSize; }
virtual f32 getVolumeSweep() { return mpData->mVolumeSweep; }
virtual f32 getVolumeMinRad() { return mpData->mVolumeMinRad; }
+5 -5
View File
@@ -4,14 +4,14 @@
#include "dolphin/gx/GX.h"
struct JPAExTexShapeData {
/* 0x00 */ u32 mFlag;
/* 0x00 */ u32 mFlags;
/* 0x04 */ Mtx23 mIndTexMtx;
/* 0x1C */ s8 mExpScale;
/* 0x1D */ u8 field_0x1d[3];
/* 0x20 */ u8 mIndTextureID;
/* 0x21 */ u8 mSubTextureID;
/* 0x22 */ u8 mSecondTextureID;
};
}; // Size: 0x24
class JPAExTexShape {
public:
@@ -30,13 +30,13 @@ class JPAExTexShapeArc : public JPAExTexShape {
public:
JPAExTexShapeArc(const u8*);
virtual ~JPAExTexShapeArc() {}
virtual u32 getIndTexMode() { return (mpData->mFlag >> 0) & 0x03; }
virtual GXIndTexMtxID getIndTexMtxID() { return indMtxID[(mpData->mFlag >> 2) & 0x03]; }
virtual u32 getIndTexMode() { return (mpData->mFlags >> 0) & 0x03; }
virtual GXIndTexMtxID getIndTexMtxID() { return indMtxID[(mpData->mFlags >> 2) & 0x03]; }
virtual const Mtx23* getIndTexMtx() { return &mpData->mIndTexMtx; }
virtual s8 getExpScale() { return mpData->mExpScale; }
virtual u8 getIndTextureID() { return mpData->mIndTextureID; }
virtual u8 getSubTextureID() { return mpData->mSubTextureID; }
virtual BOOL isEnableSecondTex() { return (mpData->mFlag & 0x100); }
virtual BOOL isEnableSecondTex() { return (mpData->mFlags & 0x100); }
virtual u8 getSecondTexIndex() { return mpData->mSecondTextureID; }
public:
+16 -16
View File
@@ -4,7 +4,7 @@
#include "JSystem/JParticle/JPAParticle.h"
struct JPAExtraShapeData {
/* 0x00 */ u32 mFlag;
/* 0x00 */ u32 mFlags;
/* 0x04 */ u32 field_0x04;
/* 0x08 */ f32 mAlphaInTiming;
/* 0x0C */ f32 mAlphaOutTiming;
@@ -29,7 +29,7 @@ struct JPAExtraShapeData {
/* 0x54 */ f32 mRotateRandomAngle;
/* 0x58 */ f32 mRotateRandomSpeed;
/* 0x5C */ f32 mRotateDirection;
};
}; // Size: 0x60
class JPAExtraShape {
public:
@@ -80,41 +80,41 @@ class JPAExtraShapeArc : public JPAExtraShape {
public:
JPAExtraShapeArc(const u8*);
virtual ~JPAExtraShapeArc() {}
virtual BOOL isEnableScale() { return (mpData->mFlag & 0x100); }
virtual BOOL isDiffXY() { return (mpData->mFlag & 0x200); }
virtual BOOL isEnableScaleAnmX() { return (mpData->mFlag & 0x800); }
virtual BOOL isEnableScaleAnmY() { return (mpData->mFlag & 0x400); }
virtual BOOL isEnableScaleBySpeedX() { return (mpData->mFlag & 0x2000); }
virtual BOOL isEnableScaleBySpeedY() { return (mpData->mFlag & 0x1000); }
virtual BOOL isEnableScale() { return (mpData->mFlags & 0x100); }
virtual BOOL isDiffXY() { return (mpData->mFlags & 0x200); }
virtual BOOL isEnableScaleAnmX() { return (mpData->mFlags & 0x800); }
virtual BOOL isEnableScaleAnmY() { return (mpData->mFlags & 0x400); }
virtual BOOL isEnableScaleBySpeedX() { return (mpData->mFlags & 0x2000); }
virtual BOOL isEnableScaleBySpeedY() { return (mpData->mFlags & 0x1000); }
virtual f32 getScaleInTiming() { return mpData->mScaleInTiming; }
virtual f32 getScaleOutTiming() { return mpData->mScaleOutTiming; }
virtual f32 getScaleInValueX() { return mpData->mScaleInValueX; }
virtual f32 getScaleInValueY() { return mpData->mScaleInValueY; }
virtual u8 getAnmTypeX() { return (mpData->mFlag >> 18) & 0x01; }
virtual u8 getAnmTypeY() { return (mpData->mFlag >> 19) & 0x01; }
virtual u8 getAnmTypeX() { return (mpData->mFlags >> 18) & 0x01; }
virtual u8 getAnmTypeY() { return (mpData->mFlags >> 19) & 0x01; }
virtual s16 getAnmCycleX() { return mpData->mAnmCycleX; }
virtual s16 getAnmCycleY() { return mpData->mAnmCycleY; }
virtual f32 getIncreaseRateX() { return mIncreaseRateX; }
virtual f32 getIncreaseRateY() { return mIncreaseRateY; }
virtual f32 getDecreaseRateX() { return mDecreaseRateX; }
virtual f32 getDecreaseRateY() { return mDecreaseRateY; }
virtual u8 getPivotX() { return (mpData->mFlag >> 14) & 0x03; }
virtual u8 getPivotY() { return (mpData->mFlag >> 16) & 0x03; }
virtual u8 getPivotX() { return (mpData->mFlags >> 14) & 0x03; }
virtual u8 getPivotY() { return (mpData->mFlags >> 16) & 0x03; }
virtual f32 getRandomScale() { return mpData->mRandomScale; }
virtual BOOL isEnableAlpha() { return (mpData->mFlag & 0x01); }
virtual BOOL isEnableSinWave() { return (mpData->mFlag & 0x02); }
virtual BOOL isEnableAlpha() { return (mpData->mFlags & 0x01); }
virtual BOOL isEnableSinWave() { return (mpData->mFlags & 0x02); }
virtual f32 getAlphaInTiming() { return mpData->mAlphaInTiming; }
virtual f32 getAlphaOutTiming() { return mpData->mAlphaOutTiming; }
virtual f32 getAlphaInValue() { return mpData->mAlphaInValue; }
virtual f32 getAlphaBaseValue() { return mpData->mAlphaBaseValue; }
virtual u8 getAlphaWaveType() { return (mpData->mFlag >> 2) & 0x03; }
virtual u8 getAlphaWaveType() { return (mpData->mFlags >> 2) & 0x03; }
virtual f32 getAlphaWaveParam1() { return mpData->mAlphaWaveParam1; }
virtual f32 getAlphaWaveParam2() { return mpData->mAlphaWaveParam2; }
virtual f32 getAlphaWaveParam3() { return mpData->mAlphaWaveParam3; }
virtual f32 getAlphaWaveRandom() { return mpData->mAlphaWaveRandom; }
virtual f32 getAlphaIncreaseRate() { return mAlphaIncreaseRate; }
virtual f32 getAlphaDecreaseRate() { return mAlphaDecreaseRate; }
virtual BOOL isEnableRotate() { return (mpData->mFlag & 0x01000000); }
virtual BOOL isEnableRotate() { return (mpData->mFlags & 0x01000000); }
virtual f32 getRotateAngle() { return mpData->mRotateAngle; }
virtual f32 getRotateSpeed() { return mpData->mRotateSpeed; }
virtual f32 getRotateRandomAngle() { return mpData->mRotateRandomAngle; }
+4 -4
View File
@@ -4,7 +4,7 @@
#include "JSystem/JGeometry.h"
struct JPAFieldBlockData {
/* 0x00 */ u32 mFlag;
/* 0x00 */ u32 mFlags;
/* 0x04 */ f32 mMag;
/* 0x08 */ f32 mMagRndm;
/* 0x0C */ f32 mMaxDist;
@@ -47,9 +47,9 @@ public:
JPAFieldBlockArc(const u8*);
virtual ~JPAFieldBlockArc() {}
virtual u8 getType() { return (mpData->mFlag >> 0) & 0x0F; }
virtual u32 getVelType() { return (mpData->mFlag >> 8) & 0x03; }
virtual u32 getSttFlag() { return (mpData->mFlag >> 16) & 0xFFFF; }
virtual u8 getType() { return (mpData->mFlags >> 0) & 0x0F; }
virtual u32 getVelType() { return (mpData->mFlags >> 8) & 0x03; }
virtual u32 getSttFlag() { return (mpData->mFlags >> 16) & 0xFFFF; }
virtual u32 getCycle() { return mpData->mCycle; }
virtual u32 getID() { return 0; }
virtual void getPos(JGeometry::TVec3<float>& out) { out = mpData->mPos; };
+6 -1
View File
@@ -23,8 +23,13 @@ class JPACallBackBase2;
enum JPAParticleStatus {
JPAPtclStts_FirstFrame = 0x01,
JPAPtclStts_Delete = 0x02,
JPAPtlcStts_Child = 0x04,
JPAPtclStts_Invisible = 0x08,
JPAPtclStts_UNK_10 = 0x10,
JPAPtclStts_UNK_20 = 0x20,
JPAPtclStts_UNK_40 = 0x40,
JPAPtclStts_UNK_80 = 0x80,
};
// fake name
@@ -72,6 +77,7 @@ public:
void initStatus(u32 flag) { mStatus = flag; }
void setStatus(u32 flag) { mStatus |= flag; }
void clearStatus(u32 flag) { mStatus &= ~flag; }
void setDeleteParticleFlag() { setStatus(JPAPtclStts_Delete); }
bool isInvisibleParticle() { return checkStatus(JPAPtclStts_Invisible); }
void setInvisibleParticleFlag() { setStatus(JPAPtclStts_Invisible); }
@@ -81,7 +87,6 @@ public:
void getWidth() {}
void getHeight() {}
void getLifeTime() const {}
void setDeleteParticleFlag() {}
public:
/* 0x00 */ JSULink<JPABaseParticle> mLink;
+15 -15
View File
@@ -5,7 +5,7 @@
#include "JSystem/JUtility/TColor.h"
struct JPASweepShapeData {
/* 0x00 */ u32 mFlag;
/* 0x00 */ u32 mFlags;
/* 0x04 */ f32 mPosRndm;
/* 0x08 */ f32 mBaseVel;
/* 0x0C */ f32 mBaseVelRndm;
@@ -24,7 +24,7 @@ struct JPASweepShapeData {
/* 0x3C */ JUtility::TColor mPrm;
/* 0x40 */ JUtility::TColor mEnv;
/* 0x44 */ u8 mTextureIndex;
};
}; // Size: 0x48
class JPASweepShape {
public:
@@ -68,10 +68,10 @@ class JPASweepShapeArc : public JPASweepShape {
public:
JPASweepShapeArc(const u8*);
virtual ~JPASweepShapeArc() {};
virtual u8 getType() { return (mpData->mFlag >> 0) & 0x0F; }
virtual u8 getDirType() { return (mpData->mFlag >> 4) & 0x07; }
virtual u8 getRotType() { return (mpData->mFlag >> 7) & 0x07; }
virtual u8 getBasePlaneType() { return (mpData->mFlag >> 10) & 0x01; }
virtual u8 getType() { return (mpData->mFlags >> 0) & 0x0F; }
virtual u8 getDirType() { return (mpData->mFlags >> 4) & 0x07; }
virtual u8 getRotType() { return (mpData->mFlags >> 7) & 0x07; }
virtual u8 getBasePlaneType() { return (mpData->mFlags >> 10) & 0x01; }
virtual s16 getLife() { return mpData->mLife; }
virtual s16 getRate() { return mpData->mRate; }
virtual f32 getTiming() { return mpData->mTiming; }
@@ -81,15 +81,15 @@ public:
virtual f32 getBaseVel() { return mpData->mBaseVel; }
virtual f32 getBaseVelRndm() { return mpData->mBaseVelRndm; }
virtual f32 getGravity() { return mpData->mGravity; }
virtual BOOL isEnableField() { return (mpData->mFlag & 0x00200000); }
virtual BOOL isEnableDrawParent() { return (mpData->mFlag & 0x00080000); }
virtual BOOL isClipOn() { return (mpData->mFlag & 0x00100000); }
virtual BOOL isEnableScaleOut() { return (mpData->mFlag & 0x00400000); }
virtual BOOL isEnableAlphaOut() { return (mpData->mFlag & 0x00800000); }
virtual BOOL isEnableRotate() { return (mpData->mFlag & 0x01000000); }
virtual BOOL isInheritedScale() { return (mpData->mFlag & 0x00010000); }
virtual BOOL isInheritedAlpha() { return (mpData->mFlag & 0x00020000); }
virtual BOOL isInheritedRGB() { return (mpData->mFlag & 0x00040000); }
virtual BOOL isEnableField() { return (mpData->mFlags & 0x00200000); }
virtual BOOL isEnableDrawParent() { return (mpData->mFlags & 0x00080000); }
virtual BOOL isClipOn() { return (mpData->mFlags & 0x00100000); }
virtual BOOL isEnableScaleOut() { return (mpData->mFlags & 0x00400000); }
virtual BOOL isEnableAlphaOut() { return (mpData->mFlags & 0x00800000); }
virtual BOOL isEnableRotate() { return (mpData->mFlags & 0x01000000); }
virtual BOOL isInheritedScale() { return (mpData->mFlags & 0x00010000); }
virtual BOOL isInheritedAlpha() { return (mpData->mFlags & 0x00020000); }
virtual BOOL isInheritedRGB() { return (mpData->mFlags & 0x00040000); }
virtual u8 getTextureIndex() { return mpData->mTextureIndex; }
virtual f32 getScaleX() { return mpData->mScaleX; }
virtual f32 getScaleY() { return mpData->mScaleY; }
+15 -15
View File
@@ -23,7 +23,7 @@ void JPABaseEmitter::calcVolumePoint() {
/* 8025C254-8025C394 .text calcVolumeLine__14JPABaseEmitterFv */
void JPABaseEmitter::calcVolumeLine() {
if (checkEmDataFlag(0x02)) {
if (checkEmDataFlag(JPADynFlag_FixedInterval)) {
emtrInfo.mVolumePos.set(0.0f, 0.0f, emtrInfo.mVolumeSize * ((f32)emtrInfo.mVolumeEmitIdx / ((f32)emtrInfo.mVolumeEmitCount - 1.0f) - 0.5f));
emtrInfo.mVolumeEmitIdx++;
} else {
@@ -37,7 +37,7 @@ void JPABaseEmitter::calcVolumeLine() {
/* 8025C394-8025C538 .text calcVolumeCircle__14JPABaseEmitterFv */
void JPABaseEmitter::calcVolumeCircle() {
s16 angle;
if (checkEmDataFlag(0x02)) {
if (checkEmDataFlag(JPADynFlag_FixedInterval)) {
s16 idx = (0x10000 * emtrInfo.mVolumeEmitIdx / emtrInfo.mVolumeEmitCount);
angle = idx * mVolumeSweep;
emtrInfo.mVolumeEmitIdx++;
@@ -46,7 +46,7 @@ void JPABaseEmitter::calcVolumeCircle() {
}
f32 rad = getRandomF();
if (checkEmDataFlag(0x01))
if (checkEmDataFlag(JPADynFlag_FixedDensity))
rad = 1.0f - rad * rad;
rad = emtrInfo.mVolumeSize * (mVolumeMinRad + rad * (1.0f - mVolumeMinRad));
@@ -66,7 +66,7 @@ void JPABaseEmitter::calcVolumeCube() {
void JPABaseEmitter::calcVolumeSphere() {
s16 x;
s16 angle;
if (checkEmDataFlag(0x02)) {
if (checkEmDataFlag(JPADynFlag_FixedInterval)) {
u16 angleNo = (emtrInfo.mVolumeEmitAngleCount * 0x10000) / emtrInfo.mVolumeEmitAngleMax;
x = (u16)((emtrInfo.mVolumeEmitXCount * 0x8000) / (emtrInfo.mDivNumber - 1) + 0x4000);
angle = (f32)angleNo * mVolumeSweep + 32768.0f;
@@ -86,7 +86,7 @@ void JPABaseEmitter::calcVolumeSphere() {
}
f32 rad = getRandomF();
if (checkEmDataFlag(0x01)) {
if (checkEmDataFlag(JPADynFlag_FixedDensity)) {
rad = 1.0f - rad * rad * rad;
}
rad = emtrInfo.mVolumeSize * (mVolumeMinRad + rad * (1.0f - mVolumeMinRad));
@@ -104,7 +104,7 @@ void JPABaseEmitter::calcVolumeSphere() {
void JPABaseEmitter::calcVolumeCylinder() {
s16 angle = mVolumeSweep * getRandomSS();
f32 rad = getRandomF();
if (checkEmDataFlag(0x01))
if (checkEmDataFlag(JPADynFlag_FixedDensity))
rad = 1.0f - rad * rad;
rad = emtrInfo.mVolumeSize * (mVolumeMinRad + rad * (1.0f - mVolumeMinRad));
@@ -249,7 +249,7 @@ void JPABaseEmitter::calc() {
void JPABaseEmitter::calcCreatePtcls() {
if (checkStatus(JPAEmtrStts_RateStepEmit)) {
s32 emitCount = 0;
if (checkEmDataFlag(0x02)) { // Fixed interval
if (checkEmDataFlag(JPADynFlag_FixedInterval)) {
emitCount = (mVolumeType == 1) ?
(mDivNumber + 1) * (mDivNumber - 1) * 4 + 6 : // Sphere
mDivNumber;
@@ -319,20 +319,20 @@ void JPABaseEmitter::calcParticle() {
JSULink<JPABaseParticle> * next = link->getNext();
JPABaseParticle * ptcl = (JPABaseParticle *) link->getObjectPtr();
ptcl->incFrame();
if (!ptcl->checkStatus(0x80)) {
if (!ptcl->checkStatus(JPAPtclStts_UNK_80)) {
ptcl->calcVelocity();
ptcl->calcCB(this);
if (!ptcl->checkStatus(0x02)) {
if (!ptcl->checkStatus(JPAPtclStts_Delete)) {
mDraw.calcParticle(ptcl);
if (getEmitterDataBlockInfoPtr()->getSweepShape() != NULL && ptcl->checkCreateChild())
createChildren(ptcl);
ptcl->calcPosition();
}
} else {
ptcl->setStatus(0x02);
ptcl->setStatus(JPAPtclStts_Delete);
}
if (ptcl->checkStatus(0x02))
if (ptcl->checkStatus(JPAPtclStts_Delete))
deleteParticle(ptcl, &mActiveParticles);
link = next;
@@ -345,19 +345,19 @@ void JPABaseEmitter::calcChild() {
JSULink<JPABaseParticle> * next = link->getNext();
JPABaseParticle * ptcl = (JPABaseParticle *) link->getObjectPtr();
ptcl->incFrame();
if (!ptcl->checkStatus(0x80)) {
if (!ptcl->checkStatus(JPAPtclStts_UNK_80)) {
if (ptcl->getAge() != 0)
ptcl->calcVelocity();
ptcl->calcCB(this);
if (!ptcl->checkStatus(0x02)) {
if (!ptcl->checkStatus(JPAPtclStts_Delete)) {
mDraw.calcChild(ptcl);
ptcl->calcPosition();
}
} else {
ptcl->setStatus(0x02);
ptcl->setStatus(JPAPtclStts_Delete);
}
if (ptcl->checkStatus(0x02))
if (ptcl->checkStatus(JPAPtclStts_Delete))
deleteParticle(ptcl, &mChildParticles);
link = next;
+10 -9
View File
@@ -4,6 +4,7 @@
//
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPADynamicsBlock.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPASweepShape.h"
#include "dolphin/mtx/mtxvec.h"
@@ -23,8 +24,8 @@ void JPABaseParticle::initParticle() {
mFieldDrag = 1.0f;
mDrag = 1.0f;
MTXMultVec(emtrInfo.mEmitterGlobalSR, emtrInfo.mVolumePos, mLocalPosition);
if ((emtr->mDataFlag & 0x08) != 0)
setStatus(0x20);
if ((emtr->mDataFlag & JPADynFlag_FollowEmtr) != 0)
setStatus(JPAPtclStts_UNK_20);
mOffsetPosition.set(emtrInfo.mEmitterGlobalCenter);
@@ -69,7 +70,7 @@ void JPABaseParticle::initParticle() {
velRatio * (velOmni.z + velAxis.z + velDir.z + velRndm.z)
);
if (emtr->checkEmDataFlag(0x04))
if (emtr->checkEmDataFlag(JPADynFlag_InheritScale))
mBaseVel.mul(emtr->mEmitterScale);
MTXMultVec(emtrInfo.mEmitterGlobalRot, mBaseVel, mBaseVel);
@@ -106,7 +107,7 @@ void JPABaseParticle::initChild(JPABaseParticle* parent) {
initStatus(JPAPtclStts_FirstFrame | JPAPtlcStts_Child);
if (!sweep->isEnableField()) {
setStatus(0x40);
setStatus(JPAPtclStts_UNK_40);
mFieldDrag = 1.0f;
mDrag = 1.0f;
} else {
@@ -139,8 +140,8 @@ void JPABaseParticle::initChild(JPABaseParticle* parent) {
vel.z = (mBaseVel.z + mFieldVel.z) * velScale;
mVelocity = vel;
if (emtr->checkEmDataFlag(0x10))
setStatus(0x20);
if (emtr->checkEmDataFlag(JPADynFlag_FollowEmtrChld))
setStatus(JPAPtclStts_UNK_20);
mOffsetPosition.set(parent->mOffsetPosition);
mLocalPosition.set(parent->mLocalPosition);
@@ -167,7 +168,7 @@ void JPABaseParticle::incFrame() {
if (mCurFrame >= mLifeTime) {
mCurNormTime = 1.0f;
setStatus(0x02); // setDeleteParticleFlag?
setStatus(JPAPtclStts_Delete);
} else {
mCurNormTime = mCurFrame / mLifeTime;
}
@@ -176,10 +177,10 @@ void JPABaseParticle::incFrame() {
/* 8025EB90-8025ECE8 .text calcVelocity__15JPABaseParticleFv */
void JPABaseParticle::calcVelocity() {
mFieldVel.zero();
if (checkStatus(0x20))
if (checkStatus(JPAPtclStts_UNK_20))
mOffsetPosition.set(JPABaseEmitter::emtrInfo.mEmitterGlobalCenter);
mBaseVel.add(mAccel);
if (!checkStatus(0x40))
if (!checkStatus(JPAPtclStts_UNK_40))
JPABaseEmitter::emtrInfo.mpCurEmitter->mFieldManager.calc(this);
mFieldVel.add(mFieldAccel);