summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/JGeometry.h18
-rw-r--r--include/JSystem/JParticle/JPABaseShape.h118
-rw-r--r--include/JSystem/JParticle/JPADynamicsBlock.h46
-rw-r--r--include/JSystem/JParticle/JPAEmitter.h4
-rw-r--r--include/JSystem/JParticle/JPAExTexShape.h4
-rw-r--r--include/JSystem/JParticle/JPAFieldBlock.h82
-rw-r--r--include/JSystem/JParticle/JPAKeyBlock.h5
-rw-r--r--include/JSystem/JParticle/JPAList.h16
-rw-r--r--include/JSystem/JParticle/JPAParticle.h6
-rw-r--r--include/JSystem/JParticle/JPAResource.h32
-rw-r--r--include/JSystem/JParticle/JPAResourceManager.h14
11 files changed, 172 insertions, 173 deletions
diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h
index 513d5242dd..696d2f60a4 100644
--- a/include/JSystem/JGeometry.h
+++ b/include/JSystem/JGeometry.h
@@ -286,12 +286,7 @@ struct TVec3<f32> : public Vec {
}
void scale(__REGISTER f32 sc) {
-#if DEBUG
- x *= sc;
- y *= sc;
- z *= sc;
-#else
-#ifdef __MWERKS__
+#if PLATFORM_GCN && defined(__MWERKS__)
__REGISTER f32 z;
__REGISTER f32 x_y;
__REGISTER f32* dst = &x;
@@ -305,12 +300,15 @@ struct TVec3<f32> : public Vec {
ps_muls0 zres, z, sc
psq_st zres, 8(dst), 1, 0
};
-#endif
+#else
+ x *= sc;
+ y *= sc;
+ z *= sc;
#endif
}
void scale(__REGISTER f32 sc, const TVec3<f32>& other) {
-#ifdef __MWERKS__
+#if PLATFORM_GCN && defined(__MWERKS__)
__REGISTER const f32* src = &other.x;
__REGISTER f32 z;
__REGISTER f32 x_y;
@@ -325,6 +323,10 @@ struct TVec3<f32> : public Vec {
ps_muls0 zres, z, sc
psq_st zres, 8(dst), 1, 0
};
+#else
+ x = other.x * sc;
+ y = other.y * sc;
+ z = other.z * sc;
#endif
}
diff --git a/include/JSystem/JParticle/JPABaseShape.h b/include/JSystem/JParticle/JPABaseShape.h
index 35dcbb83ad..6e7605baac 100644
--- a/include/JSystem/JParticle/JPABaseShape.h
+++ b/include/JSystem/JParticle/JPABaseShape.h
@@ -27,11 +27,11 @@ 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;
@@ -57,62 +57,62 @@ public:
static GXTevColorArg st_ca[6][4];
static GXTevAlphaArg st_aa[2][4];
- 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 GXTevAlphaArg* getTevAlphaArg() const { return st_aa[(mpData->mFlags >> 0x12) & 0x01]; }
-
- 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 >> 25) & 0x01; }
- u32 getTilingT() const { return (mpData->mFlags >> 26) & 0x01; }
- BOOL isGlblClrAnm() const { return mpData->mFlags & 0x00001000; }
- BOOL isGlblTexAnm() const { return mpData->mFlags & 0x00004000; }
- BOOL isPrjTex() const { return mpData->mFlags & 0x00100000; }
- bool isDrawFwdAhead() const { return !!(mpData->mFlags & 0x00200000); }
- bool isDrawPrntAhead() const { return !!(mpData->mFlags & 0x00400000); }
- bool isClipOn() const { return !!(mpData->mFlags & 0x00800000); }
- BOOL isTexCrdAnm() const { return mpData->mFlags & 0x01000000; }
- bool isNoDrawParent() const { return !!(mpData->mFlags & 0x08000000); }
- bool isNoDrawChild() const { return !!(mpData->mFlags & 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 GXTevAlphaArg* getTevAlphaArg() const { return st_aa[(pBsd->mFlags >> 0x12) & 0x01]; }
+
+ 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 >> 25) & 0x01; }
+ u32 getTilingT() const { return (pBsd->mFlags >> 26) & 0x01; }
+ BOOL isGlblClrAnm() const { return pBsd->mFlags & 0x00001000; }
+ BOOL isGlblTexAnm() const { return pBsd->mFlags & 0x00004000; }
+ BOOL isPrjTex() const { return pBsd->mFlags & 0x00100000; }
+ BOOL isDrawFwdAhead() const { return pBsd->mFlags & 0x00200000; }
+ BOOL isDrawPrntAhead() const { return pBsd->mFlags & 0x00400000; }
+ BOOL isClipOn() const { return pBsd->mFlags & 0x00800000; }
+ BOOL isTexCrdAnm() const { return pBsd->mFlags & 0x01000000; }
+ BOOL isNoDrawParent() const { return pBsd->mFlags >> 27 & 1; }
+ BOOL isNoDrawChild() const { return pBsd->mFlags >> 28 & 1; }
+
+ 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]; }
@@ -124,10 +124,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/JPADynamicsBlock.h b/include/JSystem/JParticle/JPADynamicsBlock.h
index a27922913e..02b3961e5a 100644
--- a/include/JSystem/JParticle/JPADynamicsBlock.h
+++ b/include/JSystem/JParticle/JPADynamicsBlock.h
@@ -63,7 +63,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; }
@@ -71,32 +71,32 @@ public:
u32 getVolumeType() const { return (mpData->mFlags >> 8) & 0x07; }
u16 getDivNumber() const { return mpData->mDivNumber; }
f32 getRateRndm() const { return mpData->mRateRndm; }
- void getEmitterScl(JGeometry::TVec3<f32>* vec) const {
- vec->set(mpData->mEmitterScl.x, mpData->mEmitterScl.y, mpData->mEmitterScl.z);
+ void getEmitterScl(JGeometry::TVec3<f32>* vec) const {
+ vec->set(mpData->mEmitterScl.x, mpData->mEmitterScl.y, mpData->mEmitterScl.z);
}
- void getEmitterTrs(JGeometry::TVec3<f32>* vec) const {
- vec->set(mpData->mEmitterTrs.x, mpData->mEmitterTrs.y, mpData->mEmitterTrs.z);
+ void getEmitterTrs(JGeometry::TVec3<f32>* vec) const {
+ vec->set(mpData->mEmitterTrs.x, mpData->mEmitterTrs.y, mpData->mEmitterTrs.z);
}
- void getEmitterDir(JGeometry::TVec3<f32>* vec) const {
- vec->set(mpData->mEmitterDir.x, mpData->mEmitterDir.y, mpData->mEmitterDir.z);
+ void getEmitterDir(JGeometry::TVec3<f32>* vec) const {
+ vec->set(mpData->mEmitterDir.x, mpData->mEmitterDir.y, mpData->mEmitterDir.z);
}
- void getEmitterRot(JGeometry::TVec3<s16>* vec) const {
- vec->set(mpData->mEmitterRot.x, mpData->mEmitterRot.y, mpData->mEmitterRot.z);
- }
- 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; }
+ void getEmitterRot(JGeometry::TVec3<s16>* vec) const {
+ vec->set(mpData->mEmitterRot.x, mpData->mEmitterRot.y, mpData->mEmitterRot.z);
+ }
+ 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 b79e6f9022..691096babe 100644
--- a/include/JSystem/JParticle/JPAEmitter.h
+++ b/include/JSystem/JParticle/JPAEmitter.h
@@ -115,7 +115,7 @@ 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 checkFlag(u32 flag) const { return pRes->getDyn()->getFlag() & flag; }
u8 getResourceManagerID() const { return mResMgrID; }
u8 getGroupID() const { return mGroupID; }
u8 getDrawTimes() const { return mDrawTimes; }
@@ -258,7 +258,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/JPAExTexShape.h b/include/JSystem/JParticle/JPAExTexShape.h
index 43175517ec..841b0e052c 100644
--- a/include/JSystem/JParticle/JPAExTexShape.h
+++ b/include/JSystem/JParticle/JPAExTexShape.h
@@ -33,8 +33,8 @@ 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 isUseSecTex() const { return !!(mpData->mFlags & 0x0100); }
+ BOOL isUseIndirect() const { return mpData->mFlags & 0x01; }
+ BOOL isUseSecTex() const { return mpData->mFlags & 0x0100; }
public:
const JPAExTexShapeData* mpData;
diff --git a/include/JSystem/JParticle/JPAFieldBlock.h b/include/JSystem/JParticle/JPAFieldBlock.h
index 56a2de1d15..ccca533622 100644
--- a/include/JSystem/JParticle/JPAFieldBlock.h
+++ b/include/JSystem/JParticle/JPAFieldBlock.h
@@ -21,32 +21,27 @@ public:
/* 0x04 */ JGeometry::TVec3<f32> mAccel;
};
-class JPAFieldVortex : public JPAFieldBase {
+class JPAFieldGravity : public JPAFieldBase {
public:
void prepare(JPAEmitterWorkData*, JPAFieldBlock*);
void calc(JPAEmitterWorkData*, JPAFieldBlock*, JPABaseParticle*);
- ~JPAFieldVortex() {}
-
- /* 0x10 */ JGeometry::TVec3<f32> field_0x10;
- /* 0x1C */ f32 field_0x1c;
- /* 0x20 */ f32 field_0x20;
+ ~JPAFieldGravity() {}
};
-class JPAFieldSpin : public JPAFieldBase {
+class JPAFieldAir : public JPAFieldBase {
public:
void prepare(JPAEmitterWorkData*, JPAFieldBlock*);
void calc(JPAEmitterWorkData*, JPAFieldBlock*, JPABaseParticle*);
- ~JPAFieldSpin() {}
-
- /* 0x10 */ JGeometry::TVec3<f32> field_0x10;
- /* 0x1C */ JGeometry::TVec3<f32> field_0x1c;
- /* 0x28 */ JGeometry::TVec3<f32> field_0x28;
+ ~JPAFieldAir() {}
};
-class JPAFieldRandom : public JPAFieldBase {
+class JPAFieldMagnet : public JPAFieldBase {
public:
+ void prepare(JPAEmitterWorkData*, JPAFieldBlock*);
void calc(JPAEmitterWorkData*, JPAFieldBlock*, JPABaseParticle*);
- ~JPAFieldRandom() {}
+ ~JPAFieldMagnet() {}
+
+ /* 0x10 */ JGeometry::TVec3<f32> mDir;
};
class JPAFieldNewton : public JPAFieldBase {
@@ -59,20 +54,21 @@ public:
/* 0x1C */ f32 mCutoff;
};
-class JPAFieldMagnet : public JPAFieldBase {
+class JPAFieldVortex : public JPAFieldBase {
public:
void prepare(JPAEmitterWorkData*, JPAFieldBlock*);
void calc(JPAEmitterWorkData*, JPAFieldBlock*, JPABaseParticle*);
- ~JPAFieldMagnet() {}
+ ~JPAFieldVortex() {}
- /* 0x10 */ JGeometry::TVec3<f32> mDir;
+ /* 0x10 */ JGeometry::TVec3<f32> field_0x10;
+ /* 0x1C */ f32 field_0x1c;
+ /* 0x20 */ f32 field_0x20;
};
-class JPAFieldGravity : public JPAFieldBase {
+class JPAFieldRandom : public JPAFieldBase {
public:
- void prepare(JPAEmitterWorkData*, JPAFieldBlock*);
void calc(JPAEmitterWorkData*, JPAFieldBlock*, JPABaseParticle*);
- ~JPAFieldGravity() {}
+ ~JPAFieldRandom() {}
};
class JPAFieldDrag : public JPAFieldBase {
@@ -92,11 +88,15 @@ public:
/* 0x28 */ JGeometry::TVec3<f32> field_0x28;
};
-class JPAFieldAir : public JPAFieldBase {
+class JPAFieldSpin : public JPAFieldBase {
public:
void prepare(JPAEmitterWorkData*, JPAFieldBlock*);
void calc(JPAEmitterWorkData*, JPAFieldBlock*, JPABaseParticle*);
- ~JPAFieldAir() {}
+ ~JPAFieldSpin() {}
+
+ /* 0x10 */ JGeometry::TVec3<f32> field_0x10;
+ /* 0x1C */ JGeometry::TVec3<f32> field_0x1c;
+ /* 0x28 */ JGeometry::TVec3<f32> field_0x28;
};
// unknown name
@@ -122,36 +122,36 @@ public:
JPAFieldBlock(u8 const*, JKRHeap*);
void init(JKRHeap*);
- 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; }
- JGeometry::TVec3<f32>& getPos() { return mPos; }
- JGeometry::TVec3<f32>& 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 JGeometry::TVec3<f32>& getPos() const { return mPos; }
+ const JGeometry::TVec3<f32>& getDir() const { return mDir; }
f32 getMag() const { return mMag; }
- void getPosOrig(JGeometry::TVec3<f32>* pos) { pos->set(mpData->mPos); }
- void getDirOrig(JGeometry::TVec3<f32>* dir) { dir->set(mpData->mDir); }
- f32 getMagOrig() { return mpData->mMag; }
+ void getPosOrig(JGeometry::TVec3<f32>* pos) const { pos->set(mpData->mPos); }
+ void getDirOrig(JGeometry::TVec3<f32>* 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 */ JGeometry::TVec3<f32> mPos;
diff --git a/include/JSystem/JParticle/JPAKeyBlock.h b/include/JSystem/JParticle/JPAKeyBlock.h
index e1591f1d26..07c1f57171 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 cb02349c87..6f201b73b8 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 e6e0bec6f4..64d682cfa2 100644
--- a/include/JSystem/JParticle/JPAParticle.h
+++ b/include/JSystem/JParticle/JPAParticle.h
@@ -33,17 +33,15 @@ public:
void getOffsetPosition(JGeometry::TVec3<f32>& pos) { pos.set(mOffsetPosition); }
void getOffsetPosition(JGeometry::TVec3<f32>* pos) const { pos->set(mOffsetPosition); }
u16 getRotateAngle() const { return mRotateAngle; }
- void getGlobalPosition(JGeometry::TVec3<f32>& pos) const { pos.set(mPosition); }
void getGlobalPosition(JGeometry::TVec3<f32>* 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(JGeometry::TVec3<f32>& vec) const { vec.set(mVelocity); }
- void getLocalPosition(JGeometry::TVec3<f32>& vec) const { vec.set(mLocalPosition); }
+ void getVelVec(JGeometry::TVec3<f32>* vec) const { vec->set(mVelocity); }
void getLocalPosition(JGeometry::TVec3<f32>* vec) const { vec->set(mLocalPosition); }
void getBaseAxis(JGeometry::TVec3<f32>& vec) const { vec.set(mBaseAxis); }
void getBaseAxis(JGeometry::TVec3<f32>* vec) const { vec->set(mBaseAxis); }
diff --git a/include/JSystem/JParticle/JPAResource.h b/include/JSystem/JParticle/JPAResource.h
index f07868208d..707725c9af 100644
--- a/include/JSystem/JParticle/JPAResource.h
+++ b/include/JSystem/JParticle/JPAResource.h
@@ -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 60a027a6b9..068858c5a6 100644
--- a/include/JSystem/JParticle/JPAResourceManager.h
+++ b/include/JSystem/JParticle/JPAResourceManager.h
@@ -21,16 +21,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 */ JKRHeap* 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 */