diff options
| author | robojumper <robojumper@gmail.com> | 2026-05-07 21:23:47 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-07 21:23:47 +0200 |
| commit | f7b4c029fd5176e817e3de7209727480c445a3d2 (patch) | |
| tree | 9cddc9fa36ec13e7dac76c54d74257c61fe20b47 /include/JSystem | |
| parent | ddb116187922a3f73ae3c97a136f499b7d724a2c (diff) | |
| parent | f4d163797f3c21e5a705b75043e0a8fbe7dc2460 (diff) | |
Merge pull request #313 from robojumper/vec-mtx-cleanup
Cleanup
Diffstat (limited to 'include/JSystem')
| -rw-r--r-- | include/JSystem/JParticle/JPABaseShape.h | 120 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAChildShape.h | 1 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPADrawInfo.h | 6 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPADynamicsBlock.h | 38 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAEmitter.h | 46 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAEmitterManager.h | 9 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAExTexShape.h | 7 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAExtraShape.h | 4 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAFieldBlock.h | 40 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAKeyBlock.h | 5 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAList.h | 16 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAParticle.h | 14 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAResource.h | 34 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAResourceManager.h | 14 |
14 files changed, 189 insertions, 165 deletions
diff --git a/include/JSystem/JParticle/JPABaseShape.h b/include/JSystem/JParticle/JPABaseShape.h index 66ec3fa9..2b6e125e 100644 --- a/include/JSystem/JParticle/JPABaseShape.h +++ b/include/JSystem/JParticle/JPABaseShape.h @@ -28,18 +28,18 @@ struct JPABaseShapeData { /* 0x1C */ u8 mAlphaRef1; /* 0x1D */ u8 mZModeCfg; /* 0x1E */ u8 mTexFlg; - /* 0x1F */ u8 mTexAnmNum; + /* 0x1F */ u8 texAnmKeyNum; /* 0x20 */ u8 mTexIdx; /* 0x21 */ u8 mClrFlg; - /* 0x22 */ u8 mClrPrmKeyNum; - /* 0x23 */ u8 mClrEnvKeyNum; + /* 0x22 */ u8 prmAnmKeyNum; + /* 0x23 */ u8 envAnmKeyNum; /* 0x24 */ s16 mClrAnmFrmMax; /* 0x26 */ GXColor mClrPrm; /* 0x2A */ GXColor mClrEnv; /* 0x2E */ u8 mAnmRndm; /* 0x2F */ u8 mClrAnmRndmMask; /* 0x30 */ u8 mTexAnmRndmMask; -}; +}; // Size: 0x34 struct JPABaseShapeAlphaArg { GXTevAlphaArg mArg[4]; @@ -64,62 +64,62 @@ public: static GXTevColorArg st_ca[6][4]; static JPABaseShapeAlphaArg st_aa[5]; - GXBlendMode getBlendMode() const { return st_bm[mpData->mBlendModeCfg & 0x03]; } - GXBlendFactor getBlendSrc() const { return st_bf[(mpData->mBlendModeCfg >> 2) & 0x0F]; } - GXBlendFactor getBlendDst() const { return st_bf[(mpData->mBlendModeCfg >> 6) & 0x0F]; } - GXLogicOp getLogicOp() const { return st_lo[(mpData->mBlendModeCfg >> 10) & 0x0F]; } - GXBool getZCompLoc() const { return (GXBool)((mpData->mZModeCfg >> 5) & 0x01); } - - GXBool getZEnable() const { return (GXBool)(mpData->mZModeCfg & 0x01); } - GXCompare getZCmp() const { return st_c[(mpData->mZModeCfg >> 1) & 0x07]; } - GXBool getZUpd() const { return (GXBool)((mpData->mZModeCfg >> 4) & 0x01); } - - GXCompare getAlphaCmp0() const { return st_c[mpData->mAlphaCompareCfg & 0x07]; } - u8 getAlphaRef0() const { return mpData->mAlphaRef0; } - GXAlphaOp getAlphaOp() const { return st_ao[(mpData->mAlphaCompareCfg >> 3) & 0x03]; } - GXCompare getAlphaCmp1() const { return st_c[(mpData->mAlphaCompareCfg >> 5) & 0x07]; } - u8 getAlphaRef1() const { return mpData->mAlphaRef1; } - - const GXTevColorArg* getTevColorArg() const { return st_ca[(mpData->mFlags >> 0x0F) & 0x07]; } - const JPABaseShapeAlphaArg* getTevAlphaArg() const { return &st_aa[(mpData->mFlags >> 0x12) & 0x07]; } - - u32 getType() const { return (mpData->mFlags >> 0) & 0x0F; } - u32 getDirType() const { return (mpData->mFlags >> 4) & 0x07; } - u32 getRotType() const { return (mpData->mFlags >> 7) & 0x07; } - u32 getBasePlaneType() const { return (mpData->mFlags >> 10) & 0x01; } - u32 getTilingS() const { return (mpData->mFlags >> 27) & 0x01; } // was 25 - u32 getTilingT() const { return (mpData->mFlags >> 28) & 0x01; } // was 26 - BOOL isGlblClrAnm() const { return mpData->mFlags & 0x00001000; } - BOOL isGlblTexAnm() const { return mpData->mFlags & 0x00004000; } - BOOL isPrjTex() const { return mpData->mFlags & 0x00400000; } // was 0x00100000 - bool isDrawFwdAhead() const { return !!(mpData->mFlags & 0x00800000); } // was 0x00200000 - bool isDrawPrntAhead() const { return !!(mpData->mFlags & 0x01000000); } // was 0x00400000 - BOOL isClipOn() const { return (mpData->mFlags & 0x02000000); } // was 0x00800000 - BOOL isTexCrdAnm() const { return mpData->mFlags & 0x04000000; } // was 0x01000000 - bool isNoDrawParent() const { return !!((mpData->mFlags >> 29) & 1); } // was 0x08000000 - bool isNoDrawChild() const { return !!((mpData->mFlags >> 30) & 1); } // was 0x10000000 - - BOOL isPrmAnm() const { return mpData->mClrFlg & 0x02; } - BOOL isEnvAnm() const { return mpData->mClrFlg & 0x08; } - u8 getClrAnmType() const { return (mpData->mClrFlg >> 4) & 0x07; } - s16 getClrAnmMaxFrm() const { return mpData->mClrAnmFrmMax; } - void getPrmClr(GXColor* dst) { *dst = mpData->mClrPrm; } - void getPrmClr(s16 idx, GXColor* dst) { *dst = mpPrmClrAnmTbl[idx]; } - void getEnvClr(GXColor* dst) { *dst = mpData->mClrEnv; } - void getEnvClr(s16 idx, GXColor* dst) { *dst = mpEnvClrAnmTbl[idx]; } - - BOOL isTexAnm() const { return mpData->mTexFlg & 0x01; } - u8 getTexAnmType() const { return (mpData->mTexFlg >> 2) & 0x07; } - u32 getTexIdx() const { return mpData->mTexIdx; } + GXBlendMode getBlendMode() const { return st_bm[pBsd->mBlendModeCfg & 0x03]; } + GXBlendFactor getBlendSrc() const { return st_bf[(pBsd->mBlendModeCfg >> 2) & 0x0F]; } + GXBlendFactor getBlendDst() const { return st_bf[(pBsd->mBlendModeCfg >> 6) & 0x0F]; } + GXLogicOp getLogicOp() const { return st_lo[(pBsd->mBlendModeCfg >> 10) & 0x0F]; } + GXBool getZCompLoc() const { return (GXBool)((pBsd->mZModeCfg >> 5) & 0x01); } + + GXBool getZEnable() const { return (GXBool)(pBsd->mZModeCfg & 0x01); } + GXCompare getZCmp() const { return st_c[(pBsd->mZModeCfg >> 1) & 0x07]; } + GXBool getZUpd() const { return (GXBool)((pBsd->mZModeCfg >> 4) & 0x01); } + + GXCompare getAlphaCmp0() const { return st_c[pBsd->mAlphaCompareCfg & 0x07]; } + u8 getAlphaRef0() const { return pBsd->mAlphaRef0; } + GXAlphaOp getAlphaOp() const { return st_ao[(pBsd->mAlphaCompareCfg >> 3) & 0x03]; } + GXCompare getAlphaCmp1() const { return st_c[(pBsd->mAlphaCompareCfg >> 5) & 0x07]; } + u8 getAlphaRef1() const { return pBsd->mAlphaRef1; } + + const GXTevColorArg* getTevColorArg() const { return st_ca[(pBsd->mFlags >> 0x0F) & 0x07]; } + const JPABaseShapeAlphaArg* getTevAlphaArg() const { return &st_aa[(pBsd->mFlags >> 0x12) & 0x07]; } + + u32 getType() const { return (pBsd->mFlags >> 0) & 0x0F; } + u32 getDirType() const { return (pBsd->mFlags >> 4) & 0x07; } + u32 getRotType() const { return (pBsd->mFlags >> 7) & 0x07; } + u32 getBasePlaneType() const { return (pBsd->mFlags >> 10) & 0x01; } + u32 getTilingS() const { return (pBsd->mFlags >> 27) & 0x01; } // was 25 + u32 getTilingT() const { return (pBsd->mFlags >> 28) & 0x01; } // was 26 + BOOL isGlblClrAnm() const { return pBsd->mFlags & 0x00001000; } + BOOL isGlblTexAnm() const { return pBsd->mFlags & 0x00004000; } + BOOL isPrjTex() const { return pBsd->mFlags & 0x00400000; } // was 0x00100000 + BOOL isDrawFwdAhead() const { return pBsd->mFlags & 0x00800000; } // was 0x00200000 + BOOL isDrawPrntAhead() const { return pBsd->mFlags & 0x01000000; } // was 0x00400000 + BOOL isClipOn() const { return pBsd->mFlags & 0x02000000; } // was 0x00800000 + BOOL isTexCrdAnm() const { return pBsd->mFlags & 0x04000000; } // was 0x01000000 + BOOL isNoDrawParent() const { return pBsd->mFlags >> 29 & 1; } // was 0x08000000 + BOOL isNoDrawChild() const { return pBsd->mFlags >> 30 & 1; } // was 0x10000000 + + BOOL isPrmAnm() const { return pBsd->mClrFlg & 0x02; } + BOOL isEnvAnm() const { return pBsd->mClrFlg & 0x08; } + u32 getClrAnmType() const { return (pBsd->mClrFlg >> 4) & 0x07; } + s16 getClrAnmMaxFrm() const { return pBsd->mClrAnmFrmMax; } + void getPrmClr(GXColor* dst) const { *dst = pBsd->mClrPrm; } + void getPrmClr(s16 idx, GXColor* dst) const { *dst = mpPrmClrAnmTbl[idx]; } + void getEnvClr(GXColor* dst) const { *dst = pBsd->mClrEnv; } + void getEnvClr(s16 idx, GXColor* dst) const { *dst = mpEnvClrAnmTbl[idx]; } + + BOOL isTexAnm() const { return pBsd->mTexFlg & 0x01; } + u32 getTexAnmType() const { return (pBsd->mTexFlg >> 2) & 0x07; } + u8 getTexIdx() const { return pBsd->mTexIdx; } u8 getTexIdx(u8 idx) const { return mpTexIdxAnimTbl[idx]; } - f32 getBaseSizeX() const { return mpData->mBaseSizeX; } - f32 getBaseSizeY() const { return mpData->mBaseSizeY; } - u8 getClrLoopOfstMask() const { return mpData->mClrAnmRndmMask; } - u32 getClrLoopOfst(u32 param_1) const { return getClrLoopOfstMask() & param_1; } - u8 getTexLoopOfstMask() const { return mpData->mTexAnmRndmMask; } - u32 getTexLoopOfst(u8 param_1) const { return getTexLoopOfstMask() & param_1; } - u8 getLoopOfstValue() const { return mpData->mAnmRndm; } + f32 getBaseSizeX() const { return pBsd->mBaseSizeX; } + f32 getBaseSizeY() const { return pBsd->mBaseSizeY; } + u8 getClrLoopOfstMask() const { return pBsd->mClrAnmRndmMask; } + s32 getClrLoopOfst(u8 param_1) const { return getClrLoopOfstMask() & param_1; } + u8 getTexLoopOfstMask() const { return pBsd->mTexAnmRndmMask; } + s32 getTexLoopOfst(u8 param_1) const { return getTexLoopOfstMask() & param_1; } + u8 getLoopOfstValue() const { return pBsd->mAnmRndm; } f32 getIncTransX() const { return ((f32*)mpTexCrdMtxAnmTbl)[5]; } f32 getInitTransX() const { return ((f32*)mpTexCrdMtxAnmTbl)[0]; } @@ -131,10 +131,10 @@ public: f32 getInitScaleY() const { return ((f32*)mpTexCrdMtxAnmTbl)[3]; } f32 getIncRot() const { return ((f32*)mpTexCrdMtxAnmTbl)[9]; } f32 getInitRot() const { return ((f32*)mpTexCrdMtxAnmTbl)[4]; } - u8 getTexAnmKeyNum() const { return mpData->mTexAnmNum; } + u8 getTexAnmKeyNum() const { return pBsd->texAnmKeyNum; } public: - /* 0x00 */ const JPABaseShapeData* mpData; + /* 0x00 */ const JPABaseShapeData* pBsd; /* 0x04 */ const void* mpTexCrdMtxAnmTbl; /* 0x08 */ const u8* mpTexIdxAnimTbl; /* 0x0C */ GXColor* mpPrmClrAnmTbl; diff --git a/include/JSystem/JParticle/JPAChildShape.h b/include/JSystem/JParticle/JPAChildShape.h index f408274a..99302187 100644 --- a/include/JSystem/JParticle/JPAChildShape.h +++ b/include/JSystem/JParticle/JPAChildShape.h @@ -82,6 +82,7 @@ public: /* 0x00 */ const JPAChildShapeData* mpData; }; +// SS addition void fn_8031DBA0(JPAEmitterWorkData*); void JPARegistChildPrmEnv(JPAEmitterWorkData*); diff --git a/include/JSystem/JParticle/JPADrawInfo.h b/include/JSystem/JParticle/JPADrawInfo.h index ed269d7f..d964e932 100644 --- a/include/JSystem/JParticle/JPADrawInfo.h +++ b/include/JSystem/JParticle/JPADrawInfo.h @@ -11,12 +11,12 @@ class JPADrawInfo { public: JPADrawInfo() {} - JPADrawInfo(Mtx param_0, f32 fovY, f32 aspect) { + JPADrawInfo(const Mtx param_0, f32 fovY, f32 aspect) { MTXCopy(param_0, mCamMtx); C_MTXLightPerspective(mPrjMtx, fovY, aspect, 0.5f, -0.5f, 0.5f, 0.5f); } - JPADrawInfo(Mtx param_0, f32 top, f32 bottom, f32 left, f32 right) { + JPADrawInfo(const Mtx param_0, f32 top, f32 bottom, f32 left, f32 right) { MTXCopy(param_0, mCamMtx); C_MTXLightOrtho(mPrjMtx, top, bottom, left, right, 0.5f, 0.5f, 0.5f, 0.5f); } @@ -26,6 +26,8 @@ public: void getCamMtx(Mtx dst) const { MTXCopy(mCamMtx, dst); } void getPrjMtx(Mtx dst) const { MTXCopy(mPrjMtx, dst); } + + void setPrjMtx(const Mtx src) { MTXCopy(src, mPrjMtx); } }; #endif diff --git a/include/JSystem/JParticle/JPADynamicsBlock.h b/include/JSystem/JParticle/JPADynamicsBlock.h index 5dd4e880..9e147da3 100644 --- a/include/JSystem/JParticle/JPADynamicsBlock.h +++ b/include/JSystem/JParticle/JPADynamicsBlock.h @@ -6,8 +6,7 @@ #include "egg/math/eggVector.h" #include "m/m_angle.h" - -class JPAEmitterWorkData; +struct JPAEmitterWorkData; /** * @ingroup jsystem-jparticle @@ -43,8 +42,7 @@ struct JPADynamicsBlockData { /* 0x74 */ u16 mVolumeSize; /* 0x76 */ u16 mDivNumber; /* 0x78 */ u8 mRateStep; - /* 0x7C */ u32 field_0x7c; -}; +}; // Size: 0x7C typedef void (*JPADynamicsCalcVolumeFunc)(JPAEmitterWorkData*); @@ -66,7 +64,7 @@ public: void init(); void create(JPAEmitterWorkData*); - void calc(JPAEmitterWorkData* work) { mpCalcVolumeFunc(work); } + void calc(JPAEmitterWorkData* work) const { mpCalcVolumeFunc(work); } s16 getStartFrame() const { return mpData->mStartFrame; } u32 getResUserWork() const { return mpData->mResUserWork; } @@ -83,23 +81,23 @@ public: void getEmitterDir(EGG::Vector3f* vec) const { vec->set(mpData->mEmitterDir.x, mpData->mEmitterDir.y, mpData->mEmitterDir.z); } - void getEmitterRot(mAng3_c* vec) const { + void getEmitterRot(mAng3_c* vec) const { vec->set(mpData->mEmitterRot); - } - s16 getMaxFrame() { return mpData->mMaxFrame; } - s16 getLifetime() { return mpData->mLifeTime; } - u16 getVolumeSize() { return mpData->mVolumeSize; } - f32 getRate() { return mpData->mRate; } - u8 getRateStep() { return mpData->mRateStep; } - f32 getVolumeSweep() { return mpData->mVolumeSweep; } - f32 getVolumeMinRad() { return mpData->mVolumeMinRad; } - f32 getInitVelOmni() { return mpData->mInitialVelOmni; } - f32 getInitVelAxis() { return mpData->mInitialVelAxis; } - f32 getInitVelDir() { return mpData->mInitialVelDir; } - f32 getInitVelDirSp() { return mpData->mSpread; } - f32 getInitVelRndm() { return mpData->mInitialVelRndm; } + } + s16 getMaxFrame() const { return mpData->mMaxFrame; } + s16 getLifetime() const { return mpData->mLifeTime; } + u16 getVolumeSize() const { return mpData->mVolumeSize; } + f32 getRate() const { return mpData->mRate; } + u8 getRateStep() const { return mpData->mRateStep; } + f32 getVolumeSweep() const { return mpData->mVolumeSweep; } + f32 getVolumeMinRad() const { return mpData->mVolumeMinRad; } + f32 getInitVelOmni() const { return mpData->mInitialVelOmni; } + f32 getInitVelAxis() const { return mpData->mInitialVelAxis; } + f32 getInitVelDir() const { return mpData->mInitialVelDir; } + f32 getInitVelDirSp() const { return mpData->mSpread; } + f32 getInitVelRndm() const { return mpData->mInitialVelRndm; } f32 getInitVelRatio() const { return mpData->mInitialVelRatio; } - f32 getAirRes() { return mpData->mAirResist; } + f32 getAirRes() const { return mpData->mAirResist; } f32 getLifetimeRndm() const { return mpData->mLifeTimeRndm; } f32 getMomentRndm() const { return mpData->mMoment; } diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index 678e327b..807c2d96 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -81,8 +81,6 @@ public: virtual void executeAfter(JPABaseEmitter*) {} virtual void draw(JPABaseEmitter*) {} virtual void drawAfter(JPABaseEmitter*) {} - - //~JPAEmitterCallBack(); }; enum { @@ -119,11 +117,12 @@ public: void setStatus(u32 status) { mStatus |= status; } void clearStatus(u32 status) { mStatus &= ~status; } u32 checkStatus(u32 status) const { return (mStatus & status); } - bool checkFlag(u32 flag) const { return !!(mpRes->getDyn()->getFlag() & flag); } - u32 getDynResUserWork() const { return mpRes->getDyn()->getResUserWork(); } + u32 checkFlag(u32 flag) const { return pRes->getDyn()->getFlag() & flag; } + u32 getDynResUserWork() const { return pRes->getDyn()->getResUserWork(); } u8 getResourceManagerID() const { return mResMgrID; } u8 getGroupID() const { return mGroupID; } u8 getDrawTimes() const { return mDrawTimes; } + f32 getRate() const { return mRate; } void setRate(f32 rate) { mRate = rate; } void setDirectionalSpeed(f32 i_speed) { mDirSpeed = i_speed; } void setRandomDirectionSpeed(f32 i_speed) { mRndmDirSpeed = i_speed; } @@ -131,21 +130,22 @@ public: void setGlobalRTMatrix(const Mtx m) { JPASetRMtxTVecfromMtx(m, mGlobalRot, &mGlobalTrs); } void setGlobalSRTMatrix(const Mtx m) { JPASetRMtxSTVecfromMtx(m, mGlobalRot, &mGlobalScl, &mGlobalTrs); - - // "set is used in TP debug" mGlobalPScl.set(mGlobalScl.x, mGlobalScl.y); } void setGlobalTranslation(f32 x, f32 y, f32 z) { mGlobalTrs.set(x, y, z); } void setGlobalTranslation(const EGG::Vector3f& trs) { mGlobalTrs.set(trs); } void getLocalTranslation(EGG::Vector3f& vec) { vec.set(mLocalTrs); } + void getLocalTranslation(EGG::Vector3f* vec) const { vec->set(mLocalTrs); } void setGlobalRotation(const mAng3_c& rot) { JPAGetXYZRotateMtx(rot.x, rot.y, rot.z, mGlobalRot); } void getGlobalTranslation(EGG::Vector3f* out) const { out->set(mGlobalTrs); } void setGlobalDynamicsScale(const EGG::Vector3f& i_scale) { mGlobalScl.set(i_scale); } + void getGlobalDynamicsScale(EGG::Vector3f* i_scale) const { i_scale->set(mGlobalScl); } void setGlobalAlpha(u8 alpha) { mGlobalPrmClr.a = alpha; } - u8 getGlobalAlpha() { return mGlobalPrmClr.a; } + u8 getGlobalAlpha() const { return mGlobalPrmClr.a; } void getGlobalPrmColor(GXColor& color) { color = mGlobalPrmClr; } + void getGlobalPrmColor(GXColor* color) const { *color = mGlobalPrmClr; } void setGlobalPrmColor(u8 r, u8 g, u8 b) { mGlobalPrmClr.r = r; mGlobalPrmClr.g = g; mGlobalPrmClr.b = b; } void setGlobalEnvColor(u8 r, u8 g, u8 b) { mGlobalEnvClr.r = r; mGlobalEnvClr.g = g; mGlobalEnvClr.b = b; } void setVolumeSize(u16 size) { mVolumeSize = size; } @@ -154,21 +154,27 @@ public: void setAwayFromAxisSpeed(f32 i_speed) { mAwayFromAxisSpeed = i_speed; } void setSpread(f32 i_spread) { mSpread = i_spread; } void setLocalTranslation(const EGG::Vector3f& i_trans) { mLocalTrs.set(i_trans); } - void setLocalRotation(const mAng3_c& i_rot) { mLocalRot.set(i_rot.x * 0.005493248f, i_rot.y * 0.005493248f, i_rot.z * 0.005493248f); } + void setLocalRotation(const mAng3_c& i_rot) { + mLocalRot.set(i_rot.x * (360.0f / 0xffff), i_rot.y * (360.0f / 0xffff), + i_rot.z * (360.0f / 0xffff)); + } void setRateStep(u8 i_step) { mRateStep = i_step; } void setGlobalParticleHeightScale(f32 height) { mGlobalPScl.y = height; } void setGlobalParticleScale(const EGG::Vector3f& scale) { - mGlobalPScl.set(scale.x, scale.y); + mGlobalPScl.set((f32)scale.x, (f32)scale.y); } void setGlobalParticleScale(f32 scaleX, f32 scaleY) { mGlobalPScl.set(scaleX, scaleY); } - void getGlobalParticleScale(EGG::Vector3f& scale) { + void getGlobalParticleScale(EGG::Vector3f& scale) const { scale.set(mGlobalPScl.x, mGlobalPScl.y, 1.0f); } + void getGlobalParticleScale(EGG::Vector3f* scale) const { + scale->set(mGlobalPScl.x, mGlobalPScl.y, 1.0f); + } void setGlobalScale(const EGG::Vector3f& scale) { mGlobalScl.set(scale); mGlobalPScl.set(scale.x ,scale.y); @@ -214,20 +220,28 @@ public: void stopDrawParticle() { setStatus(JPAEmtrStts_StopDraw); } void playDrawParticle() { clearStatus(JPAEmtrStts_StopDraw); } - u32 getUserWork() { return mpUserWork; } - void setUserWork(u32 userWork) { mpUserWork = userWork; } - u32 getParticleNumber() { + uintptr_t getUserWork() const { return mpUserWork; } + void setUserWork(uintptr_t userWork) { mpUserWork = userWork; } + u32 getParticleNumber() const { return mAlivePtclBase.getNum() + mAlivePtclChld.getNum(); } - bool isEnableDeleteEmitter() { + bool isEnableDeleteEmitter() const { return checkStatus(JPAEmtrStts_EnableDeleteEmitter) && getParticleNumber() == 0; } void setDrawTimes(u8 drawTimes) { mDrawTimes = drawTimes; } void setParticleCallBackPtr(JPAParticleCallBack* cb) { mpPtclCallBack = cb; } - JPAParticleCallBack* getParticleCallBackPtr() { return mpPtclCallBack; } + JPAParticleCallBack* getParticleCallBackPtr() const { return mpPtclCallBack; } JPAEmitterCallBack* getEmitterCallBackPtr() const { return mpEmtrCallBack; } u32 getAge() const { return mTick; } + void setVolumeMiniRadius(f32 param_1) { + mVolumeMinRad = param_1; + } + + void setMaxFrame(s32 maxFrame) { + mMaxFrame = maxFrame; + } + public: /* 0x00 */ EGG::Vector3f mLocalScl; /* 0x0C */ EGG::Vector3f mLocalTrs; @@ -259,7 +273,7 @@ public: /* 0xD4 */ JPAList<JPABaseParticle> mAlivePtclChld; /* 0xE0 */ JPAList<JPABaseParticle>* mpPtclPool; /* 0xE4 */ JPAEmitterManager* mpEmtrMgr; - /* 0xE8 */ JPAResource* mpRes; + /* 0xE8 */ JPAResource* pRes; /* 0xEC */ JPAEmitterCallBack* mpEmtrCallBack; /* 0xF0 */ JPAParticleCallBack* mpPtclCallBack; /* 0xF4 */ u32 mStatus; diff --git a/include/JSystem/JParticle/JPAEmitterManager.h b/include/JSystem/JParticle/JPAEmitterManager.h index f2085e80..836ded4b 100644 --- a/include/JSystem/JParticle/JPAEmitterManager.h +++ b/include/JSystem/JParticle/JPAEmitterManager.h @@ -6,6 +6,7 @@ #include "JSystem/JParticle/JPAList.h" #include "JSystem/JParticle/JPADrawInfo.h" #include "JSystem/JSupport/JSUList.h" +#include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JGeometry.h" class JPAEmitterCallBack; @@ -36,7 +37,13 @@ public: void entryResourceManager(JPAResourceManager*, u8); void clearResourceManager(u8); void calcYBBCam(); - JPAResourceManager* getResourceManager(u16 idx) { return pResMgrAry[idx]; } + JPAResourceManager* getResourceManager(u16 idx) const { return pResMgrAry[idx]; } + JPAResourceManager* getResourceManager(u8 res_mgr_id) const { + JUT_ASSERT(147, res_mgr_id < ridMax); + return pResMgrAry[res_mgr_id]; + } + int getEmitterNumber() const { return emtrNum - mFreeEmtrList.getNumLinks(); } + int getParticleNumber() const { return ptclNum - mPtclPool.getNum(); } public: /* 0x00 */ JSUList<JPABaseEmitter>* pEmtrUseList; diff --git a/include/JSystem/JParticle/JPAExTexShape.h b/include/JSystem/JParticle/JPAExTexShape.h index 9fe22c72..ade243b3 100644 --- a/include/JSystem/JParticle/JPAExTexShape.h +++ b/include/JSystem/JParticle/JPAExTexShape.h @@ -4,7 +4,7 @@ #include "JSystem/JParticle/JPABaseShape.h" #include "common.h" -class JPAEmitterWorkData; +struct JPAEmitterWorkData; /** * @ingroup jsystem-jparticle @@ -31,7 +31,7 @@ struct JPAExTexShapeData { /* 0x4D */ s8 mExpScale; /* 0x4E */ s8 mIndTexIdx; /* 0x4F */ s8 mSecTexIdx; -}; +}; // Size: 0x50 /** * @ingroup jsystem-jparticle @@ -46,7 +46,7 @@ public: s8 getExpScale() const { return mpData->mExpScale; } u8 getIndTexIdx() const { return mpData->mIndTexIdx; } u8 getSecTexIdx() const { return mpData->mSecTexIdx; } - bool isUseIndirect() const { return !!(mpData->mFlags & 0x01); } + BOOL isUseIndirect() const { return !!(mpData->mFlags & 0x01); } BOOL isUseSecTex() const { return (mpData->mFlags & 0x0100); } f32 getField_0x24() const { return mpData->field_0x24; } @@ -62,6 +62,7 @@ public: public: const JPAExTexShapeData* mpData; + // SS addition void fn_8031DE80(const JPABaseShape *bsp, f32) const; }; diff --git a/include/JSystem/JParticle/JPAExtraShape.h b/include/JSystem/JParticle/JPAExtraShape.h index a567d768..376b91ca 100644 --- a/include/JSystem/JParticle/JPAExtraShape.h +++ b/include/JSystem/JParticle/JPAExtraShape.h @@ -3,7 +3,7 @@ #include "common.h" -class JPAEmitterWorkData; +struct JPAEmitterWorkData; class JPABaseParticle; /** @@ -38,7 +38,7 @@ struct JPAExtraShapeData { /* 0x54 */ f32 mRotateSpeed; /* 0x58 */ f32 mRotateSpeedRandom; /* 0x5C */ f32 mRotateDirection; -}; +}; // Size: 0x60 /** * @ingroup jsystem-jparticle diff --git a/include/JSystem/JParticle/JPAFieldBlock.h b/include/JSystem/JParticle/JPAFieldBlock.h index 108b8bf6..7ff67ae8 100644 --- a/include/JSystem/JParticle/JPAFieldBlock.h +++ b/include/JSystem/JParticle/JPAFieldBlock.h @@ -5,7 +5,7 @@ #include "egg/egg_types.h" #include "egg/math/eggVector.h" -class JPAEmitterWorkData; +struct JPAEmitterWorkData; class JPABaseParticle; class JPAFieldBlock; @@ -122,36 +122,36 @@ public: JPAFieldBlock(u8 const*, EGG::Heap*); void init(EGG::Heap*); - u32 getType() { return mpData->mFlags & 0xF; } - u32 getAddType() { return (mpData->mFlags >> 8) & 3; } - u32 getSttFlag() { return mpData->mFlags >> 16; } - bool checkStatus(u16 flag) { return flag & getSttFlag(); } + u32 getType() const { return mpData->mFlags & 0xF; } + u32 getAddType() const { return (mpData->mFlags >> 8) & 3; } + u32 getSttFlag() const { return mpData->mFlags >> 16; } + u32 checkStatus(u16 flag) { return flag & getSttFlag(); } f32 getMagRndm() const { return mpData->mMagRndm; } f32 getVal1() const { return mpData->mVal1; } - f32 getFadeInTime() { return mpData->mFadeInTime; } - f32 getFadeOutTime() { return mpData->mFadeOutTime; } - f32 getEnTime() { return mpData->mEnTime; } - f32 getDisTime() { return mpData->mDisTime; } - u8 getCycle() { return mpData->mCycle; } - f32 getFadeInRate() { return mFadeInRate; } - f32 getFadeOutRate() { return mFadeOutRate; } - EGG::Vector3f& getPos() { return mPos; } - EGG::Vector3f& getDir() { return mDir; } + f32 getFadeInTime() const { return mpData->mFadeInTime; } + f32 getFadeOutTime() const { return mpData->mFadeOutTime; } + f32 getEnTime() const { return mpData->mEnTime; } + f32 getDisTime() const { return mpData->mDisTime; } + u8 getCycle() const { return mpData->mCycle; } + f32 getFadeInRate() const { return mFadeInRate; } + f32 getFadeOutRate() const { return mFadeOutRate; } + const EGG::Vector3f& getPos() const { return mPos; } + const EGG::Vector3f& getDir() const { return mDir; } f32 getMag() const { return mMag; } - void getPosOrig(EGG::Vector3f* pos) { pos->set(mpData->mPos); } - void getDirOrig(EGG::Vector3f* dir) { dir->set(mpData->mDir); } - f32 getMagOrig() { return mpData->mMag; } + void getPosOrig(EGG::Vector3f* pos) const { pos->set(mpData->mPos); } + void getDirOrig(EGG::Vector3f* dir) const { dir->set(mpData->mDir); } + f32 getMagOrig() const { return mpData->mMag; } void initOpParam() { getPosOrig(&mPos); getDirOrig(&mDir); mMag = getMagOrig(); } - void prepare(JPAEmitterWorkData* work) { mpField->prepare(work, this); } - void calc(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { mpField->calc(work, this, ptcl); } + void prepare(JPAEmitterWorkData* work) { pFld->prepare(work, this); } + void calc(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { pFld->calc(work, this, ptcl); } private: /* 0x00 */ const JPAFieldBlockData* mpData; - /* 0x04 */ JPAFieldBase* mpField; + /* 0x04 */ JPAFieldBase* pFld; /* 0x08 */ f32 mFadeInRate; /* 0x0C */ f32 mFadeOutRate; /* 0x10 */ EGG::Vector3f mPos; diff --git a/include/JSystem/JParticle/JPAKeyBlock.h b/include/JSystem/JParticle/JPAKeyBlock.h index 005dc6c1..bee15e17 100644 --- a/include/JSystem/JParticle/JPAKeyBlock.h +++ b/include/JSystem/JParticle/JPAKeyBlock.h @@ -11,7 +11,10 @@ struct JPAKeyBlock { JPAKeyBlock(u8 const*); f32 calc(f32); - u8 getID() { return mDataStart[8]; } + u8 getID() const { return mDataStart[8]; } + u8 getKeyNum() const { return mDataStart[9]; } + BOOL isLoop() const { return mDataStart[11]; } + const f32* getKeyData() const { return field_0x4; } const u8* mDataStart; const f32* field_0x4; diff --git a/include/JSystem/JParticle/JPAList.h b/include/JSystem/JParticle/JPAList.h index 287fdb75..e4583b4c 100644 --- a/include/JSystem/JParticle/JPAList.h +++ b/include/JSystem/JParticle/JPAList.h @@ -12,8 +12,8 @@ struct JPANode { JPANode() : mpPrev(NULL), mpNext(NULL) { } ~JPANode() {} - JPANode<T>* getPrev() { return mpPrev; } - JPANode<T>* getNext() { return mpNext; } + JPANode<T>* getPrev() const { return mpPrev; } + JPANode<T>* getNext() const { return mpNext; } T* getObject() { return &mData; } /* 0x00 */ JPANode<T>* mpPrev; @@ -48,8 +48,7 @@ struct JPAList { } else { mpLast = node; mpFirst = node; - node->mpPrev = NULL; - node->mpNext = NULL; + node->mpNext = node->mpPrev = NULL; } mNum++; @@ -75,8 +74,7 @@ struct JPAList { if (mNum == 1) { ret = mpFirst; - mpLast = NULL; - mpFirst = NULL; + mpFirst = mpLast = NULL; mNum--; } else if (mNum) { ret = mpFirst; @@ -93,8 +91,7 @@ struct JPAList { if (mNum == 1) { ret = mpLast; - mpLast = NULL; - mpFirst = NULL; + mpFirst = mpLast = NULL; mNum--; } else if (mNum) { ret = mpLast; @@ -120,8 +117,7 @@ struct JPAList { mpLast = node->mpPrev; mNum--; } else { - mpLast = NULL; - mpFirst = NULL; + mpFirst = mpLast = NULL; mNum--; } return node; diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index b0430430..9ba15797 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -27,22 +27,24 @@ public: bool canCreateChild(JPAEmitterWorkData*); f32 getWidth(JPABaseEmitter const*) const; f32 getHeight(JPABaseEmitter const*) const; - int getAge() { return mAge; } + int getAge() const { return mAge; } void setOffsetPosition(const EGG::Vector3f& pos) { mOffsetPosition.set(pos); } void setOffsetPosition(f32 x, f32 y, f32 z) { mOffsetPosition.set(x, y, z); } void getOffsetPosition(EGG::Vector3f& pos) { pos.set(mOffsetPosition); } - s16 getRotateAngle() const { return mRotateAngle; } - void getGlobalPosition(EGG::Vector3f& pos) const { pos.set(mPosition); } + void getOffsetPosition(EGG::Vector3f* pos) const { pos->set(mOffsetPosition); } + u16 getRotateAngle() const { return mRotateAngle; } + void getGlobalPosition(EGG::Vector3f* pos) const { pos->set(mPosition); } f32 getParticleScaleX() const { return mParticleScaleX; } f32 getParticleScaleY() const { return mParticleScaleY; } void setStatus(u32 flag) { mStatus |= flag; } - u32 checkStatus(u32 flag) { return mStatus & flag; } + u32 checkStatus(u32 flag) const { return mStatus & flag; } void initStatus(u32 status) { mStatus = status; } void setInvisibleParticleFlag() { setStatus(8); } void setDeleteParticleFlag() { setStatus(2); } - void getVelVec(EGG::Vector3f& vec) const { vec.set(mVelocity); } - void getLocalPosition(EGG::Vector3f& vec) const { vec.set(mLocalPosition); } + void getVelVec(EGG::Vector3f* vec) const { vec->set(mVelocity); } + void getLocalPosition(EGG::Vector3f* vec) const { vec->set(mLocalPosition); } void getBaseAxis(EGG::Vector3f& vec) const { vec.set(mBaseAxis); } + void getBaseAxis(EGG::Vector3f* vec) const { vec->set(mBaseAxis); } public: /* 0x00 */ EGG::Vector3f mPosition; diff --git a/include/JSystem/JParticle/JPAResource.h b/include/JSystem/JParticle/JPAResource.h index 2d41f9b7..a4cfc2bf 100644 --- a/include/JSystem/JParticle/JPAResource.h +++ b/include/JSystem/JParticle/JPAResource.h @@ -4,7 +4,7 @@ #include "common.h" #include "egg/egg_types.h" -class JPAEmitterWorkData; +struct JPAEmitterWorkData; class JPABaseEmitter; class JPABaseParticle; @@ -37,13 +37,13 @@ public: void calcWorkData_c(JPAEmitterWorkData*); void calcWorkData_d(JPAEmitterWorkData*); - JPABaseShape* getBsp() const { return mpBaseShape; } - JPAExtraShape* getEsp() const { return mpExtraShape; } - JPAChildShape* getCsp() const { return mpChildShape; } - JPAExTexShape* getEts() const { return mpExTexShape; } - JPADynamicsBlock* getDyn() const { return mpDynamicsBlock; } + JPABaseShape* getBsp() const { return pBsp; } + JPAExtraShape* getEsp() const { return pEsp; } + JPAChildShape* getCsp() const { return pCsp; } + JPAExTexShape* getEts() const { return pEts; } + JPADynamicsBlock* getDyn() const { return pDyn; } - u32 getTexIdx(u32 idx) const { return mpTDB1[idx]; } + const u16 getTexIdx(u8 idx) { return mpTDB1[idx]; } u16 getUsrIdx() const { return mUsrIdx; } public: @@ -57,18 +57,18 @@ public: /* 0x14 */ ParticleFunc* mpCalcParticleChildFuncList; /* 0x18 */ ParticleFunc* mpDrawParticleChildFuncList; - /* 0x1C */ JPABaseShape* mpBaseShape; - /* 0x20 */ JPAExtraShape* mpExtraShape; - /* 0x24 */ JPAChildShape* mpChildShape; - /* 0x28 */ JPAExTexShape* mpExTexShape; - /* 0x2C */ JPADynamicsBlock* mpDynamicsBlock; - /* 0x30 */ JPAFieldBlock** mpFieldBlocks; - /* 0x34 */ JPAKeyBlock** mpKeyBlocks; + /* 0x1C */ JPABaseShape* pBsp; + /* 0x20 */ JPAExtraShape* pEsp; + /* 0x24 */ JPAChildShape* pCsp; + /* 0x28 */ JPAExTexShape* pEts; + /* 0x2C */ JPADynamicsBlock* pDyn; + /* 0x30 */ JPAFieldBlock** ppFld; + /* 0x34 */ JPAKeyBlock** ppKey; /* 0x38 */ u16 const* mpTDB1; /* 0x3C */ u16 mUsrIdx; - /* 0x3E */ u8 mFieldBlockNum; - /* 0x3F */ u8 mKeyBlockNum; - /* 0x40 */ u8 mTDB1Num; + /* 0x3E */ u8 fldNum; + /* 0x3F */ u8 keyNum; + /* 0x40 */ u8 texNum; /* 0x41 */ u8 mpCalcEmitterFuncListNum; /* 0x42 */ u8 mpDrawEmitterFuncListNum; /* 0x43 */ u8 mpDrawEmitterChildFuncListNum; diff --git a/include/JSystem/JParticle/JPAResourceManager.h b/include/JSystem/JParticle/JPAResourceManager.h index 409bde87..3c3d58aa 100644 --- a/include/JSystem/JParticle/JPAResourceManager.h +++ b/include/JSystem/JParticle/JPAResourceManager.h @@ -22,16 +22,16 @@ public: void registTex(JPATexture*); u32 getResUserWork(u16) const; - void load(u16 idx, GXTexMapID texMapID) { mpTexArr[idx]->load(texMapID); } + void load(u16 idx, GXTexMapID texMapID) { pTexAry[idx]->load(texMapID); } public: /* 0x00 */ EGG::Heap* mpHeap; - /* 0x04 */ JPAResource** mpResArr; - /* 0x08 */ JPATexture** mpTexArr; - /* 0x0C */ u16 mResMax; - /* 0x0E */ u16 mResNum; - /* 0x10 */ u16 mTexMax; - /* 0x12 */ u16 mTexNum; + /* 0x04 */ JPAResource** pResAry; + /* 0x08 */ JPATexture** pTexAry; + /* 0x0C */ u16 resMaxNum; + /* 0x0E */ u16 resRegNum; + /* 0x10 */ u16 texMaxNum; + /* 0x12 */ u16 texRegNum; }; #endif /* JPARESOURCEMANAGER_H */ |
