From 1c93c48ccf55c29be052444fe299d14afa1ca052 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 11 Aug 2025 17:51:49 -0400 Subject: [PATCH] JPA small cleanup --- include/JSystem/JParticle/JPABaseShape.h | 2 +- include/JSystem/JParticle/JPADynamicsBlock.h | 14 +++++++-- include/JSystem/JParticle/JPAExTexShape.h | 10 +++--- include/JSystem/JParticle/JPAExtraShape.h | 32 ++++++++++---------- include/JSystem/JParticle/JPAFieldBlock.h | 8 ++--- include/JSystem/JParticle/JPAParticle.h | 7 ++++- include/JSystem/JParticle/JPASweepShape.h | 30 +++++++++--------- src/JSystem/JParticle/JPAEmitter.cpp | 30 +++++++++--------- src/JSystem/JParticle/JPAParticle.cpp | 19 ++++++------ 9 files changed, 83 insertions(+), 69 deletions(-) diff --git a/include/JSystem/JParticle/JPABaseShape.h b/include/JSystem/JParticle/JPABaseShape.h index fff638f02..619b557fd 100644 --- a/include/JSystem/JParticle/JPABaseShape.h +++ b/include/JSystem/JParticle/JPABaseShape.h @@ -131,7 +131,7 @@ struct JPABaseShapeData { /* 0x48 */ f32 mTexScrollScaleX; /* 0x4c */ f32 mTexScrollScaleY; /* 0x50 */ f32 mTexScrollRotate; -}; +}; // Size: 0x54 class JPABaseShapeArc : public JPABaseShape { public: diff --git a/include/JSystem/JParticle/JPADynamicsBlock.h b/include/JSystem/JParticle/JPADynamicsBlock.h index da0240982..25f3a7fc1 100644 --- a/include/JSystem/JParticle/JPADynamicsBlock.h +++ b/include/JSystem/JParticle/JPADynamicsBlock.h @@ -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 mEmitterTrs; /* 0x6C */ JGeometry::TVec3 mEmitterDir; /* 0x78 */ JGeometry::TVec3 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& out) { out.set(mpData->mEmitterScl.x, mpData->mEmitterScl.y, mpData->mEmitterScl.z); } virtual void getEmitterRot(JGeometry::TVec3& out) { out.set(mpData->mEmitterRot.x, mpData->mEmitterRot.y, mpData->mEmitterRot.z); } virtual void getEmitterTrs(JGeometry::TVec3& out) { out.set(mpData->mEmitterTrs.x, mpData->mEmitterTrs.y, mpData->mEmitterTrs.z); } virtual void getEmitterDir(JGeometry::TVec3& 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; } diff --git a/include/JSystem/JParticle/JPAExTexShape.h b/include/JSystem/JParticle/JPAExTexShape.h index c0c641324..273501998 100644 --- a/include/JSystem/JParticle/JPAExTexShape.h +++ b/include/JSystem/JParticle/JPAExTexShape.h @@ -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: diff --git a/include/JSystem/JParticle/JPAExtraShape.h b/include/JSystem/JParticle/JPAExtraShape.h index 515ae42e1..f831fb862 100644 --- a/include/JSystem/JParticle/JPAExtraShape.h +++ b/include/JSystem/JParticle/JPAExtraShape.h @@ -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; } diff --git a/include/JSystem/JParticle/JPAFieldBlock.h b/include/JSystem/JParticle/JPAFieldBlock.h index 54e17c251..1d8bbb8e6 100644 --- a/include/JSystem/JParticle/JPAFieldBlock.h +++ b/include/JSystem/JParticle/JPAFieldBlock.h @@ -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& out) { out = mpData->mPos; }; diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index bf08ef102..1fb151e6e 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -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 mLink; diff --git a/include/JSystem/JParticle/JPASweepShape.h b/include/JSystem/JParticle/JPASweepShape.h index 4b2de54ed..5df6392d0 100644 --- a/include/JSystem/JParticle/JPASweepShape.h +++ b/include/JSystem/JParticle/JPASweepShape.h @@ -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; } diff --git a/src/JSystem/JParticle/JPAEmitter.cpp b/src/JSystem/JParticle/JPAEmitter.cpp index 1fa1a52c5..ba49760fd 100644 --- a/src/JSystem/JParticle/JPAEmitter.cpp +++ b/src/JSystem/JParticle/JPAEmitter.cpp @@ -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 * 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 * 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; diff --git a/src/JSystem/JParticle/JPAParticle.cpp b/src/JSystem/JParticle/JPAParticle.cpp index d280db922..a025de1df 100644 --- a/src/JSystem/JParticle/JPAParticle.cpp +++ b/src/JSystem/JParticle/JPAParticle.cpp @@ -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);