summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2026-05-07 21:13:24 +0200
committerrobojumper <robojumper@gmail.com>2026-05-07 21:13:24 +0200
commitf4d163797f3c21e5a705b75043e0a8fbe7dc2460 (patch)
tree9cddc9fa36ec13e7dac76c54d74257c61fe20b47 /include
parentd8744e1f34e9955d55a5605f939bdf0bf9d8a729 (diff)
Re-import JParticle
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/JParticle/JPABaseShape.h120
-rw-r--r--include/JSystem/JParticle/JPAChildShape.h1
-rw-r--r--include/JSystem/JParticle/JPADrawInfo.h6
-rw-r--r--include/JSystem/JParticle/JPADynamicsBlock.h38
-rw-r--r--include/JSystem/JParticle/JPAEmitter.h46
-rw-r--r--include/JSystem/JParticle/JPAEmitterManager.h9
-rw-r--r--include/JSystem/JParticle/JPAExTexShape.h7
-rw-r--r--include/JSystem/JParticle/JPAExtraShape.h4
-rw-r--r--include/JSystem/JParticle/JPAFieldBlock.h40
-rw-r--r--include/JSystem/JParticle/JPAKeyBlock.h5
-rw-r--r--include/JSystem/JParticle/JPAList.h16
-rw-r--r--include/JSystem/JParticle/JPAParticle.h14
-rw-r--r--include/JSystem/JParticle/JPAResource.h34
-rw-r--r--include/JSystem/JParticle/JPAResourceManager.h14
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 */