mirror of
https://github.com/zeldaret/ss
synced 2026-05-23 06:54:20 -04:00
@@ -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); }
|
||||
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)(mpData->mZModeCfg & 0x01); }
|
||||
GXCompare getZCmp() const { return st_c[(mpData->mZModeCfg >> 1) & 0x07]; }
|
||||
GXBool getZUpd() const { return (GXBool)((mpData->mZModeCfg >> 4) & 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[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; }
|
||||
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[(mpData->mFlags >> 0x0F) & 0x07]; }
|
||||
const JPABaseShapeAlphaArg* getTevAlphaArg() const { return &st_aa[(mpData->mFlags >> 0x12) & 0x07]; }
|
||||
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 (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
|
||||
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 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 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 mpData->mTexFlg & 0x01; }
|
||||
u8 getTexAnmType() const { return (mpData->mTexFlg >> 2) & 0x07; }
|
||||
u32 getTexIdx() const { return mpData->mTexIdx; }
|
||||
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;
|
||||
|
||||
@@ -82,6 +82,7 @@ public:
|
||||
/* 0x00 */ const JPAChildShapeData* mpData;
|
||||
};
|
||||
|
||||
// SS addition
|
||||
void fn_8031DBA0(JPAEmitterWorkData*);
|
||||
void JPARegistChildPrmEnv(JPAEmitterWorkData*);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
void CalcPos(mVec3_c *, f32) const;
|
||||
|
||||
void CalcVec(Vec *pOut) const {
|
||||
PSVECSubtract(mEnd, mStart, pOut);
|
||||
VECSubtract(mEnd, mStart, pOut);
|
||||
}
|
||||
|
||||
void SetStart(const mVec3_c &);
|
||||
|
||||
+1
-6
@@ -222,7 +222,7 @@ public:
|
||||
}
|
||||
|
||||
f32 distance(const mVec3_c &to) const {
|
||||
return EGG::Math<f32>::sqrt(PSVECSquareDistance(*this, to));
|
||||
return EGG::Math<f32>::sqrt(VECSquareDistance(*this, to));
|
||||
}
|
||||
f32 squareDistance(const mVec3_c &to) const {
|
||||
return VEC3DistSq(*this, to);
|
||||
@@ -277,11 +277,6 @@ public:
|
||||
return EGG::Vector3f::angle(other);
|
||||
}
|
||||
|
||||
void offsetWithAngle(s16 yRot, f32 scale) {
|
||||
this->x += nw4r::math::SinIdx(yRot) * scale;
|
||||
this->z += nw4r::math::CosIdx(yRot) * scale;
|
||||
}
|
||||
|
||||
static mVec3_c Zero;
|
||||
static mVec3_c Ex;
|
||||
static mVec3_c Ey;
|
||||
|
||||
@@ -64,21 +64,21 @@ public:
|
||||
void SetScale(f32 x, f32 y, f32 z);
|
||||
void GetMtx(nw4r::math::MTX34 *out) {
|
||||
if (out != NULL) {
|
||||
PSMTXCopy(*mpM, *out);
|
||||
MTXCopy(*mpM, *out);
|
||||
}
|
||||
}
|
||||
|
||||
void SetMtx(const nw4r::math::MTX34 *arg) {
|
||||
if (arg != NULL) {
|
||||
PSMTXCopy(*arg, *mpM);
|
||||
MTXCopy(*arg, *mpM);
|
||||
} else {
|
||||
PSMTXIdentity(*mpM);
|
||||
MTXIdentity(*mpM);
|
||||
}
|
||||
}
|
||||
|
||||
// Not sure
|
||||
void SetMtxUnchecked(const nw4r::math::MTX34 *arg) {
|
||||
PSMTXCopy(*arg, *mpM);
|
||||
MTXCopy(*arg, *mpM);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -448,30 +448,30 @@ inline VEC3 *VEC3Sub(register VEC3 *out, register const VEC3 *a, register const
|
||||
}
|
||||
|
||||
inline VEC3 *VEC3Cross(VEC3 *out, const VEC3 *a, const VEC3 *b) {
|
||||
PSVECCrossProduct(*a, *b, *out);
|
||||
VECCrossProduct(*a, *b, *out);
|
||||
return out;
|
||||
}
|
||||
|
||||
inline f32 VEC3DistSq(const VEC3 *a, const VEC3 *b) {
|
||||
return PSVECSquareDistance(*a, *b);
|
||||
return VECSquareDistance(*a, *b);
|
||||
}
|
||||
|
||||
inline f32 VEC3Len(const VEC3 *vec) {
|
||||
return PSVECMag(*vec);
|
||||
return VECMag(*vec);
|
||||
}
|
||||
|
||||
inline VEC3 *VEC3Normalize(VEC3 *out, const VEC3 *in) {
|
||||
PSVECNormalize(*in, *out);
|
||||
VECNormalize(*in, *out);
|
||||
return out;
|
||||
}
|
||||
|
||||
inline VEC3 *VEC3Transform(VEC3 *out, const MTX34 *mtx, const VEC3 *vec) {
|
||||
PSMTXMultVec(*mtx, *vec, *out);
|
||||
MTXMultVec(*mtx, *vec, *out);
|
||||
return out;
|
||||
}
|
||||
|
||||
inline VEC3 *VEC3TransformCoord(VEC3 *out, const MTX34 *mtx, const VEC3 *vec) {
|
||||
PSMTXMultVec(*mtx, *vec, *out);
|
||||
MTXMultVec(*mtx, *vec, *out);
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -496,21 +496,21 @@ MTX34 *MTX34RotAxisFIdx(MTX34 *mtx, const VEC3 *axis, f32 fidx);
|
||||
MTX34 *MTX34RotXYZFIdx(MTX34 *mtx, f32 fx, f32 fy, f32 fz);
|
||||
|
||||
inline MTX34 *MTX34Copy(MTX34 *out, const MTX34 *in) {
|
||||
PSMTXCopy(*in, *out);
|
||||
MTXCopy(*in, *out);
|
||||
return out;
|
||||
}
|
||||
|
||||
inline MTX34 *MTX34Identity(MTX34 *mtx) {
|
||||
PSMTXIdentity(*mtx);
|
||||
MTXIdentity(*mtx);
|
||||
return mtx;
|
||||
}
|
||||
|
||||
inline u32 MTX34Inv(MTX34 *out, const MTX34 *in) {
|
||||
return PSMTXInverse(*in, *out);
|
||||
return MTXInverse(*in, *out);
|
||||
}
|
||||
|
||||
inline u32 MTX34InvTranspose(MTX34 *pOut, const MTX34 *pIn) {
|
||||
return PSMTXInvXpose(*pIn, *pOut);
|
||||
return MTXInvXpose(*pIn, *pOut);
|
||||
}
|
||||
|
||||
inline MTX34 *MTX34LookAt(MTX34 *mtx, const VEC3 *pos, const VEC3 *up, const VEC3 *target) {
|
||||
@@ -519,12 +519,12 @@ inline MTX34 *MTX34LookAt(MTX34 *mtx, const VEC3 *pos, const VEC3 *up, const VEC
|
||||
}
|
||||
|
||||
inline MTX34 *MTX34Mult(MTX34 *out, const MTX34 *a, const MTX34 *b) {
|
||||
PSMTXConcat(*a, *b, *out);
|
||||
MTXConcat(*a, *b, *out);
|
||||
return out;
|
||||
}
|
||||
|
||||
inline MTX34 *MTX34MultArray(MTX34 *out, const MTX34 *p1, const MTX34 *src, u32 len) {
|
||||
PSMTXConcatArray(*p1, *src, *out, len);
|
||||
MTXConcatArray(*p1, *src, *out, len);
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -541,7 +541,7 @@ inline MTX34 *MTX34RotXYZRad(MTX34 *mtx, f32 rx, f32 ry, f32 rz) {
|
||||
}
|
||||
|
||||
inline MTX34 *MTX34Scale(MTX34 *out, const VEC3 *scale, const MTX34 *in) {
|
||||
PSMTXScaleApply(*in, *out, scale->x, scale->y, scale->z);
|
||||
MTXScaleApply(*in, *out, scale->x, scale->y, scale->z);
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -551,7 +551,7 @@ inline QUAT *MTX34ToQUAT(QUAT *quat, const MTX34 *mtx) {
|
||||
}
|
||||
|
||||
inline MTX34 *MTX34Trans(MTX34 *out, const VEC3 *trans, const MTX34 *in) {
|
||||
PSMTXTransApply(*in, *out, trans->x, trans->y, trans->z);
|
||||
MTXTransApply(*in, *out, trans->x, trans->y, trans->z);
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -569,7 +569,7 @@ MTX44 *MTX44Copy(MTX44 *dst, const MTX44 *src);
|
||||
*
|
||||
******************************************************************************/
|
||||
inline MTX34 *QUATToMTX34(MTX34 *mtx, const QUAT *quat) {
|
||||
PSMTXQuat(*mtx, *quat);
|
||||
MTXQuat(*mtx, *quat);
|
||||
return mtx;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ typedef struct Quaternion {
|
||||
#define MTXIdentity PSMTXIdentity
|
||||
#define MTXCopy PSMTXCopy
|
||||
#define MTXConcat PSMTXConcat
|
||||
#define MTXConcatArray PSMTXConcatArray
|
||||
#define MTXInverse PSMTXInverse
|
||||
#define MTXTranspose PSMTXTranspose
|
||||
#define MTXInverse PSMTXInverse
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAChildShape
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAChildShape.h"
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JParticle/JPAEmitter.h"
|
||||
@@ -15,8 +10,6 @@ void fn_8031DBA0(JPAEmitterWorkData* work) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027AEBC-8027AFDC 2757FC 0120+00 0/0 1/1 0/0 .text JPARegistChildPrmEnv__FP18JPAEmitterWorkData
|
||||
*/
|
||||
void JPARegistChildPrmEnv(JPAEmitterWorkData* work) {
|
||||
JPAChildShape* csp = work->mpRes->getCsp();
|
||||
JPABaseEmitter* emtr = work->mpEmtr;
|
||||
@@ -34,21 +27,16 @@ void JPARegistChildPrmEnv(JPAEmitterWorkData* work) {
|
||||
GXSetTevColor(GX_TEVREG1, env);
|
||||
}
|
||||
|
||||
/* 8027AFDC-8027B008 27591C 002C+00 0/0 1/1 0/0 .text
|
||||
* JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcChildAlphaOut(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
f32 anm = (1.0f - ptcl->mTime) * 255.0f;
|
||||
OSf32tou8(&anm, &ptcl->mPrmColorAlphaAnm);
|
||||
}
|
||||
|
||||
/* 8027B008-8027B038 275948 0030+00 0/0 1/1 0/0 .text
|
||||
* JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcChildScaleOut(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
ptcl->mParticleScaleX = ptcl->mScaleOut * (1.0f - ptcl->mTime);
|
||||
ptcl->mParticleScaleY = ptcl->mAlphaWaveRandom * (1.0f - ptcl->mTime);
|
||||
}
|
||||
|
||||
/* 8027B038-8027B040 -00001 0008+00 0/0 0/0 0/0 .text __ct__13JPAChildShapeFPCUc */
|
||||
JPAChildShape::JPAChildShape(u8 const* pData) {
|
||||
mpData = (JPAChildShapeData*)pData;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPADynamicsBlock
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPADynamicsBlock.h"
|
||||
|
||||
#include "JSystem/JParticle/JPAEmitter.h"
|
||||
#include "nw4r/math/math_triangular.h"
|
||||
|
||||
/* 8027B144-8027B220 275A84 00DC+00 1/1 0/0 0/0 .text JPAVolumePoint__FP18JPAEmitterWorkData */
|
||||
void JPAVolumePoint(JPAEmitterWorkData* work) {
|
||||
work->mVolumeCalcData.mVolumePos.setZero();
|
||||
work->mVolumeCalcData.mVelOmni.set(work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh(),
|
||||
@@ -17,7 +11,6 @@ void JPAVolumePoint(JPAEmitterWorkData* work) {
|
||||
work->mVolumeCalcData.mVelOmni.z);
|
||||
}
|
||||
|
||||
/* 8027B220-8027B33C 275B60 011C+00 1/1 0/0 0/0 .text JPAVolumeLine */
|
||||
void JPAVolumeLine(JPAEmitterWorkData* work) {
|
||||
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
|
||||
work->mVolumeCalcData.mVolumePos.set(
|
||||
@@ -34,7 +27,6 @@ void JPAVolumeLine(JPAEmitterWorkData* work) {
|
||||
work->mVolumeCalcData.mVelAxis.set(0.0f, 0.0f, work->mVolumeCalcData.mVolumePos.z);
|
||||
}
|
||||
|
||||
/* 8027B33C-8027B4E8 275C7C 01AC+00 1/1 0/0 0/0 .text JPAVolumeCircle */
|
||||
// NONMATCHING regalloc. Could be issue with mul asm implementations
|
||||
void JPAVolumeCircle(JPAEmitterWorkData* work) {
|
||||
s16 theta;
|
||||
@@ -56,29 +48,25 @@ void JPAVolumeCircle(JPAEmitterWorkData* work) {
|
||||
distance = work->mVolumeSize * (work->mVolumeMinRad + distance * (1.0f - work->mVolumeMinRad));
|
||||
work->mVolumeCalcData.mVolumePos.set(distance * nw4r::math::SinIdx(theta), 0.0f,
|
||||
distance * nw4r::math::CosIdx(theta));
|
||||
work->mVolumeCalcData.mVelOmni = work->mVolumeCalcData.mVolumePos;
|
||||
work->mVolumeCalcData.mVelOmni *= work->mGlobalScl;
|
||||
work->mVolumeCalcData.mVelOmni.mul(work->mVolumeCalcData.mVolumePos, work->mGlobalScl);
|
||||
work->mVolumeCalcData.mVelAxis.set(work->mVolumeCalcData.mVolumePos.x, 0.0f,
|
||||
work->mVolumeCalcData.mVolumePos.z);
|
||||
}
|
||||
|
||||
/* 8027B4E8-8027B5F0 275E28 0108+00 1/1 0/0 0/0 .text JPAVolumeCube */
|
||||
void JPAVolumeCube(JPAEmitterWorkData* work) {
|
||||
work->mVolumeCalcData.mVolumePos.set(work->mpEmtr->get_r_zh() * work->mVolumeSize,
|
||||
work->mpEmtr->get_r_zh() * work->mVolumeSize,
|
||||
work->mpEmtr->get_r_zh() * work->mVolumeSize);
|
||||
work->mVolumeCalcData.mVelOmni = work->mVolumeCalcData.mVolumePos;
|
||||
work->mVolumeCalcData.mVelOmni *= work->mGlobalScl;
|
||||
work->mVolumeCalcData.mVelOmni.mul(work->mVolumeCalcData.mVolumePos, work->mGlobalScl);
|
||||
work->mVolumeCalcData.mVelAxis.set(work->mVolumeCalcData.mVolumePos.x, 0.0f, work->mVolumeCalcData.mVolumePos.z);
|
||||
}
|
||||
|
||||
/* 8027B5F0-8027B87C 275F30 028C+00 1/1 0/0 0/0 .text JPAVolumeSphere__FP18JPAEmitterWorkData */
|
||||
static void JPAVolumeSphere(JPAEmitterWorkData* work) {
|
||||
s16 phi, theta;
|
||||
s16 phi, r28;
|
||||
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
|
||||
phi = (u16)(work->mVolumeX * 0x8000 / (work->mDivNumber - 1) + 0x4000);
|
||||
f32 tmp = (u16)(work->mVolumeAngleNum * 0x10000 / (work->mVolumeAngleMax - 1));
|
||||
theta = tmp * work->mVolumeSweep + 0x8000;
|
||||
phi = u16(work->mVolumeX * 0x8000 / (work->mDivNumber - 1) + 0x4000);
|
||||
u16 r26 = u16(work->mVolumeAngleNum * 0x10000 / (work->mVolumeAngleMax - 1));
|
||||
r28 = f32(r26) * work->mVolumeSweep + 0x8000;
|
||||
work->mVolumeAngleNum++;
|
||||
if (work->mVolumeAngleNum == work->mVolumeAngleMax) {
|
||||
work->mVolumeAngleNum = 0;
|
||||
@@ -92,16 +80,16 @@ static void JPAVolumeSphere(JPAEmitterWorkData* work) {
|
||||
}
|
||||
} else {
|
||||
phi = work->mpEmtr->get_r_ss() >> 1;
|
||||
theta = work->mVolumeSweep * work->mpEmtr->get_r_ss();
|
||||
r28 = work->mVolumeSweep * work->mpEmtr->get_r_ss();
|
||||
}
|
||||
|
||||
f32 rnd = work->mpEmtr->get_r_f();
|
||||
f32 f31 = work->mpEmtr->get_r_f();
|
||||
if (work->mpEmtr->checkFlag(JPADynFlag_FixedDensity)) {
|
||||
rnd = 1.0f - rnd * rnd * rnd;
|
||||
f31 = 1.0f - f31 * f31 * f31;
|
||||
}
|
||||
f32 rad = work->mVolumeSize * (work->mVolumeMinRad + rnd * (1.0f - work->mVolumeMinRad));
|
||||
work->mVolumeCalcData.mVolumePos.set(rad * nw4r::math::CosIdx(phi) * nw4r::math::SinIdx(theta), -rad * nw4r::math::SinIdx(phi),
|
||||
rad * nw4r::math::CosIdx(phi) * nw4r::math::CosIdx(theta));
|
||||
f31 = work->mVolumeSize * (work->mVolumeMinRad + f31 * (1.0f - work->mVolumeMinRad));
|
||||
work->mVolumeCalcData.mVolumePos.set(f31 * nw4r::math::CosIdx(phi) * nw4r::math::SinIdx(r28), -f31 * nw4r::math::SinIdx(phi),
|
||||
f31 * nw4r::math::CosIdx(phi) * nw4r::math::CosIdx(r28));
|
||||
work->mVolumeCalcData.mVelOmni.set(
|
||||
work->mVolumeCalcData.mVolumePos.x * work->mGlobalScl.x,
|
||||
work->mVolumeCalcData.mVolumePos.y * work->mGlobalScl.y, work->mVolumeCalcData.mVolumePos.z * work->mGlobalScl.z
|
||||
@@ -110,16 +98,15 @@ static void JPAVolumeSphere(JPAEmitterWorkData* work) {
|
||||
work->mVolumeCalcData.mVolumePos.z);
|
||||
}
|
||||
|
||||
/* 8027B87C-8027B9F8 2761BC 017C+00 1/1 0/0 0/0 .text JPAVolumeCylinder__FP18JPAEmitterWorkData */
|
||||
static void JPAVolumeCylinder(JPAEmitterWorkData* work) {
|
||||
s16 theta = work->mVolumeSweep * work->mpEmtr->get_r_ss();
|
||||
f32 rnd = work->mpEmtr->get_r_f();
|
||||
s16 r30 = work->mVolumeSweep * work->mpEmtr->get_r_ss();
|
||||
f32 f31 = work->mpEmtr->get_r_f();
|
||||
if (work->mpEmtr->checkFlag(JPADynFlag_FixedDensity)) {
|
||||
rnd = 1.0f - rnd * rnd;
|
||||
f31 = 1.0f - f31 * f31;
|
||||
}
|
||||
f32 rad = work->mVolumeSize * (work->mVolumeMinRad + rnd * (1.0f - work->mVolumeMinRad));
|
||||
f31 = work->mVolumeSize * (work->mVolumeMinRad + f31 * (1.0f - work->mVolumeMinRad));
|
||||
work->mVolumeCalcData.mVolumePos.set(
|
||||
rad * nw4r::math::SinIdx(theta), work->mVolumeSize * work->mpEmtr->get_r_zp(), rad * nw4r::math::CosIdx(theta));
|
||||
f31 * nw4r::math::SinIdx(r30), work->mVolumeSize * work->mpEmtr->get_r_zp(), f31 * nw4r::math::CosIdx(r30));
|
||||
work->mVolumeCalcData.mVelOmni.set(
|
||||
work->mVolumeCalcData.mVolumePos.x * work->mGlobalScl.x,
|
||||
work->mVolumeCalcData.mVolumePos.y * work->mGlobalScl.y, work->mVolumeCalcData.mVolumePos.z * work->mGlobalScl.z
|
||||
@@ -128,7 +115,6 @@ static void JPAVolumeCylinder(JPAEmitterWorkData* work) {
|
||||
work->mVolumeCalcData.mVolumePos.z);
|
||||
}
|
||||
|
||||
/* 8027B9F8-8027BB18 276338 0120+00 1/1 0/0 0/0 .text JPAVolumeTorus__FP18JPAEmitterWorkData */
|
||||
static void JPAVolumeTorus(JPAEmitterWorkData* work) {
|
||||
s16 theta = work->mVolumeSweep * work->mpEmtr->get_r_ss();
|
||||
s16 phi = work->mpEmtr->get_r_ss();
|
||||
@@ -145,7 +131,6 @@ static void JPAVolumeTorus(JPAEmitterWorkData* work) {
|
||||
);
|
||||
}
|
||||
|
||||
/* 8027BB18-8027BB4C 276458 0034+00 0/0 1/1 0/0 .text __ct__16JPADynamicsBlockFPCUc */
|
||||
JPADynamicsBlock::JPADynamicsBlock(u8 const* data) {
|
||||
mpData = (const JPADynamicsBlockData*)data;
|
||||
init();
|
||||
@@ -161,7 +146,6 @@ enum {
|
||||
VOL_Line = 0x06,
|
||||
};
|
||||
|
||||
/* 8027BB4C-8027BBE8 27648C 009C+00 2/1 0/0 0/0 .text init__16JPADynamicsBlockFv */
|
||||
void JPADynamicsBlock::init() {
|
||||
switch (getVolumeType()) {
|
||||
case VOL_Cube:
|
||||
@@ -188,30 +172,18 @@ void JPADynamicsBlock::init() {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027BBE8-8027BDEC 276528 0204+00 0/0 1/1 0/0 .text
|
||||
* create__16JPADynamicsBlockFP18JPAEmitterWorkData */
|
||||
void JPADynamicsBlock::create(JPAEmitterWorkData* work) {
|
||||
if (work->mpEmtr->checkStatus(JPAEmtrStts_RateStepEmit)) {
|
||||
s32 emitCount;
|
||||
s32 createCount;
|
||||
s32 emitCount = 0;
|
||||
|
||||
// Probably an inlined function.
|
||||
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
|
||||
s32 count;
|
||||
if (getVolumeType() == VOL_Sphere) {
|
||||
count = 4 * getDivNumber() * getDivNumber() + 2;
|
||||
} else {
|
||||
count = getDivNumber();
|
||||
}
|
||||
emitCount = count;
|
||||
emitCount = getVolumeType() == VOL_Sphere ? 4 * getDivNumber() * getDivNumber() + 2 : getDivNumber();
|
||||
|
||||
work->mVolumeEmitIdx = 0;
|
||||
} else {
|
||||
f32 newPtclCount =
|
||||
work->mpEmtr->mRate * (getRateRndm() * work->mpEmtr->get_r_zp() + 1.0f);
|
||||
f32 newEmitCount = work->mpEmtr->mEmitCount + newPtclCount;
|
||||
work->mpEmtr->mEmitCount = newEmitCount;
|
||||
emitCount = (s32)newEmitCount;
|
||||
emitCount = work->mpEmtr->mEmitCount += newPtclCount;
|
||||
work->mpEmtr->mEmitCount -= emitCount;
|
||||
|
||||
if (work->mpEmtr->checkStatus(JPAEmtrStts_FirstEmit) && 0.0f < newPtclCount &&
|
||||
@@ -224,10 +196,10 @@ void JPADynamicsBlock::create(JPAEmitterWorkData* work) {
|
||||
emitCount = 0;
|
||||
}
|
||||
|
||||
// Probably an inlined function.
|
||||
createCount = emitCount;
|
||||
JPABaseParticle* ptcl = NULL;
|
||||
s32 createCount = emitCount;
|
||||
while (createCount > 0) {
|
||||
JPABaseParticle* ptcl = work->mpEmtr->createParticle();
|
||||
ptcl = work->mpEmtr->createParticle();
|
||||
if (ptcl == NULL)
|
||||
break;
|
||||
createCount--;
|
||||
@@ -235,7 +207,7 @@ void JPADynamicsBlock::create(JPAEmitterWorkData* work) {
|
||||
}
|
||||
|
||||
if (++work->mpEmtr->mRateStepTimer >= (work->mpEmtr->mRateStep + 1)) {
|
||||
work->mpEmtr->mRateStepTimer -= (work->mpEmtr->mRateStep + 1);
|
||||
work->mpEmtr->mRateStepTimer -= work->mpEmtr->mRateStep + 1;
|
||||
work->mpEmtr->setStatus(JPAEmtrStts_RateStepEmit);
|
||||
} else {
|
||||
work->mpEmtr->clearStatus(JPAEmtrStts_RateStepEmit);
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAEmitter
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAEmitter.h"
|
||||
#include "JSystem/JParticle/JPAEmitterManager.h"
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
@@ -10,65 +5,39 @@
|
||||
#include "JSystem/JParticle/JPABaseShape.h"
|
||||
#include "egg/math/eggVector.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 8027E6A4-8027E6EC 278FE4 0048+00 0/0 14/14 16/16 .text __dt__18JPAEmitterCallBackFv */
|
||||
JPAEmitterCallBack::~JPAEmitterCallBack() {
|
||||
}
|
||||
|
||||
/* 8027E6EC-8027EA40 27902C 0354+00 0/0 1/1 0/0 .text
|
||||
* init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource */
|
||||
void JPABaseEmitter::init(JPAEmitterManager* param_0, JPAResource* param_1) {
|
||||
mpEmtrMgr = param_0;
|
||||
mpRes = param_1;
|
||||
mpRes->getDyn()->getEmitterScl(&mLocalScl);
|
||||
mpRes->getDyn()->getEmitterTrs(&mLocalTrs);
|
||||
mpRes->getDyn()->getEmitterDir(&mLocalDir);
|
||||
pRes = param_1;
|
||||
pRes->getDyn()->getEmitterScl(&mLocalScl);
|
||||
pRes->getDyn()->getEmitterTrs(&mLocalTrs);
|
||||
pRes->getDyn()->getEmitterDir(&mLocalDir);
|
||||
mLocalDir.normalise();
|
||||
mpRes->getDyn()->getEmitterRot(&mLocalRot);
|
||||
mMaxFrame = mpRes->getDyn()->getMaxFrame();
|
||||
mLifeTime = mpRes->getDyn()->getLifetime();
|
||||
mVolumeSize = mpRes->getDyn()->getVolumeSize();
|
||||
mRate = mpRes->getDyn()->getRate();
|
||||
mRateStep = mpRes->getDyn()->getRateStep();
|
||||
mVolumeSweep = mpRes->getDyn()->getVolumeSweep();
|
||||
mVolumeMinRad = mpRes->getDyn()->getVolumeMinRad();
|
||||
mAwayFromCenterSpeed = mpRes->getDyn()->getInitVelOmni();
|
||||
mAwayFromAxisSpeed = mpRes->getDyn()->getInitVelAxis();
|
||||
mDirSpeed = mpRes->getDyn()->getInitVelDir();
|
||||
mSpread = mpRes->getDyn()->getInitVelDirSp();
|
||||
mRndmDirSpeed = mpRes->getDyn()->getInitVelRndm();
|
||||
mAirResist = mpRes->getDyn()->getAirRes();
|
||||
pRes->getDyn()->getEmitterRot(&mLocalRot);
|
||||
mMaxFrame = pRes->getDyn()->getMaxFrame();
|
||||
mLifeTime = pRes->getDyn()->getLifetime();
|
||||
mVolumeSize = pRes->getDyn()->getVolumeSize();
|
||||
mRate = pRes->getDyn()->getRate();
|
||||
mRateStep = pRes->getDyn()->getRateStep();
|
||||
mVolumeSweep = pRes->getDyn()->getVolumeSweep();
|
||||
mVolumeMinRad = pRes->getDyn()->getVolumeMinRad();
|
||||
mAwayFromCenterSpeed = pRes->getDyn()->getInitVelOmni();
|
||||
mAwayFromAxisSpeed = pRes->getDyn()->getInitVelAxis();
|
||||
mDirSpeed = pRes->getDyn()->getInitVelDir();
|
||||
mSpread = pRes->getDyn()->getInitVelDirSp();
|
||||
mRndmDirSpeed = pRes->getDyn()->getInitVelRndm();
|
||||
mAirResist = pRes->getDyn()->getAirRes();
|
||||
mRndm.set_seed(mpEmtrMgr->pWd->mRndm.get_rndm_u());
|
||||
MTXIdentity(mGlobalRot);
|
||||
mGlobalScl.set(1.0f, 1.0f, 1.0f);
|
||||
mGlobalTrs.setZero();
|
||||
mGlobalPScl.set(1.0f, 1.0f);
|
||||
mGlobalEnvClr.a = 0xff;
|
||||
mGlobalEnvClr.b = 0xff;
|
||||
mGlobalEnvClr.g = 0xff;
|
||||
mGlobalEnvClr.r = 0xff;
|
||||
mGlobalPrmClr.a = 0xff;
|
||||
mGlobalPrmClr.b = 0xff;
|
||||
mGlobalPrmClr.g = 0xff;
|
||||
mGlobalPrmClr.r = 0xff;
|
||||
mGlobalPrmClr.r = mGlobalPrmClr.g = mGlobalPrmClr.b = mGlobalPrmClr.a = mGlobalEnvClr.r = mGlobalEnvClr.g = mGlobalEnvClr.b = mGlobalEnvClr.a = 0xff;
|
||||
param_1->getBsp()->getPrmClr(&mPrmClr);
|
||||
param_1->getBsp()->getEnvClr(&mEnvClr);
|
||||
mpUserWork = NULL;
|
||||
mpUserWork = 0;
|
||||
mScaleOut = 1.0f;
|
||||
mEmitCount = 0.0f;
|
||||
initStatus(0x30);
|
||||
@@ -79,34 +48,33 @@ void JPABaseEmitter::init(JPAEmitterManager* param_0, JPAResource* param_1) {
|
||||
mTexAnmIdx = 0;
|
||||
}
|
||||
|
||||
/* 8027EA40-8027EB60 279380 0120+00 0/0 3/3 0/0 .text createParticle__14JPABaseEmitterFv
|
||||
*/
|
||||
JPABaseParticle* JPABaseEmitter::createParticle() {
|
||||
if (mpPtclPool->getNum() != 0) {
|
||||
JPANode<JPABaseParticle>* node = mpPtclPool->pop_front();
|
||||
mAlivePtclBase.push_front(node);
|
||||
mpRes->getDyn()->calc(mpEmtrMgr->pWd);
|
||||
node->mData.init_p(mpEmtrMgr->pWd);
|
||||
return &node->mData;
|
||||
pRes->getDyn()->calc(mpEmtrMgr->pWd);
|
||||
node->getObject()->init_p(mpEmtrMgr->pWd);
|
||||
return node->getObject();
|
||||
} else {
|
||||
JUT_WARN(128, "%s", "JPA : Can NOT create particle more\n");
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 8027EB60-8027EC60 2794A0 0100+00 0/0 1/1 0/0 .text
|
||||
* createChild__14JPABaseEmitterFP15JPABaseParticle */
|
||||
JPABaseParticle* JPABaseEmitter::createChild(JPABaseParticle* parent) {
|
||||
if (mpPtclPool->getNum() != 0) {
|
||||
JPANode<JPABaseParticle>* node = mpPtclPool->pop_front();
|
||||
mAlivePtclChld.push_front(node);
|
||||
node->mData.init_c(mpEmtrMgr->pWd, parent);
|
||||
return &node->mData;
|
||||
node->getObject()->init_c(mpEmtrMgr->pWd, parent);
|
||||
return node->getObject();
|
||||
} else {
|
||||
JUT_WARN(151, "%s", "JPA : Can NOT create child particle more\n")
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 8027EC60-8027EDD4 2795A0 0174+00 0/0 2/2 21/21 .text deleteAllParticle__14JPABaseEmitterFv */
|
||||
void JPABaseEmitter::deleteAllParticle() {
|
||||
while (mAlivePtclBase.getNum())
|
||||
mpPtclPool->push_front(mAlivePtclBase.pop_back());
|
||||
@@ -114,21 +82,17 @@ void JPABaseEmitter::deleteAllParticle() {
|
||||
mpPtclPool->push_front(mAlivePtclChld.pop_back());
|
||||
}
|
||||
|
||||
/* 8027EDD4-8027EE14 279714 0040+00 0/0 1/1 0/0 .text processTillStartFrame__14JPABaseEmitterFv */
|
||||
bool JPABaseEmitter::processTillStartFrame() {
|
||||
JPADynamicsBlock* dyn = mpRes->getDyn();
|
||||
s16 startFrame = dyn->getStartFrame();
|
||||
|
||||
if (mWaitTime >= startFrame)
|
||||
if (mWaitTime >= pRes->getDyn()->getStartFrame())
|
||||
return true;
|
||||
|
||||
if (!(mStatus & 2))
|
||||
if (!checkStatus(2)) {
|
||||
mWaitTime++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 8027EE14-8027EEB0 279754 009C+00 0/0 1/1 0/0 .text processTermination__14JPABaseEmitterFv */
|
||||
bool JPABaseEmitter::processTermination() {
|
||||
if (checkStatus(0x100)) {
|
||||
return true;
|
||||
@@ -140,19 +104,17 @@ bool JPABaseEmitter::processTermination() {
|
||||
if (mMaxFrame < 0) {
|
||||
setStatus(8);
|
||||
return getParticleNumber() == 0;
|
||||
}
|
||||
}
|
||||
if (mTick >= mMaxFrame) {
|
||||
setStatus(8);
|
||||
if (checkStatus(0x40)) {
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
return getParticleNumber() == 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 8027EEB0-8027EF30 2797F0 0080+00 0/0 1/1 0/0 .text
|
||||
* calcEmitterGlobalPosition__14JPABaseEmitterCFPQ29JGeometry8TVec3<f> */
|
||||
void JPABaseEmitter::calcEmitterGlobalPosition(EGG::Vector3f* dst) const {
|
||||
Mtx mtx;
|
||||
MTXScale(mtx, mGlobalScl.x, mGlobalScl.y, mGlobalScl.z);
|
||||
@@ -163,21 +125,16 @@ void JPABaseEmitter::calcEmitterGlobalPosition(EGG::Vector3f* dst) const {
|
||||
MTXMultVec(mtx, mLocalTrs, *dst);
|
||||
}
|
||||
|
||||
/* 8027EF30-8027EF40 279870 0010+00 0/0 1/1 0/0 .text getCurrentCreateNumber__14JPABaseEmitterCFv
|
||||
*/
|
||||
u32 JPABaseEmitter::getCurrentCreateNumber() const {
|
||||
return mpEmtrMgr->pWd->mEmitCount;
|
||||
}
|
||||
|
||||
/* 8027EF40-8027EF50 279880 0010+00 0/0 3/3 0/0 .text getDrawCount__14JPABaseEmitterCFv
|
||||
*/
|
||||
u8 JPABaseEmitter::getDrawCount() const {
|
||||
return mpEmtrMgr->pWd->mDrawCount;
|
||||
}
|
||||
|
||||
/* 8027EF50-8027EFA4 279890 0054+00 0/0 1/1 0/0 .text
|
||||
* loadTexture__14JPABaseEmitterFUc11_GXTexMapID */
|
||||
bool JPABaseEmitter::loadTexture(u8 idx, GXTexMapID texMapID) {
|
||||
mpEmtrMgr->pWd->mpResMgr->load(mpRes->getTexIdx(idx), texMapID);
|
||||
bool JPABaseEmitter::loadTexture(u8 no, GXTexMapID texMapID) {
|
||||
JUT_ASSERT(286, pRes->texNum > no);
|
||||
mpEmtrMgr->pWd->mpResMgr->load(pRes->getTexIdx(no), texMapID);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAEmitterManager
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAList.h"
|
||||
#include "JSystem/JSupport/JSUList.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
@@ -16,8 +11,6 @@
|
||||
#include "rvl/GX/GXTypes.h"
|
||||
#include "rvl/GX.h"
|
||||
|
||||
/* 8027DCA0-8027DEBC 2785E0 021C+00 0/0 1/1 0/0 .text __ct__17JPAEmitterManagerFUlUlP7EGG::HeapUcUc
|
||||
*/
|
||||
JPAEmitterManager::JPAEmitterManager(u32 i_ptclNum, u32 i_emtrNum, EGG::Heap* pHeap, u8 i_gidMax,
|
||||
u8 i_ridMax) {
|
||||
emtrNum = i_emtrNum;
|
||||
@@ -49,16 +42,13 @@ JPAEmitterManager::JPAEmitterManager(u32 i_ptclNum, u32 i_emtrNum, EGG::Heap* pH
|
||||
JUT_ASSERT(67, pWd);
|
||||
}
|
||||
|
||||
/* 8027DEBC-8027DFA0 2787FC 00E4+00 0/0 3/3 0/0 .text
|
||||
* createSimpleEmitterID__17JPAEmitterManagerFRCQ29JGeometry8TVec3<f>UsUcUcP18JPAEmitterCallBackP19JPAParticleCallBack
|
||||
*/
|
||||
JPABaseEmitter* JPAEmitterManager::createSimpleEmitterID(EGG::Vector3f const& pos,
|
||||
u16 resID, u8 group_id, u8 res_mgr_id,
|
||||
JPAEmitterCallBack* emtrCB,
|
||||
JPAParticleCallBack* ptclCB) {
|
||||
JUT_ASSERT(88, group_id < gidMax);
|
||||
JUT_ASSERT(89, res_mgr_id < ridMax);
|
||||
JUT_ASSERT(90, pResMgrAry[res_mgr_id] != 0);
|
||||
JUT_ASSERT(90, pResMgrAry[res_mgr_id] != NULL);
|
||||
JPAResource* pRes = pResMgrAry[res_mgr_id]->getResource(resID);
|
||||
|
||||
if (pRes == NULL) {
|
||||
@@ -118,7 +108,6 @@ void JPAEmitterManager::fn_80320E20(u8 group_id, f32 of_x, f32 of_z) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027DFA0-8027E028 2788E0 0088+00 0/0 3/3 0/0 .text calc__17JPAEmitterManagerFUc */
|
||||
void JPAEmitterManager::calc(u8 group_id) {
|
||||
JUT_ASSERT(154, group_id < gidMax);
|
||||
JSULink<JPABaseEmitter>* pNext = NULL;
|
||||
@@ -128,13 +117,11 @@ void JPAEmitterManager::calc(u8 group_id) {
|
||||
|
||||
JPABaseEmitter* emtr = pLink->getObject();
|
||||
|
||||
if (emtr->mpRes->calc(pWd, emtr) && !emtr->checkStatus(0x200))
|
||||
if (emtr->pRes->calc(pWd, emtr) && !emtr->checkStatus(0x200))
|
||||
forceDeleteEmitter(emtr);
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027E028-8027E220 278968 01F8+00 0/0 1/1 0/0 .text draw__17JPAEmitterManagerFPC11JPADrawInfoUc
|
||||
*/
|
||||
void JPAEmitterManager::draw(JPADrawInfo const* drawInfo, u8 group_id) {
|
||||
JUT_ASSERT(192, group_id < gidMax);
|
||||
drawInfo->getCamMtx(pWd->mPosCamMtx);
|
||||
@@ -166,30 +153,24 @@ void JPAEmitterManager::draw(JPADrawInfo const* drawInfo, u8 group_id) {
|
||||
JPABaseEmitter* emtr = pLink->getObject();
|
||||
if (!emtr->checkStatus(0x04)) {
|
||||
pWd->mpResMgr = pResMgrAry[emtr->mResMgrID];
|
||||
emtr->mpRes->draw(pWd, emtr);
|
||||
emtr->pRes->draw(pWd, emtr);
|
||||
}
|
||||
}
|
||||
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
}
|
||||
|
||||
/* 8027E220-8027E278 278B60 0058+00 0/0 1/1 0/0 .text forceDeleteAllEmitter__17JPAEmitterManagerFv
|
||||
*/
|
||||
void JPAEmitterManager::forceDeleteAllEmitter() {
|
||||
for (u8 i = 0; i < gidMax; i++)
|
||||
forceDeleteGroupEmitter(i);
|
||||
}
|
||||
|
||||
/* 8027E278-8027E2D8 278BB8 0060+00 1/1 0/0 0/0 .text
|
||||
* forceDeleteGroupEmitter__17JPAEmitterManagerFUc */
|
||||
void JPAEmitterManager::forceDeleteGroupEmitter(u8 group_id) {
|
||||
JUT_ASSERT(288, group_id < gidMax);
|
||||
while (pEmtrUseList[group_id].getNumLinks())
|
||||
forceDeleteEmitter(pEmtrUseList[group_id].getLast()->getObject());
|
||||
}
|
||||
|
||||
/* 8027E2D8-8027E344 278C18 006C+00 3/3 1/1 0/0 .text
|
||||
* forceDeleteEmitter__17JPAEmitterManagerFP14JPABaseEmitter */
|
||||
void JPAEmitterManager::forceDeleteEmitter(JPABaseEmitter* emtr) {
|
||||
emtr->deleteAllParticle();
|
||||
emtr->setStatus(0x300);
|
||||
@@ -197,17 +178,13 @@ void JPAEmitterManager::forceDeleteEmitter(JPABaseEmitter* emtr) {
|
||||
mFreeEmtrList.prepend(&emtr->mLink);
|
||||
}
|
||||
|
||||
/* 8027E344-8027E354 278C84 0010+00 0/0 2/2 0/0 .text
|
||||
* entryResourceManager__17JPAEmitterManagerFP18JPAResourceManagerUc */
|
||||
void JPAEmitterManager::entryResourceManager(JPAResourceManager* resMgr, u8 resMgrID) {
|
||||
JUT_ASSERT_MSG_F(325, resMgrID < ridMax && (pResMgrAry[resMgrID]) == 0,
|
||||
JUT_ASSERT_MSG_F(325, resMgrID < ridMax && (pResMgrAry[resMgrID]) == NULL,
|
||||
"res_id %d res_id_max %d array[%d] = %x", resMgrID, ridMax, resMgrID,
|
||||
pResMgrAry[resMgrID]);
|
||||
pResMgrAry[resMgrID] = resMgr;
|
||||
}
|
||||
|
||||
/* 8027E354-8027E3F4 278C94 00A0+00 0/0 1/1 0/0 .text clearResourceManager__17JPAEmitterManagerFUc
|
||||
*/
|
||||
void JPAEmitterManager::clearResourceManager(u8 res_mgr_id) {
|
||||
JUT_ASSERT(339, res_mgr_id < ridMax);
|
||||
for (u8 i = 0; i < gidMax; i++) {
|
||||
@@ -224,8 +201,6 @@ void JPAEmitterManager::clearResourceManager(u8 res_mgr_id) {
|
||||
pResMgrAry[res_mgr_id] = NULL;
|
||||
}
|
||||
|
||||
/* 8027E3F4-8027E51C 278D34 0128+00 1/1 0/0 0/0 .text calcYBBCam__17JPAEmitterManagerFv
|
||||
*/
|
||||
void JPAEmitterManager::calcYBBCam() {
|
||||
EGG::Vector3f v(0.0f, pWd->mPosCamMtx[1][1], pWd->mPosCamMtx[2][1]);
|
||||
JUT_ASSERT(367, !v.isZero());
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAExTexShape
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAExTexShape.h"
|
||||
#include "JSystem/JParticle/JPAResourceManager.h"
|
||||
#include "JSystem/JParticle/JPAEmitter.h"
|
||||
@@ -10,31 +5,27 @@
|
||||
#include "rvl/MTX.h"
|
||||
#include "rvl/GX.h"
|
||||
|
||||
/* 8027B040-8027B13C 275980 00FC+00 0/0 1/1 0/0 .text JPALoadExTex__FP18JPAEmitterWorkData */
|
||||
void JPALoadExTex(JPAEmitterWorkData* work) {
|
||||
Mtx m;
|
||||
JPAExTexShape* ets = work->mpRes->getEts();
|
||||
|
||||
|
||||
GXTexCoordID secTexCoordID = GX_TEXCOORD1;
|
||||
if (ets->isUseIndirect()) {
|
||||
Mtx m;
|
||||
MTXIdentity(m);
|
||||
GXLoadTexMtxImm(m, GX_TEXMTX2, GX_MTX2x4);
|
||||
GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX2, GX_FALSE,
|
||||
GX_PTIDENTITY);
|
||||
u8 texIdx = ets->getIndTexIdx();
|
||||
work->mpResMgr->load(work->mpRes->getTexIdx(texIdx), GX_TEXMAP2);
|
||||
work->mpResMgr->load(work->mpRes->getTexIdx(ets->getIndTexIdx()), GX_TEXMAP2);
|
||||
secTexCoordID = GX_TEXCOORD2;
|
||||
}
|
||||
|
||||
if (ets->isUseSecTex()) {
|
||||
GXSetTexCoordGen2(secTexCoordID, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE,
|
||||
GX_PTIDENTITY);
|
||||
u8 texIdx = ets->getSecTexIdx();
|
||||
work->mpResMgr->load(work->mpRes->getTexIdx(texIdx), GX_TEXMAP3);
|
||||
work->mpResMgr->load(work->mpRes->getTexIdx(ets->getSecTexIdx()), GX_TEXMAP3);
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027B13C-8027B144 -00001 0008+00 0/0 0/0 0/0 .text __ct__13JPAExTexShapeFPCUc */
|
||||
JPAExTexShape::JPAExTexShape(u8 const* data) {
|
||||
mpData = (const JPAExTexShapeData*)data;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,8 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAExtraShape
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAExtraShape.h"
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JParticle/JPAEmitter.h"
|
||||
#include "nw4r/math/math_triangular.h"
|
||||
|
||||
/* 8027A918-8027A990 275258 0078+00 0/0 1/1 0/0 .text
|
||||
* JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcScaleX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
if (work->mScaleAnm < esp->getScaleInTiming()) {
|
||||
@@ -24,8 +17,6 @@ void JPACalcScaleX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027A990-8027AA08 2752D0 0078+00 0/0 1/1 0/0 .text
|
||||
* JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcScaleY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
if (work->mScaleAnm < esp->getScaleInTiming()) {
|
||||
@@ -40,57 +31,41 @@ void JPACalcScaleY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027AA08-8027AA14 275348 000C+00 0/0 1/1 0/0 .text
|
||||
* JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcScaleCopy(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
ptcl->mParticleScaleY = ptcl->mParticleScaleX;
|
||||
}
|
||||
|
||||
/* 8027AA14-8027AA20 275354 000C+00 0/0 1/1 0/0 .text
|
||||
* JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcScaleAnmNormal(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
work->mScaleAnm = ptcl->mTime;
|
||||
}
|
||||
|
||||
/* 8027AA20-8027AA84 275360 0064+00 0/0 1/1 0/0 .text
|
||||
* JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcScaleAnmRepeatX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
work->mScaleAnm = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX();
|
||||
}
|
||||
|
||||
/* 8027AA84-8027AAE8 2753C4 0064+00 0/0 1/1 0/0 .text
|
||||
* JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
work->mScaleAnm = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY();
|
||||
}
|
||||
|
||||
/* 8027AAE8-8027AB7C 275428 0094+00 0/0 1/1 0/0 .text
|
||||
* JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcScaleAnmReverseX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
f32 cycle = ptcl->mAge / esp->getScaleAnmCycleX() & 1;
|
||||
f32 base = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX();
|
||||
work->mScaleAnm = base + (cycle * (1.0f - base * 2.0f));
|
||||
work->mScaleAnm = base + cycle * (1.0f - base * 2.0f);
|
||||
}
|
||||
|
||||
/* 8027AB7C-8027AC10 2754BC 0094+00 0/0 1/1 0/0 .text
|
||||
* JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcScaleAnmReverseY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
f32 cycle = ptcl->mAge / esp->getScaleAnmCycleY() & 1;
|
||||
f32 base = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY();
|
||||
work->mScaleAnm = base + (cycle * (1.0f - base * 2.0f));
|
||||
work->mScaleAnm = base + cycle * (1.0f - base * 2.0f);
|
||||
}
|
||||
|
||||
/* 8027AC10-8027AC98 275550 0088+00 0/0 1/1 0/0 .text
|
||||
* JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcAlphaAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
0.0f; // float order
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
f32 alpha;
|
||||
f32 alpha = 0.0f;
|
||||
if (ptcl->mTime < esp->getAlphaInTiming()) {
|
||||
alpha = 255.0f * (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime);
|
||||
} else if (ptcl->mTime > esp->getAlphaOutTiming()) {
|
||||
@@ -102,11 +77,9 @@ void JPACalcAlphaAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm);
|
||||
}
|
||||
|
||||
/* 8027AC98-8027AD88 2755D8 00F0+00 0/0 1/1 0/0 .text
|
||||
* JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPACalcAlphaFlickAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
f32 alpha;
|
||||
f32 alpha = 0.0f;
|
||||
if (ptcl->mTime < esp->getAlphaInTiming()) {
|
||||
alpha = (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime);
|
||||
} else if (ptcl->mTime > esp->getAlphaOutTiming()) {
|
||||
@@ -115,19 +88,16 @@ void JPACalcAlphaFlickAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
} else {
|
||||
alpha = esp->getAlphaBaseValue();
|
||||
}
|
||||
s32 theta = ptcl->mAlphaWaveRandom * ptcl->mAge * 16384.0f * (1.0f - esp->getAlphaFreq());
|
||||
f32 wave = nw4r::math::SinIdx(theta);
|
||||
f32 wave = nw4r::math::SinIdx(ptcl->mAlphaWaveRandom * ptcl->mAge * 16384.0f * (1.0f - esp->getAlphaFreq()));
|
||||
alpha *= (1.0f + esp->getAlphaAmp() * (wave - 1.0f) * 0.5f) * 255.0f;
|
||||
OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm);
|
||||
}
|
||||
|
||||
/* 8027AD88-8027ADBC 2756C8 0034+00 0/0 1/1 0/0 .text __ct__13JPAExtraShapeFPCUc */
|
||||
JPAExtraShape::JPAExtraShape(u8 const* data) {
|
||||
mpData = (const JPAExtraShapeData*)data;
|
||||
init();
|
||||
}
|
||||
|
||||
/* 8027ADBC-8027AEBC 2756FC 0100+00 1/1 0/0 0/0 .text init__13JPAExtraShapeFv */
|
||||
void JPAExtraShape::init() {
|
||||
mAlphaIncRate = (getAlphaInTiming() != 0.0f) ?
|
||||
(getAlphaBaseValue() - getAlphaInValue()) / getAlphaInTiming() :
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAFieldBlock
|
||||
//
|
||||
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include "JSystem/JParticle/JPAFieldBlock.h"
|
||||
#include "JSystem/JParticle/JPAEmitter.h"
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "egg/math/eggVector.h"
|
||||
|
||||
/* 8027BDEC-8027BF18 27672C 012C+00 8/8 0/0 0/0 .text
|
||||
* calcAffect__12JPAFieldBaseFP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldBase::calcAffect(JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
EGG::Vector3f vec = mAccel;
|
||||
if (!ptcl->checkStatus(4) && block->checkStatus(0x78)) {
|
||||
@@ -30,8 +24,6 @@ void JPAFieldBase::calcAffect(JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027BF18-8027BFB4 276858 009C+00 2/2 0/0 0/0 .text
|
||||
* calcFadeAffect__12JPAFieldBaseCFP13JPAFieldBlockf */
|
||||
f32 JPAFieldBase::calcFadeAffect(JPAFieldBlock* block, f32 time) const {
|
||||
f32 fade = 1.0f;
|
||||
if ((block->checkStatus(8) && time < block->getEnTime())
|
||||
@@ -46,8 +38,6 @@ f32 JPAFieldBase::calcFadeAffect(JPAFieldBlock* block, f32 time) const {
|
||||
return fade;
|
||||
}
|
||||
|
||||
/* 8027BFB4-8027C054 2768F4 00A0+00 1/0 0/0 0/0 .text
|
||||
* prepare__15JPAFieldGravityFP18JPAEmitterWorkDataP13JPAFieldBlock */
|
||||
void JPAFieldGravity::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
if (block->checkStatus(2)) {
|
||||
mAccel = block->getMag() * block->getDir();
|
||||
@@ -57,14 +47,10 @@ void JPAFieldGravity::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027C054-8027C07C 276994 0028+00 1/0 0/0 0/0 .text
|
||||
* calc__15JPAFieldGravityFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldGravity::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
calcAffect(block, ptcl);
|
||||
}
|
||||
|
||||
/* 8027C07C-8027C1B8 2769BC 013C+00 1/0 0/0 0/0 .text
|
||||
* prepare__11JPAFieldAirFP18JPAEmitterWorkDataP13JPAFieldBlock */
|
||||
void JPAFieldAir::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
EGG::Vector3f vec = block->getDir();
|
||||
vec.normalise();
|
||||
@@ -76,8 +62,6 @@ void JPAFieldAir::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027C1B8-8027C24C 276AF8 0094+00 1/0 0/0 0/0 .text
|
||||
* calc__11JPAFieldAirFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldAir::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
calcAffect(block, ptcl);
|
||||
if (block->checkStatus(4)) {
|
||||
@@ -88,31 +72,23 @@ void JPAFieldAir::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABasePa
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027C24C-8027C29C 276B8C 0050+00 1/0 0/0 0/0 .text
|
||||
* prepare__14JPAFieldMagnetFP18JPAEmitterWorkDataP13JPAFieldBlock */
|
||||
void JPAFieldMagnet::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
mDir = block->getPos() - work->mEmitterPos;
|
||||
MTXMultVecSR(work->mRotationMtx, mDir, mDir);
|
||||
}
|
||||
|
||||
/* 8027C29C-8027C36C 276BDC 00D0+00 1/0 0/0 0/0 .text
|
||||
* calc__14JPAFieldMagnetFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldMagnet::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
mAccel = mDir - ptcl->mLocalPosition;
|
||||
mAccel.setLength(block->getMag());
|
||||
calcAffect(block, ptcl);
|
||||
}
|
||||
|
||||
/* 8027C36C-8027C3E0 276CAC 0074+00 1/0 0/0 0/0 .text
|
||||
* prepare__14JPAFieldNewtonFP18JPAEmitterWorkDataP13JPAFieldBlock */
|
||||
void JPAFieldNewton::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
mDir = block->getPos() - work->mEmitterPos;
|
||||
MTXMultVecSR(work->mRotationMtx, mDir, mDir);
|
||||
mCutoff = block->getVal1() * block->getVal1();
|
||||
}
|
||||
|
||||
/* 8027C3E0-8027C56C 276D20 018C+00 1/0 0/0 0/0 .text
|
||||
* calc__14JPAFieldNewtonFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldNewton::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
mAccel = mDir - ptcl->mLocalPosition;
|
||||
f32 len_sq = mAccel.squaredLength();
|
||||
@@ -124,17 +100,13 @@ void JPAFieldNewton::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABas
|
||||
calcAffect(block, ptcl);
|
||||
}
|
||||
|
||||
/* 8027C56C-8027C674 276EAC 0108+00 1/0 0/0 0/0 .text
|
||||
* prepare__14JPAFieldVortexFP18JPAEmitterWorkDataP13JPAFieldBlock */
|
||||
void JPAFieldVortex::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
PSMTXMultVecSR(work->mGlobalRot, block->getDir(), field_0x10);
|
||||
MTXMultVecSR(work->mGlobalRot, block->getDir(), field_0x10);
|
||||
field_0x10.normalise();
|
||||
field_0x1c = block->getPos().z * block->getPos().z;
|
||||
field_0x20 = 1.0f / field_0x1c;
|
||||
}
|
||||
|
||||
/* 8027C674-8027C814 276FB4 01A0+00 1/0 0/0 0/0 .text
|
||||
* calc__14JPAFieldVortexFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldVortex::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
EGG::Vector3f vec;
|
||||
vec = field_0x10.dot(ptcl->mLocalPosition) * field_0x10;
|
||||
@@ -152,8 +124,6 @@ void JPAFieldVortex::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABas
|
||||
calcAffect(block, ptcl);
|
||||
}
|
||||
|
||||
/* 8027C814-8027CA94 277154 0280+00 1/0 0/0 0/0 .text
|
||||
* prepare__18JPAFieldConvectionFP18JPAEmitterWorkDataP13JPAFieldBlock */
|
||||
void JPAFieldConvection::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
EGG::Vector3f vec1, vec2;
|
||||
vec2 = block->getPos().cross(block->getDir());
|
||||
@@ -166,8 +136,6 @@ void JPAFieldConvection::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block)
|
||||
field_0x28.normalise();
|
||||
}
|
||||
|
||||
/* 8027CA94-8027CCCC 2773D4 0238+00 1/0 0/0 0/0 .text
|
||||
* calc__18JPAFieldConvectionFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldConvection::calc(JPAEmitterWorkData* work, JPAFieldBlock* block,
|
||||
JPABaseParticle* ptcl) {
|
||||
EGG::Vector3f vec1, vec2, vec3;
|
||||
@@ -182,8 +150,6 @@ void JPAFieldConvection::calc(JPAEmitterWorkData* work, JPAFieldBlock* block,
|
||||
calcAffect(block, ptcl);
|
||||
}
|
||||
|
||||
/* 8027CCCC-8027CDE4 27760C 0118+00 1/0 0/0 0/0 .text
|
||||
* calc__14JPAFieldRandomFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldRandom::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
if (ptcl->mAge == 0 || (block->getCycle() != 0 && ptcl->mAge % block->getCycle() == 0)) {
|
||||
JPABaseEmitter* emtr = work->mpEmtr;
|
||||
@@ -193,8 +159,6 @@ void JPAFieldRandom::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABas
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027CDE4-8027CE64 277724 0080+00 1/0 0/0 0/0 .text
|
||||
* calc__12JPAFieldDragFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldDrag::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
if (!ptcl->checkStatus(4)) {
|
||||
f32 fade = calcFadeAffect(block, ptcl->mTime);
|
||||
@@ -204,8 +168,6 @@ void JPAFieldDrag::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseP
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027CE64-8027CFA8 2777A4 0144+00 1/0 0/0 0/0 .text
|
||||
* prepare__12JPAFieldSpinFP18JPAEmitterWorkDataP13JPAFieldBlock */
|
||||
void JPAFieldSpin::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
EGG::Vector3f axis;
|
||||
MTXMultVecSR(work->mGlobalRot, block->getDir(), axis);
|
||||
@@ -217,8 +179,6 @@ void JPAFieldSpin::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
|
||||
field_0x28.set(mtx[0][2], mtx[1][2], mtx[2][2]);
|
||||
}
|
||||
|
||||
/* 8027CFA8-8027D088 2778E8 00E0+00 1/0 0/0 0/0 .text
|
||||
* calc__12JPAFieldSpinFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
|
||||
void JPAFieldSpin::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
|
||||
Mtx mtx;
|
||||
mtx[0][0] = field_0x10.x;
|
||||
@@ -238,14 +198,11 @@ void JPAFieldSpin::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseP
|
||||
calcAffect(block, ptcl);
|
||||
}
|
||||
|
||||
/* 8027D088-8027D0C0 2779C8 0038+00 0/0 1/1 0/0 .text __ct__13JPAFieldBlockFPCUcP7JKRHeap
|
||||
*/
|
||||
JPAFieldBlock::JPAFieldBlock(u8 const* data, EGG::Heap* heap)
|
||||
: mpData((const JPAFieldBlockData*)data) {
|
||||
init(heap);
|
||||
}
|
||||
|
||||
/* 8027D0C0-8027D3AC 277A00 02EC+00 2/1 0/0 0/0 .text init__13JPAFieldBlockFP7JKRHeap */
|
||||
void JPAFieldBlock::init(EGG::Heap* heap) {
|
||||
mFadeInRate = getFadeInTime() - getEnTime();
|
||||
if (mFadeInRate == 0.0f) {
|
||||
@@ -267,34 +224,36 @@ void JPAFieldBlock::init(EGG::Heap* heap) {
|
||||
|
||||
switch (getType()) {
|
||||
case FIELD_GRAVITY:
|
||||
mpField = new (heap, 4) JPAFieldGravity();
|
||||
pFld = new (heap) JPAFieldGravity();
|
||||
break;
|
||||
case FIELD_AIR:
|
||||
mpField = new (heap, 4) JPAFieldAir();
|
||||
pFld = new (heap) JPAFieldAir();
|
||||
break;
|
||||
case FIELD_MAGNET:
|
||||
mpField = new (heap, 4) JPAFieldMagnet();
|
||||
pFld = new (heap) JPAFieldMagnet();
|
||||
break;
|
||||
case FIELD_NEWTON:
|
||||
mpField = new (heap, 4) JPAFieldNewton();
|
||||
pFld = new (heap) JPAFieldNewton();
|
||||
break;
|
||||
case FIELD_VORTEX:
|
||||
mpField = new (heap, 4) JPAFieldVortex();
|
||||
pFld = new (heap) JPAFieldVortex();
|
||||
break;
|
||||
case FIELD_RANDOM:
|
||||
mpField = new (heap, 4) JPAFieldRandom();
|
||||
pFld = new (heap) JPAFieldRandom();
|
||||
break;
|
||||
case FIELD_DRAG:
|
||||
mpField = new (heap, 4) JPAFieldDrag();
|
||||
pFld = new (heap) JPAFieldDrag();
|
||||
break;
|
||||
case FIELD_CONVECTION:
|
||||
mpField = new (heap, 4) JPAFieldConvection();
|
||||
pFld = new (heap) JPAFieldConvection();
|
||||
break;
|
||||
case FIELD_SPIN:
|
||||
mpField = new (heap, 4) JPAFieldSpin();
|
||||
pFld = new (heap) JPAFieldSpin();
|
||||
break;
|
||||
default:
|
||||
mpField = NULL;
|
||||
pFld = NULL;
|
||||
JUT_WARN(483, "JPA : WRONG ID (%d) in field data\n", getType());
|
||||
break;
|
||||
}
|
||||
JUT_ASSERT(485, pFld != 0);
|
||||
}
|
||||
|
||||
@@ -1,25 +1,18 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAKeyBlock
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAKeyBlock.h"
|
||||
#include "JSystem/JParticle/JPAMath.h"
|
||||
|
||||
/* 8027D730-8027D740 278070 0010+00 0/0 1/1 0/0 .text __ct__11JPAKeyBlockFPCUc */
|
||||
JPAKeyBlock::JPAKeyBlock(const u8* data)
|
||||
: mDataStart(data)
|
||||
, field_0x4(reinterpret_cast<const float*>(&data[0xC]))
|
||||
{
|
||||
}
|
||||
|
||||
/* 8027D740-8027D7D4 278080 0094+00 0/0 1/1 0/0 .text calc__11JPAKeyBlockFf */
|
||||
f32 JPAKeyBlock::calc(float p1) {
|
||||
if (mDataStart[0xB] != '\0') {
|
||||
int v1 = (int)field_0x4[(mDataStart[9] - 1) * 4] + 1;
|
||||
if (isLoop()) {
|
||||
int v1 = (int)getKeyData()[(getKeyNum() - 1) * 4] + 1;
|
||||
// p1 -= (v1 * ((int)p1 / v1));
|
||||
int v2 = ((int)p1 / v1);
|
||||
p1 = p1 - (v2 * v1);
|
||||
}
|
||||
return JPACalcKeyAnmValue(p1, mDataStart[9], field_0x4);
|
||||
return JPACalcKeyAnmValue(p1, getKeyNum(), getKeyData());
|
||||
}
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAMath
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAMath.h"
|
||||
|
||||
#include "JSystem/JMath/JMath.h"
|
||||
@@ -10,8 +5,6 @@
|
||||
#include "egg/math/eggVector.h"
|
||||
#include "nw4r/math/math_triangular.h"
|
||||
|
||||
/* 80280588-802806C0 27AEC8 0138+00 0/0 1/1 0/0 .text JPAGetDirMtx__FRCQ29JGeometry8TVec3<f>PA4_f
|
||||
*/
|
||||
void JPAGetDirMtx(EGG::Vector3f const& param_0, f32 (*param_1)[4]) {
|
||||
1.0f; // probably some dummy function
|
||||
|
||||
@@ -42,7 +35,6 @@ void JPAGetDirMtx(EGG::Vector3f const& param_0, f32 (*param_1)[4]) {
|
||||
param_1[2][3] = 0.0f;
|
||||
}
|
||||
|
||||
/* 802806C0-80280734 27B000 0074+00 0/0 1/1 0/0 .text JPAGetYZRotateMtx__FssPA4_f */
|
||||
void JPAGetYZRotateMtx(s16 angleY, s16 angleZ, f32 (*param_2)[4]) {
|
||||
f32 cosy = nw4r::math::CosIdx(angleY);
|
||||
f32 cosz = nw4r::math::CosIdx(angleZ);
|
||||
@@ -56,13 +48,9 @@ void JPAGetYZRotateMtx(s16 angleY, s16 angleZ, f32 (*param_2)[4]) {
|
||||
param_2[1][2] = (siny * sinz);
|
||||
param_2[2][0] = -siny;
|
||||
param_2[2][2] = cosy;
|
||||
param_2[2][3] = 0.0f;
|
||||
param_2[2][1] = 0.0f;
|
||||
param_2[1][3] = 0.0f;
|
||||
param_2[0][3] = 0.0f;
|
||||
param_2[0][3] = param_2[1][3] = param_2[2][1] = param_2[2][3] = 0.0f;
|
||||
}
|
||||
|
||||
/* 80280734-802807E0 27B074 00AC+00 0/0 6/6 11/11 .text JPAGetXYZRotateMtx__FsssPA4_f */
|
||||
void JPAGetXYZRotateMtx(s16 x, s16 y, s16 z, Mtx mtx) {
|
||||
f32 cosx = nw4r::math::CosIdx(x);
|
||||
f32 cosy = nw4r::math::CosIdx(y);
|
||||
@@ -75,37 +63,26 @@ void JPAGetXYZRotateMtx(s16 x, s16 y, s16 z, Mtx mtx) {
|
||||
mtx[2][0] = -siny;
|
||||
mtx[2][1] = sinx * cosy;
|
||||
mtx[2][2] = cosx * cosy;
|
||||
f32 sinxsinz;
|
||||
f32 cosxcosz;
|
||||
f32 cosxsinz;
|
||||
f32 sinxcosz;
|
||||
cosxsinz = cosx * sinz;
|
||||
sinxcosz = sinx * cosz;
|
||||
mtx[0][1] = sinxcosz * siny - cosxsinz;
|
||||
mtx[1][2] = cosxsinz * siny - sinxcosz;
|
||||
sinxsinz = sinx * sinz;
|
||||
cosxcosz = cosx * cosz;
|
||||
mtx[0][2] = sinxsinz + cosxcosz * siny;
|
||||
mtx[1][1] = cosxcosz + sinxsinz * siny;
|
||||
mtx[2][3] = 0.0f;
|
||||
mtx[1][3] = 0.0f;
|
||||
mtx[0][3] = 0.0f;
|
||||
f32 f30 = cosx * sinz;
|
||||
f32 f29 = sinx * cosz;
|
||||
mtx[0][1] = f29 * siny - f30;
|
||||
mtx[1][2] = f30 * siny - f29;
|
||||
f30 = sinx * sinz;
|
||||
f29 = cosx * cosz;
|
||||
mtx[0][2] = f30 + f29 * siny;
|
||||
mtx[1][1] = f29 + f30 * siny;
|
||||
mtx[0][3] = mtx[1][3] = mtx[2][3] = 0.0f;
|
||||
}
|
||||
|
||||
/* 802807E0-80280808 27B120 0028+00 0/0 11/11 71/71 .text
|
||||
* JPASetRMtxTVecfromMtx__FPA4_CfPA4_fPQ29JGeometry8TVec3<f> */
|
||||
void JPASetRMtxTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4], EGG::Vector3f *param_2) {
|
||||
void JPASetRMtxTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4],
|
||||
EGG::Vector3f* param_2) {
|
||||
EGG::Vector3f dummy;
|
||||
JPASetRMtxSTVecfromMtx(param_0, param_1, &dummy, param_2);
|
||||
}
|
||||
|
||||
/* 80280808-80280984 27B148 017C+00 1/1 1/1 53/53 .text
|
||||
* JPASetRMtxSTVecfromMtx__FPA4_CfPA4_fPQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f> */
|
||||
void JPASetRMtxSTVecfromMtx(
|
||||
f32 const (*param_0)[4], f32 (*param_1)[4], EGG::Vector3f *param_2, EGG::Vector3f *param_3
|
||||
) {
|
||||
EGG::Vector3f aTStack_54;
|
||||
aTStack_54.set(param_0[0][0], param_0[1][0], param_0[2][0]);
|
||||
void JPASetRMtxSTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4],
|
||||
EGG::Vector3f* param_2, EGG::Vector3f* param_3) {
|
||||
EGG::Vector3f aTStack_54(param_0[0][0], param_0[1][0], param_0[2][0]);
|
||||
param_2->x = aTStack_54.length();
|
||||
aTStack_54.set(param_0[0][1], param_0[1][1], param_0[2][1]);
|
||||
param_2->y = aTStack_54.length();
|
||||
@@ -133,7 +110,6 @@ void JPASetRMtxSTVecfromMtx(
|
||||
param_3->set(param_0[0][3], param_0[1][3], param_0[2][3]);
|
||||
}
|
||||
|
||||
/* 80280984-80280A48 27B2C4 00C4+00 0/0 2/1 0/0 .text JPACalcKeyAnmValue__FfUsPCf */
|
||||
f32 JPACalcKeyAnmValue(f32 param_0, u16 param_1, f32 const* param_2) {
|
||||
if (param_0 < param_2[0]) {
|
||||
return param_2[1];
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAParticle
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JParticle/JPABaseShape.h"
|
||||
#include "JSystem/JParticle/JPAChildShape.h"
|
||||
@@ -11,13 +6,10 @@
|
||||
#include "JSystem/JParticle/JPAExtraShape.h"
|
||||
#include "egg/math/eggVector.h"
|
||||
|
||||
/* 8027EFA4-8027EFEC 2798E4 0048+00 0/0 11/11 1/1 .text __dt__19JPAParticleCallBackFv */
|
||||
JPAParticleCallBack::~JPAParticleCallBack() {
|
||||
/* empty function */
|
||||
}
|
||||
|
||||
/* 8027EFEC-8027F8C8 27992C 08DC+00 0/0 1/1 0/0 .text
|
||||
* init_p__15JPABaseParticleFP18JPAEmitterWorkData */
|
||||
void JPABaseParticle::init_p(JPAEmitterWorkData* work) {
|
||||
JPABaseEmitter* emtr = work->mpEmtr;
|
||||
JPAExtraShape* esp = work->mpRes->getEsp();
|
||||
@@ -128,8 +120,6 @@ void JPABaseParticle::init_p(JPAEmitterWorkData* work) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 8027F8C8-8027FFD0 27A208 0708+00 0/0 1/1 0/0 .text
|
||||
* init_c__15JPABaseParticleFP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPABaseParticle::init_c(JPAEmitterWorkData* work, JPABaseParticle* parent) {
|
||||
JPABaseEmitter* emtr = work->mpEmtr;
|
||||
JPAChildShape* csp = work->mpRes->getCsp();
|
||||
@@ -214,8 +204,6 @@ void JPABaseParticle::init_c(JPAEmitterWorkData* work, JPABaseParticle* parent)
|
||||
mTexAnmIdx = 0;
|
||||
}
|
||||
|
||||
/* 8027FFD0-80280260 27A910 0290+00 0/0 1/1 0/0 .text
|
||||
* calc_p__15JPABaseParticleFP18JPAEmitterWorkData */
|
||||
bool JPABaseParticle::calc_p(JPAEmitterWorkData* work) {
|
||||
if (++mAge >= mLifeTime) {
|
||||
return true;
|
||||
@@ -262,8 +250,6 @@ bool JPABaseParticle::calc_p(JPAEmitterWorkData* work) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 80280260-802804C8 27ABA0 0268+00 0/0 1/1 0/0 .text
|
||||
* calc_c__15JPABaseParticleFP18JPAEmitterWorkData */
|
||||
bool JPABaseParticle::calc_c(JPAEmitterWorkData* work) {
|
||||
if (++mAge >= mLifeTime) {
|
||||
return true;
|
||||
@@ -306,8 +292,6 @@ bool JPABaseParticle::calc_c(JPAEmitterWorkData* work) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 802804C8-80280548 27AE08 0080+00 1/1 0/0 0/0 .text
|
||||
* canCreateChild__15JPABaseParticleFP18JPAEmitterWorkData */
|
||||
bool JPABaseParticle::canCreateChild(JPAEmitterWorkData* work) {
|
||||
JPAChildShape* csp = work->mpRes->getCsp();
|
||||
bool ret = false;
|
||||
@@ -318,16 +302,10 @@ bool JPABaseParticle::canCreateChild(JPAEmitterWorkData* work) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80280548-80280568 27AE88 0020+00 0/0 3/3 0/0 .text
|
||||
* getWidth__15JPABaseParticleCFPC14JPABaseEmitter */
|
||||
f32 JPABaseParticle::getWidth(JPABaseEmitter const* emtr) const {
|
||||
f32 scale = 2.0f * mParticleScaleX;
|
||||
return scale * emtr->mpEmtrMgr->pWd->mGlobalPtclScl.x;
|
||||
return mParticleScaleX * 2.0f * emtr->mpEmtrMgr->pWd->mGlobalPtclScl.x;
|
||||
}
|
||||
|
||||
/* 80280568-80280588 27AEA8 0020+00 0/0 3/3 0/0 .text
|
||||
* getHeight__15JPABaseParticleCFPC14JPABaseEmitter */
|
||||
f32 JPABaseParticle::getHeight(JPABaseEmitter const* emtr) const {
|
||||
f32 scale = 2.0f * mParticleScaleY;
|
||||
return scale * emtr->mpEmtrMgr->pWd->mGlobalPtclScl.y;
|
||||
return mParticleScaleY * 2.0f * emtr->mpEmtrMgr->pWd->mGlobalPtclScl.y;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAResource
|
||||
//
|
||||
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include "JSystem/JParticle/JPAResource.h"
|
||||
#include "JSystem/JParticle/JPABaseShape.h"
|
||||
@@ -14,39 +9,23 @@
|
||||
#include "JSystem/JParticle/JPAKeyBlock.h"
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JParticle/JPAResourceManager.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "rvl/GX.h"
|
||||
|
||||
/* 80274010-80274080 26E950 0070+00 0/0 1/1 0/0 .text __ct__11JPAResourceFv */
|
||||
JPAResource::JPAResource() {
|
||||
mpDrawEmitterChildFuncList = NULL;
|
||||
mpDrawEmitterFuncList = NULL;
|
||||
mpCalcEmitterFuncList = NULL;
|
||||
mpDrawParticleChildFuncList = NULL;
|
||||
mpCalcParticleChildFuncList = NULL;
|
||||
mpDrawParticleFuncList = NULL;
|
||||
mpCalcParticleFuncList = NULL;
|
||||
mpBaseShape = NULL;
|
||||
mpExtraShape = NULL;
|
||||
mpChildShape = NULL;
|
||||
mpExTexShape = NULL;
|
||||
mpDynamicsBlock = NULL;
|
||||
mpFieldBlocks = NULL;
|
||||
mpKeyBlocks = NULL;
|
||||
mpCalcEmitterFuncList = mpDrawEmitterFuncList = mpDrawEmitterChildFuncList = NULL;
|
||||
mpCalcParticleFuncList = mpDrawParticleFuncList = mpCalcParticleChildFuncList = mpDrawParticleChildFuncList = NULL;
|
||||
pBsp = NULL;
|
||||
pEsp = NULL;
|
||||
pCsp = NULL;
|
||||
pEts = NULL;
|
||||
pDyn = NULL;
|
||||
ppFld = NULL;
|
||||
ppKey = NULL;
|
||||
mpTDB1 = NULL;
|
||||
mpDrawParticleChildFuncListNum = 0;
|
||||
mpCalcParticleChildFuncListNum = 0;
|
||||
mpDrawParticleFuncListNum = 0;
|
||||
mpCalcParticleFuncListNum = 0;
|
||||
mpDrawEmitterChildFuncListNum = 0;
|
||||
mpDrawEmitterFuncListNum = 0;
|
||||
mpCalcEmitterFuncListNum = 0;
|
||||
mTDB1Num = 0;
|
||||
mKeyBlockNum = 0;
|
||||
mFieldBlockNum = 0;
|
||||
mUsrIdx = 0;
|
||||
mUsrIdx = fldNum = keyNum = texNum = mpCalcEmitterFuncListNum = mpDrawEmitterFuncListNum = mpDrawEmitterChildFuncListNum = mpCalcParticleFuncListNum = mpDrawParticleFuncListNum = mpCalcParticleChildFuncListNum = mpDrawParticleChildFuncListNum = 0;
|
||||
}
|
||||
|
||||
/* 803C40C0-803C4220 0211E0 0144+1C 2/2 0/0 0/0 .data jpa_pos */
|
||||
static u8 jpa_pos[324] ALIGN_DECL(32) = {
|
||||
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x32, 0xCE, 0x00, 0x00, 0xCE, 0x00, 0xE7, 0x00, 0x00, 0x19,
|
||||
0x00, 0x00, 0x19, 0xCE, 0x00, 0xE7, 0xCE, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE,
|
||||
@@ -71,39 +50,38 @@ static u8 jpa_pos[324] ALIGN_DECL(32) = {
|
||||
0x00, 0x00, 0x00, 0xCE,
|
||||
};
|
||||
|
||||
/* 803C4220-803C4240 021340 0020+00 2/2 0/0 0/0 .data jpa_crd */
|
||||
static u8 jpa_crd[32] ALIGN_DECL(32) = {
|
||||
0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x02, 0x01, 0x00, 0x01,
|
||||
0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02,
|
||||
};
|
||||
|
||||
/* 80274080-802755E8 26E9C0 1568+00 2/0 1/1 0/0 .text init__11JPAResourceFP7JKRHeap */
|
||||
void JPAResource::init(EGG::Heap* heap) {
|
||||
// The s32s here are probably fake but fixes the regswaps
|
||||
s32 is_glbl_clr_anm = mpBaseShape->isGlblClrAnm();
|
||||
s32 is_glbl_tex_anm = mpBaseShape->isGlblTexAnm();
|
||||
BOOL is_prm_anm = mpBaseShape->isPrmAnm();
|
||||
BOOL is_env_anm = mpBaseShape->isEnvAnm();
|
||||
BOOL is_tex_anm = mpBaseShape->isTexAnm();
|
||||
BOOL is_tex_crd_anm = mpBaseShape->isTexCrdAnm();
|
||||
BOOL is_prj_tex = mpBaseShape->isPrjTex();
|
||||
BOOL is_enable_scale_anm = mpExtraShape != NULL && mpExtraShape->isEnableScaleAnm();
|
||||
BOOL is_enable_alpha_anm = mpExtraShape != NULL && mpExtraShape->isEnableAlphaAnm();
|
||||
BOOL is_enable_alpha_flick = mpExtraShape != NULL && mpExtraShape->isEnableAlphaAnm()
|
||||
&& mpExtraShape->isEnableAlphaFlick();
|
||||
BOOL is_enable_rotate_anm = mpExtraShape != NULL && mpExtraShape->isEnableRotateAnm();
|
||||
// The s32s here are fake but fixes the regswaps
|
||||
s32 is_glbl_clr_anm = pBsp->isGlblClrAnm();
|
||||
s32 is_glbl_tex_anm = pBsp->isGlblTexAnm();
|
||||
BOOL is_prm_anm = pBsp->isPrmAnm();
|
||||
BOOL is_env_anm = pBsp->isEnvAnm();
|
||||
BOOL is_tex_anm = pBsp->isTexAnm();
|
||||
BOOL is_tex_crd_anm = pBsp->isTexCrdAnm();
|
||||
BOOL is_prj_tex = pBsp->isPrjTex();
|
||||
BOOL is_enable_scale_anm = pEsp != NULL && pEsp->isEnableScaleAnm();
|
||||
BOOL is_enable_alpha_anm = pEsp != NULL && pEsp->isEnableAlphaAnm();
|
||||
BOOL is_enable_alpha_flick = pEsp != NULL && pEsp->isEnableAlphaAnm()
|
||||
&& pEsp->isEnableAlphaFlick();
|
||||
BOOL is_enable_rotate_anm = pEsp != NULL && pEsp->isEnableRotateAnm();
|
||||
BOOL is_rotate_on = is_enable_rotate_anm
|
||||
|| (mpChildShape != NULL && mpChildShape->isRotateOn());
|
||||
BOOL base_type_5_6 = mpBaseShape->getType() == 5 || mpBaseShape->getType() == 6;
|
||||
BOOL base_type_0 = mpBaseShape->getType() == 0;
|
||||
BOOL base_type_0_1 = mpBaseShape->getType() == 0 || mpBaseShape->getType() == 1;
|
||||
BOOL child_type_5_6 = mpChildShape != NULL
|
||||
&& (mpChildShape->getType() == 5 || mpChildShape->getType() == 6);
|
||||
BOOL child_type_0 = mpChildShape != NULL && mpChildShape->getType() == 0;
|
||||
BOOL child_type_0_1 = mpChildShape != NULL
|
||||
&& (mpChildShape->getType() == 0 || mpChildShape->getType() == 1);
|
||||
BOOL is_draw_parent = !mpBaseShape->isNoDrawParent();
|
||||
BOOL is_draw_child = !mpBaseShape->isNoDrawChild();
|
||||
|| (pCsp != NULL && pCsp->isRotateOn());
|
||||
BOOL base_type_5_6 = pBsp->getType() == 5 || pBsp->getType() == 6;
|
||||
BOOL base_type_0 = pBsp->getType() == 0;
|
||||
BOOL base_type_0_1 = pBsp->getType() == 0 || pBsp->getType() == 1;
|
||||
BOOL child_type_5_6 = pCsp != NULL
|
||||
&& (pCsp->getType() == 5 || pCsp->getType() == 6);
|
||||
BOOL child_type_0 = pCsp != NULL && pCsp->getType() == 0;
|
||||
BOOL child_type_0_1 = pCsp != NULL
|
||||
&& (pCsp->getType() == 0 || pCsp->getType() == 1);
|
||||
BOOL is_draw_parent = !pBsp->isNoDrawParent();
|
||||
BOOL is_draw_child = !pBsp->isNoDrawChild();
|
||||
int func_no = 0;
|
||||
|
||||
if (is_glbl_tex_anm && is_tex_anm) {
|
||||
mpCalcEmitterFuncListNum++;
|
||||
@@ -126,10 +104,10 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
(EmitterFunc*)heap->alloc(mpCalcEmitterFuncListNum * 4, 4);
|
||||
}
|
||||
|
||||
int func_no = 0;
|
||||
func_no = 0;
|
||||
|
||||
if (is_glbl_tex_anm && is_tex_anm) {
|
||||
switch (mpBaseShape->getTexAnmType()) {
|
||||
switch ((int)pBsp->getTexAnmType()) {
|
||||
case 0:
|
||||
mpCalcEmitterFuncList[func_no] = &JPACalcTexIdxNormal;
|
||||
break;
|
||||
@@ -159,7 +137,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
func_no++;
|
||||
}
|
||||
if (is_prm_anm || is_env_anm) {
|
||||
switch (mpBaseShape->getClrAnmType()) {
|
||||
switch ((int)pBsp->getClrAnmType()) {
|
||||
case 0:
|
||||
mpCalcEmitterFuncList[func_no] = &JPACalcClrIdxNormal;
|
||||
break;
|
||||
@@ -176,6 +154,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
mpCalcEmitterFuncList[func_no] = &JPACalcClrIdxRandom;
|
||||
break;
|
||||
}
|
||||
func_no++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,9 +181,9 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
}
|
||||
|
||||
if (is_enable_scale_anm) {
|
||||
if (mpBaseShape->getType() != 0) {
|
||||
if (mpExtraShape->isScaleXYDiff()) {
|
||||
if (mpExtraShape->getScaleAnmTypeX() == 0 && mpExtraShape->getScaleAnmTypeY() == 0) {
|
||||
if (pBsp->getType() != 0) {
|
||||
if (pEsp->isScaleXYDiff()) {
|
||||
if (pEsp->getScaleAnmTypeX() == 0 && pEsp->getScaleAnmTypeY() == 0) {
|
||||
mpCalcParticleFuncListNum++;
|
||||
} else {
|
||||
mpCalcParticleFuncListNum++;
|
||||
@@ -226,7 +205,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
func_no = 0;
|
||||
|
||||
if (!is_glbl_tex_anm && is_tex_anm) {
|
||||
switch (mpBaseShape->getTexAnmType()) {
|
||||
switch ((int)pBsp->getTexAnmType()) {
|
||||
case 0:
|
||||
mpCalcParticleFuncList[func_no] = &JPACalcTexIdxNormal;
|
||||
break;
|
||||
@@ -266,7 +245,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
func_no++;
|
||||
}
|
||||
if (is_prm_anm || is_env_anm) {
|
||||
switch (mpBaseShape->getClrAnmType()) {
|
||||
switch ((int)pBsp->getClrAnmType()) {
|
||||
case 0:
|
||||
mpCalcParticleFuncList[func_no] = &JPACalcClrIdxNormal;
|
||||
break;
|
||||
@@ -291,12 +270,12 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
}
|
||||
|
||||
if (is_enable_scale_anm) {
|
||||
if (mpBaseShape->getType() != 0) {
|
||||
if (mpExtraShape->isScaleXYDiff()) {
|
||||
if (pBsp->getType() != 0) {
|
||||
if (pEsp->isScaleXYDiff()) {
|
||||
mpCalcParticleFuncList[func_no] = &JPACalcScaleY;
|
||||
func_no++;
|
||||
if (mpExtraShape->getScaleAnmTypeY() != 0 || mpExtraShape->getScaleAnmTypeX() != 0) {
|
||||
switch (mpExtraShape->getScaleAnmTypeY()) {
|
||||
if (pEsp->getScaleAnmTypeY() != 0 || pEsp->getScaleAnmTypeX() != 0) {
|
||||
switch (pEsp->getScaleAnmTypeY()) {
|
||||
case 0:
|
||||
mpCalcParticleFuncList[func_no] = &JPACalcScaleAnmNormal;
|
||||
break;
|
||||
@@ -316,7 +295,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
}
|
||||
mpCalcParticleFuncList[func_no] = &JPACalcScaleX;
|
||||
func_no++;
|
||||
switch (mpExtraShape->getScaleAnmTypeX()) {
|
||||
switch (pEsp->getScaleAnmTypeX()) {
|
||||
case 0:
|
||||
mpCalcParticleFuncList[func_no] = &JPACalcScaleAnmNormal;
|
||||
break;
|
||||
@@ -327,13 +306,14 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
mpCalcParticleFuncList[func_no] = &JPACalcScaleAnmReverseX;
|
||||
break;
|
||||
}
|
||||
func_no++;
|
||||
}
|
||||
|
||||
if (mpChildShape != NULL && mpChildShape->isScaleOutOn()) {
|
||||
if (pCsp != NULL && pCsp->isScaleOutOn()) {
|
||||
mpCalcParticleChildFuncListNum++;
|
||||
}
|
||||
|
||||
if (mpChildShape != NULL && mpChildShape->isAlphaOutOn()) {
|
||||
if (pCsp != NULL && pCsp->isAlphaOutOn()) {
|
||||
mpCalcParticleChildFuncListNum++;
|
||||
}
|
||||
|
||||
@@ -344,25 +324,26 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
|
||||
func_no = 0;
|
||||
|
||||
if (mpChildShape != NULL && mpChildShape->isScaleOutOn()) {
|
||||
if (pCsp != NULL && pCsp->isScaleOutOn()) {
|
||||
mpCalcParticleChildFuncList[func_no] = &JPACalcChildScaleOut;
|
||||
func_no++;
|
||||
}
|
||||
|
||||
if (mpChildShape != NULL && mpChildShape->isAlphaOutOn()) {
|
||||
if (pCsp != NULL && pCsp->isAlphaOutOn()) {
|
||||
mpCalcParticleChildFuncList[func_no] = &JPACalcChildAlphaOut;
|
||||
func_no++;
|
||||
}
|
||||
|
||||
if (is_draw_parent && base_type_5_6) {
|
||||
mpDrawEmitterFuncListNum++;
|
||||
if (mpExTexShape != NULL && mpExTexShape->isUseIndirect() && mpExTexShape->getfield_0x4C()) {
|
||||
if (pEts != NULL && pEts->isUseIndirect() && pEts->getfield_0x4C()) {
|
||||
mpDrawEmitterFuncListNum++;
|
||||
}
|
||||
}
|
||||
|
||||
mpDrawEmitterFuncListNum++;
|
||||
|
||||
if (mpExTexShape != NULL) {
|
||||
if (pEts != NULL) {
|
||||
mpDrawEmitterFuncListNum++;
|
||||
}
|
||||
|
||||
@@ -392,14 +373,14 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
func_no = 0;
|
||||
|
||||
if (is_draw_parent && base_type_5_6) {
|
||||
if (mpBaseShape->getType() == 5) {
|
||||
if (pBsp->getType() == 5) {
|
||||
mpDrawEmitterFuncList[func_no] = &JPADrawStripe;
|
||||
func_no++;
|
||||
} else {
|
||||
mpDrawEmitterFuncList[func_no] = &JPADrawStripeX;
|
||||
func_no++;
|
||||
}
|
||||
if (mpExTexShape != NULL && mpExTexShape->isUseIndirect() && mpExTexShape->getfield_0x4C()) {
|
||||
if (pEts != NULL && pEts->isUseIndirect() && pEts->getfield_0x4C()) {
|
||||
mpDrawEmitterFuncList[func_no] = &fn_8031C2C0;
|
||||
func_no++;
|
||||
}
|
||||
@@ -408,7 +389,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
mpDrawEmitterFuncList[func_no] = &JPADrawEmitterCallBackB;
|
||||
func_no++;
|
||||
|
||||
if (mpExTexShape != NULL) {
|
||||
if (pEts != NULL) {
|
||||
mpDrawEmitterFuncList[func_no] = &JPALoadExTex;
|
||||
func_no++;
|
||||
}
|
||||
@@ -458,17 +439,22 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
if (is_glbl_clr_anm) {
|
||||
if (base_type_5_6 || !is_enable_alpha_anm) {
|
||||
mpDrawEmitterFuncList[func_no] = &JPARegistPrmEnv;
|
||||
func_no++;
|
||||
} else if (is_enable_alpha_anm) {
|
||||
mpDrawEmitterFuncList[func_no] = &JPARegistEnv;
|
||||
func_no++;
|
||||
}
|
||||
} else if (!is_prm_anm && !is_enable_alpha_anm) {
|
||||
if (!is_env_anm) {
|
||||
mpDrawEmitterFuncList[func_no] = &JPARegistPrmEnv;
|
||||
func_no++;
|
||||
} else {
|
||||
mpDrawEmitterFuncList[func_no] = &JPARegistPrm;
|
||||
func_no++;
|
||||
}
|
||||
} else if (!is_env_anm) {
|
||||
mpDrawEmitterFuncList[func_no] = &JPARegistEnv;
|
||||
func_no++;
|
||||
}
|
||||
|
||||
if (is_draw_child && child_type_5_6) {
|
||||
@@ -481,8 +467,8 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
mpDrawEmitterChildFuncListNum++;
|
||||
}
|
||||
|
||||
if (mpChildShape != NULL && ((!mpChildShape->isAlphaOutOn() && !mpChildShape->isAlphaInherited()
|
||||
&& !mpChildShape->isColorInherited()) || is_draw_child && child_type_5_6)) {
|
||||
if (pCsp != NULL && ((!pCsp->isAlphaOutOn() && !pCsp->isAlphaInherited()
|
||||
&& !pCsp->isColorInherited()) || is_draw_child && child_type_5_6)) {
|
||||
mpDrawEmitterChildFuncListNum++;
|
||||
}
|
||||
|
||||
@@ -494,7 +480,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
func_no = 0;
|
||||
|
||||
if (is_draw_child && child_type_5_6) {
|
||||
if (mpChildShape->getType() == 5) {
|
||||
if (pCsp->getType() == 5) {
|
||||
mpDrawEmitterChildFuncList[func_no] = &JPADrawStripe;
|
||||
func_no++;
|
||||
} else {
|
||||
@@ -511,11 +497,14 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
func_no++;
|
||||
}
|
||||
|
||||
if (mpChildShape != NULL) {
|
||||
if (!mpChildShape->isAlphaOutOn() && !mpChildShape->isAlphaInherited() && !mpChildShape->isColorInherited()) {
|
||||
if (pCsp != NULL) {
|
||||
if (!pCsp->isAlphaOutOn() && !pCsp->isAlphaInherited()
|
||||
&& !pCsp->isColorInherited()) {
|
||||
mpDrawEmitterChildFuncList[func_no] = &JPARegistChildPrmEnv;
|
||||
func_no++;
|
||||
} else if (is_draw_child && child_type_5_6) {
|
||||
mpDrawEmitterChildFuncList[func_no] = &fn_8031DBA0;
|
||||
func_no++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -528,14 +517,14 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
if (!is_glbl_tex_anm && is_tex_anm) {
|
||||
mpDrawParticleFuncListNum++;
|
||||
}
|
||||
|
||||
|
||||
if (base_type_0_1 && is_enable_scale_anm) {
|
||||
mpDrawParticleFuncListNum++;
|
||||
} else {
|
||||
if (is_tex_crd_anm && !is_prj_tex) {
|
||||
mpDrawParticleFuncListNum++;
|
||||
}
|
||||
if (mpExTexShape != NULL && mpExTexShape->isUseIndirect() && mpExTexShape->getfield_0x4C()) {
|
||||
if (pEts != NULL && pEts->isUseIndirect() && pEts->getfield_0x4C()) {
|
||||
mpDrawParticleFuncListNum++;
|
||||
}
|
||||
}
|
||||
@@ -553,7 +542,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
func_no = 0;
|
||||
|
||||
if (is_draw_parent && !base_type_5_6) {
|
||||
switch (mpBaseShape->getType()) {
|
||||
switch (pBsp->getType()) {
|
||||
case 2:
|
||||
if (is_enable_rotate_anm) {
|
||||
mpDrawParticleFuncList[func_no] = &JPADrawRotBillboard;
|
||||
@@ -615,7 +604,7 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
func_no++;
|
||||
}
|
||||
|
||||
if (mpExTexShape != NULL && mpExTexShape->isUseIndirect() && mpExTexShape->getfield_0x4C()) {
|
||||
if (pEts != NULL && pEts->isUseIndirect() && pEts->getfield_0x4C()) {
|
||||
mpDrawParticleFuncList[func_no] = &fn_8031A8C0;
|
||||
func_no++;
|
||||
}
|
||||
@@ -625,23 +614,29 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
if (is_prm_anm) {
|
||||
if (is_env_anm) {
|
||||
mpDrawParticleFuncList[func_no] = &JPARegistPrmAlphaEnv;
|
||||
func_no++;
|
||||
} else {
|
||||
mpDrawParticleFuncList[func_no] = &JPARegistPrmAlpha;
|
||||
func_no++;
|
||||
}
|
||||
} else if (is_enable_alpha_anm) {
|
||||
if (is_env_anm) {
|
||||
mpDrawParticleFuncList[func_no] = &JPARegistAlphaEnv;
|
||||
func_no++;
|
||||
} else {
|
||||
mpDrawParticleFuncList[func_no] = &JPARegistAlpha;
|
||||
func_no++;
|
||||
}
|
||||
} else if (is_env_anm) {
|
||||
mpDrawParticleFuncList[func_no] = &JPARegistEnv;
|
||||
func_no++;
|
||||
}
|
||||
} else if (is_enable_alpha_anm && !base_type_5_6) {
|
||||
mpDrawParticleFuncList[func_no] = &JPARegistAlpha;
|
||||
func_no++;
|
||||
}
|
||||
|
||||
if (is_draw_child && mpChildShape != NULL && !child_type_5_6) {
|
||||
if (is_draw_child && pCsp != NULL && !child_type_5_6) {
|
||||
mpDrawParticleChildFuncListNum++;
|
||||
}
|
||||
|
||||
@@ -651,8 +646,8 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
mpDrawParticleChildFuncListNum++;
|
||||
}
|
||||
|
||||
if (mpChildShape != NULL && (mpChildShape->isAlphaOutOn() || mpChildShape->isAlphaInherited()
|
||||
|| mpChildShape->isColorInherited())) {
|
||||
if (pCsp != NULL && (pCsp->isAlphaOutOn() || pCsp->isAlphaInherited()
|
||||
|| pCsp->isColorInherited())) {
|
||||
mpDrawParticleChildFuncListNum++;
|
||||
}
|
||||
|
||||
@@ -663,8 +658,8 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
|
||||
func_no = 0;
|
||||
|
||||
if (is_draw_child && mpChildShape != NULL && !child_type_5_6) {
|
||||
switch (mpChildShape->getType()) {
|
||||
if (is_draw_child && pCsp != NULL && !child_type_5_6) {
|
||||
switch (pCsp->getType()) {
|
||||
case 2:
|
||||
if (is_rotate_on) {
|
||||
mpDrawParticleChildFuncList[func_no] = &JPADrawRotBillboard;
|
||||
@@ -717,14 +712,13 @@ void JPAResource::init(EGG::Heap* heap) {
|
||||
}
|
||||
}
|
||||
|
||||
if (mpChildShape != NULL && (mpChildShape->isAlphaOutOn() || mpChildShape->isAlphaInherited()
|
||||
|| mpChildShape->isColorInherited())) {
|
||||
if (pCsp != NULL && (pCsp->isAlphaOutOn() || pCsp->isAlphaInherited()
|
||||
|| pCsp->isColorInherited())) {
|
||||
mpDrawParticleChildFuncList[func_no] = &JPARegistPrmAlphaEnv;
|
||||
func_no++;
|
||||
}
|
||||
}
|
||||
|
||||
/* 802755E8-80275A94 26FF28 04AC+00 0/0 1/1 0/0 .text
|
||||
* calc__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter */
|
||||
bool JPAResource::calc(JPAEmitterWorkData* work, JPABaseEmitter* emtr) {
|
||||
work->mpEmtr = emtr;
|
||||
work->mpRes = this;
|
||||
@@ -753,8 +747,8 @@ bool JPAResource::calc(JPAEmitterWorkData* work, JPABaseEmitter* emtr) {
|
||||
} else {
|
||||
calcKey(work);
|
||||
|
||||
for (int i = mFieldBlockNum - 1; i >= 0; i--) {
|
||||
mpFieldBlocks[i]->initOpParam();
|
||||
for (int i = fldNum - 1; i >= 0; i--) {
|
||||
ppFld[i]->initOpParam();
|
||||
}
|
||||
|
||||
if (emtr->mpEmtrCallBack != NULL) {
|
||||
@@ -770,12 +764,12 @@ bool JPAResource::calc(JPAEmitterWorkData* work, JPABaseEmitter* emtr) {
|
||||
(*mpCalcEmitterFuncList[i])(work);
|
||||
}
|
||||
|
||||
for (int i = mFieldBlockNum - 1; i >= 0; i--) {
|
||||
mpFieldBlocks[i]->prepare(work);
|
||||
for (int i = fldNum - 1; i >= 0; i--) {
|
||||
ppFld[i]->prepare(work);
|
||||
}
|
||||
|
||||
if (!emtr->checkStatus(8)) {
|
||||
mpDynamicsBlock->create(work);
|
||||
pDyn->create(work);
|
||||
}
|
||||
|
||||
if (emtr->mpEmtrCallBack != NULL) {
|
||||
@@ -785,23 +779,19 @@ bool JPAResource::calc(JPAEmitterWorkData* work, JPABaseEmitter* emtr) {
|
||||
}
|
||||
}
|
||||
|
||||
JPANode<JPABaseParticle>* node = emtr->mAlivePtclBase.getFirst();
|
||||
JPANode<JPABaseParticle>* next;
|
||||
while (node != emtr->mAlivePtclBase.getEnd()) {
|
||||
JPANode<JPABaseParticle>* next = NULL;
|
||||
for (JPANode<JPABaseParticle>* node = emtr->mAlivePtclBase.getFirst(); node != emtr->mAlivePtclBase.getEnd(); node = next) {
|
||||
next = node->getNext();
|
||||
if (node->getObject()->calc_p(work)) {
|
||||
emtr->mpPtclPool->push_front(emtr->mAlivePtclBase.erase(node));
|
||||
}
|
||||
node = next;
|
||||
}
|
||||
|
||||
node = emtr->mAlivePtclChld.getFirst();
|
||||
while (node != emtr->mAlivePtclChld.getEnd()) {
|
||||
for (JPANode<JPABaseParticle>* node = emtr->mAlivePtclChld.getFirst(); node != emtr->mAlivePtclChld.getEnd(); node = next) {
|
||||
next = node->getNext();
|
||||
if (node->getObject()->calc_c(work)) {
|
||||
emtr->mpPtclPool->push_front(emtr->mAlivePtclChld.erase(node));
|
||||
}
|
||||
node = next;
|
||||
}
|
||||
|
||||
emtr->mTick++;
|
||||
@@ -810,51 +800,47 @@ bool JPAResource::calc(JPAEmitterWorkData* work, JPABaseEmitter* emtr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 80275A94-80275B74 2703D4 00E0+00 0/0 1/1 0/0 .text
|
||||
* draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter */
|
||||
void JPAResource::draw(JPAEmitterWorkData* work, JPABaseEmitter* emtr) {
|
||||
work->mpEmtr = emtr;
|
||||
work->mpRes = this;
|
||||
work->mDrawCount = 0;
|
||||
calcWorkData_d(work);
|
||||
mpBaseShape->setGX(work);
|
||||
pBsp->setGX(work);
|
||||
for (s32 i = 1; i <= emtr->getDrawTimes(); i++) {
|
||||
work->mDrawCount++;
|
||||
if (mpBaseShape->isDrawPrntAhead() && mpChildShape != NULL)
|
||||
if (pBsp->isDrawPrntAhead() && pCsp != NULL)
|
||||
drawC(work);
|
||||
drawP(work);
|
||||
if (!mpBaseShape->isDrawPrntAhead() && mpChildShape != NULL)
|
||||
if (!pBsp->isDrawPrntAhead() && pCsp != NULL)
|
||||
drawC(work);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80275B74-80275EB0 2704B4 033C+00 1/1 0/0 0/0 .text drawP__11JPAResourceFP18JPAEmitterWorkData
|
||||
*/
|
||||
void JPAResource::drawP(JPAEmitterWorkData* work) {
|
||||
work->mpEmtr->clearStatus(0x80);
|
||||
|
||||
work->mGlobalPtclScl.x = work->mpEmtr->mGlobalPScl.x * mpBaseShape->getBaseSizeX();
|
||||
work->mGlobalPtclScl.y = work->mpEmtr->mGlobalPScl.y * mpBaseShape->getBaseSizeY();
|
||||
work->mGlobalPtclScl.x = work->mpEmtr->mGlobalPScl.x * pBsp->getBaseSizeX();
|
||||
work->mGlobalPtclScl.y = work->mpEmtr->mGlobalPScl.y * pBsp->getBaseSizeY();
|
||||
|
||||
if (mpBaseShape->getType() == 0) {
|
||||
if (pBsp->getType() == 0) {
|
||||
work->mGlobalPtclScl.x *= 1.02f;
|
||||
} else if (mpBaseShape->getType() == 1) {
|
||||
} else if (pBsp->getType() == 1) {
|
||||
work->mGlobalPtclScl.x *= 1.02f;
|
||||
work->mGlobalPtclScl.y *= 0.4f;
|
||||
}
|
||||
|
||||
if (mpExtraShape != NULL && mpExtraShape->isEnableScaleAnm()) {
|
||||
work->mPivot.x = mpExtraShape->getScaleCenterX() - 1.0f;
|
||||
work->mPivot.y = mpExtraShape->getScaleCenterY() - 1.0f;
|
||||
if (pEsp != NULL && pEsp->isEnableScaleAnm()) {
|
||||
work->mPivot.x = pEsp->getScaleCenterX() - 1.0f;
|
||||
work->mPivot.y = pEsp->getScaleCenterY() - 1.0f;
|
||||
} else {
|
||||
work->mPivot.x = work->mPivot.y = 0.0f;
|
||||
}
|
||||
|
||||
work->mDirType = mpBaseShape->getDirType();
|
||||
work->mRotType = mpBaseShape->getRotType();
|
||||
work->mDLType = mpBaseShape->getType() == 4 || mpBaseShape->getType() == 8;
|
||||
work->mPlaneType = work->mDLType ? 2 : mpBaseShape->getBasePlaneType();
|
||||
work->mPrjType = mpBaseShape->isPrjTex() ? (mpBaseShape->isTexCrdAnm() ? 2 : 1) : 0;
|
||||
work->mDirType = pBsp->getDirType();
|
||||
work->mRotType = pBsp->getRotType();
|
||||
work->mDLType = pBsp->getType() == 4 || pBsp->getType() == 8;
|
||||
work->mPlaneType = work->mDLType ? 2 : pBsp->getBasePlaneType();
|
||||
work->mPrjType = pBsp->isPrjTex() ? (pBsp->isTexCrdAnm() ? 2 : 1) : 0;
|
||||
|
||||
work->mpAlivePtcl = &work->mpEmtr->mAlivePtclBase;
|
||||
setPTev();
|
||||
@@ -863,7 +849,7 @@ void JPAResource::drawP(JPAEmitterWorkData* work) {
|
||||
(*mpDrawEmitterFuncList[i])(work);
|
||||
}
|
||||
|
||||
if (mpBaseShape->isDrawFwdAhead()) {
|
||||
if (pBsp->isDrawFwdAhead()) {
|
||||
JPANode<JPABaseParticle>* node = work->mpEmtr->mAlivePtclBase.getLast();
|
||||
for (; node != work->mpEmtr->mAlivePtclBase.getEnd(); node = node->getPrev()) {
|
||||
work->mpCurNode = node;
|
||||
@@ -892,32 +878,30 @@ void JPAResource::drawP(JPAEmitterWorkData* work) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 80275EB0-802761A8 2707F0 02F8+00 1/1 0/0 0/0 .text drawC__11JPAResourceFP18JPAEmitterWorkData
|
||||
*/
|
||||
void JPAResource::drawC(JPAEmitterWorkData* work) {
|
||||
work->mpEmtr->setStatus(0x80);
|
||||
|
||||
if (mpChildShape->isScaleInherited()) {
|
||||
work->mGlobalPtclScl.x = work->mpEmtr->mGlobalPScl.x * mpBaseShape->getBaseSizeX();
|
||||
work->mGlobalPtclScl.y = work->mpEmtr->mGlobalPScl.y * mpBaseShape->getBaseSizeY();
|
||||
if (pCsp->isScaleInherited()) {
|
||||
work->mGlobalPtclScl.x = work->mpEmtr->mGlobalPScl.x * pBsp->getBaseSizeX();
|
||||
work->mGlobalPtclScl.y = work->mpEmtr->mGlobalPScl.y * pBsp->getBaseSizeY();
|
||||
} else {
|
||||
work->mGlobalPtclScl.x = work->mpEmtr->mGlobalPScl.x * mpChildShape->getScaleX();
|
||||
work->mGlobalPtclScl.y = work->mpEmtr->mGlobalPScl.y * mpChildShape->getScaleY();
|
||||
work->mGlobalPtclScl.x = work->mpEmtr->mGlobalPScl.x * pCsp->getScaleX();
|
||||
work->mGlobalPtclScl.y = work->mpEmtr->mGlobalPScl.y * pCsp->getScaleY();
|
||||
}
|
||||
|
||||
if (mpChildShape->getType() == 0) {
|
||||
if (pCsp->getType() == 0) {
|
||||
work->mGlobalPtclScl.x *= 1.02f;
|
||||
} else if (mpChildShape->getType() == 1) {
|
||||
} else if (pCsp->getType() == 1) {
|
||||
work->mGlobalPtclScl.x *= 1.02f;
|
||||
work->mGlobalPtclScl.y *= 0.4f;
|
||||
}
|
||||
|
||||
work->mPivot.x = work->mPivot.y = 0.0f;
|
||||
|
||||
work->mDirType = mpChildShape->getDirType();
|
||||
work->mRotType = mpChildShape->getRotType();
|
||||
work->mDLType = mpChildShape->getType() == 4 || mpChildShape->getType() == 8;
|
||||
work->mPlaneType = work->mDLType ? 2 : mpChildShape->getBasePlaneType();
|
||||
work->mDirType = pCsp->getDirType();
|
||||
work->mRotType = pCsp->getRotType();
|
||||
work->mDLType = pCsp->getType() == 4 || pCsp->getType() == 8;
|
||||
work->mPlaneType = work->mDLType ? 2 : pCsp->getBasePlaneType();
|
||||
work->mPrjType = 0;
|
||||
|
||||
work->mpAlivePtcl = &work->mpEmtr->mAlivePtclChld;
|
||||
@@ -927,7 +911,7 @@ void JPAResource::drawC(JPAEmitterWorkData* work) {
|
||||
(*mpDrawEmitterChildFuncList[i])(work);
|
||||
}
|
||||
|
||||
if (mpBaseShape->isDrawFwdAhead()) {
|
||||
if (pBsp->isDrawFwdAhead()) {
|
||||
JPANode<JPABaseParticle>* node = work->mpEmtr->mAlivePtclChld.getLast();
|
||||
for (; node != work->mpEmtr->mAlivePtclChld.getEnd(); node = node->getPrev()) {
|
||||
work->mpCurNode = node;
|
||||
@@ -956,40 +940,33 @@ void JPAResource::drawC(JPAEmitterWorkData* work) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 802761A8-8027642C 270AE8 0284+00 1/1 0/0 0/0 .text setPTev__11JPAResourceFv */
|
||||
void JPAResource::setPTev() {
|
||||
GXTexCoordID tex_coord = GX_TEXCOORD1;
|
||||
u8 tev_stages = 1;
|
||||
u8 tex_gens = 1;
|
||||
u8 ind_stages = 0;
|
||||
|
||||
int base_plane_type = (mpBaseShape->getType() == 3 || mpBaseShape->getType() == 7) ?
|
||||
mpBaseShape->getBasePlaneType() : 0;
|
||||
int center_offset;
|
||||
if (mpExtraShape != NULL) {
|
||||
center_offset =
|
||||
(mpExtraShape->getScaleCenterX() + 3 * mpExtraShape->getScaleCenterY()) * 0xC;
|
||||
} else {
|
||||
center_offset = 0x30;
|
||||
}
|
||||
int base_plane_type = (pBsp->getType() == 3 || pBsp->getType() == 7) ?
|
||||
pBsp->getBasePlaneType() : 0;
|
||||
int center_offset = pEsp != NULL ? (pEsp->getScaleCenterX() + 3 * pEsp->getScaleCenterY()) * 0xC : 0x30;
|
||||
int pos_offset = center_offset + base_plane_type * 0x6C;
|
||||
int crd_offset = (mpBaseShape->getTilingS() + 2 * mpBaseShape->getTilingT()) * 8;
|
||||
int crd_offset = (pBsp->getTilingS() + 2 * pBsp->getTilingT()) * 8;
|
||||
GXSetArray(GX_VA_POS, jpa_pos + pos_offset, 3);
|
||||
GXSetArray(GX_VA_TEX0, jpa_crd + crd_offset, 2);
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
|
||||
|
||||
if (mpExTexShape != NULL) {
|
||||
if (mpExTexShape->isUseIndirect()) {
|
||||
GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP2);
|
||||
if (pEts != NULL) {
|
||||
if (pEts->isUseIndirect()) {
|
||||
GXSetIndTexOrder(GX_INDTEXSTAGE0, tex_coord, GX_TEXMAP2);
|
||||
GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1);
|
||||
GXSetIndTexMtx(GX_ITM_0, (f32(*)[3])mpExTexShape->getIndTexMtx(), mpExTexShape->getExpScale());
|
||||
GXSetIndTexMtx(GX_ITM_0, (f32(*)[3])pEts->getIndTexMtx(), pEts->getExpScale());
|
||||
GXSetTevIndirect(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_STU, GX_ITM_0,
|
||||
GX_ITW_OFF, GX_ITW_OFF, 0, 0, GX_ITBA_OFF);
|
||||
ind_stages++;
|
||||
tex_gens++;
|
||||
tex_coord = GX_TEXCOORD2;
|
||||
}
|
||||
if (mpExTexShape->isUseSecTex()) {
|
||||
if (pEts->isUseSecTex()) {
|
||||
GXSetTevOrder(GX_TEVSTAGE1, tex_coord, GX_TEXMAP3, GX_COLOR_NULL);
|
||||
GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO);
|
||||
@@ -1004,7 +981,7 @@ void JPAResource::setPTev() {
|
||||
|
||||
GXSetNumTevStages(tev_stages);
|
||||
GXSetNumIndStages(ind_stages);
|
||||
if (mpBaseShape->isClipOn()) {
|
||||
if (pBsp->isClipOn()) {
|
||||
GXSetMisc(GX_MT_XF_FLUSH, 8);
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
} else {
|
||||
@@ -1013,11 +990,9 @@ void JPAResource::setPTev() {
|
||||
GXSetNumTexGens(tex_gens);
|
||||
}
|
||||
|
||||
/* 8027642C-8027658C 270D6C 0160+00 1/1 0/0 0/0 .text setCTev__11JPAResourceFP18JPAEmitterWorkData
|
||||
*/
|
||||
void JPAResource::setCTev(JPAEmitterWorkData* work) {
|
||||
int base_plane_type = (mpChildShape->getType() == 3 || mpChildShape->getType() == 7) ?
|
||||
mpChildShape->getBasePlaneType() : 0;
|
||||
int base_plane_type = (pCsp->getType() == 3 || pCsp->getType() == 7) ?
|
||||
pCsp->getBasePlaneType() : 0;
|
||||
int pos_offset = 0x30 + base_plane_type * 0x6C;
|
||||
GXSetArray(GX_VA_POS, jpa_pos + pos_offset, 3);
|
||||
GXSetArray(GX_VA_TEX0, jpa_crd, 2);
|
||||
@@ -1026,18 +1001,16 @@ void JPAResource::setCTev(JPAEmitterWorkData* work) {
|
||||
GXSetTevDirect(GX_TEVSTAGE0);
|
||||
GXSetNumTevStages(1);
|
||||
GXSetNumIndStages(0);
|
||||
if (mpChildShape->isClipOn()) {
|
||||
if (pCsp->isClipOn()) {
|
||||
GXSetMisc(GX_MT_XF_FLUSH, 8);
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
} else {
|
||||
GXSetClipMode(GX_CLIP_DISABLE);
|
||||
}
|
||||
GXSetNumTexGens(1);
|
||||
work->mpResMgr->load(work->mpRes->getTexIdx(mpChildShape->getTexIdx()), GX_TEXMAP1);
|
||||
work->mpResMgr->load(work->mpRes->getTexIdx(pCsp->getTexIdx()), GX_TEXMAP1);
|
||||
}
|
||||
|
||||
/* 8027658C-80276608 270ECC 007C+00 0/0 1/1 0/0 .text
|
||||
* calc_p__11JPAResourceFP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPAResource::calc_p(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
if (mpCalcParticleFuncList != NULL) {
|
||||
for (int i = mpCalcParticleFuncListNum - 1; i >= 0; i--) {
|
||||
@@ -1046,8 +1019,6 @@ void JPAResource::calc_p(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 80276608-80276684 270F48 007C+00 0/0 1/1 0/0 .text
|
||||
* calc_c__11JPAResourceFP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPAResource::calc_c(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
if (mpCalcParticleChildFuncList != NULL) {
|
||||
for (int i = mpCalcParticleChildFuncListNum - 1; i >= 0; i--) {
|
||||
@@ -1056,20 +1027,16 @@ void JPAResource::calc_c(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
}
|
||||
}
|
||||
|
||||
/* 80276684-80276700 270FC4 007C+00 0/0 2/2 0/0 .text
|
||||
* calcField__11JPAResourceFP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPAResource::calcField(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
|
||||
for (int i = mFieldBlockNum - 1; i >= 0; i--) {
|
||||
mpFieldBlocks[i]->calc(work, ptcl);
|
||||
for (int i = fldNum - 1; i >= 0; i--) {
|
||||
ppFld[i]->calc(work, ptcl);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80276700-80276840 271040 0140+00 2/1 0/0 0/0 .text calcKey__11JPAResourceFP18JPAEmitterWorkData
|
||||
*/
|
||||
void JPAResource::calcKey(JPAEmitterWorkData* work) {
|
||||
for (int i = mKeyBlockNum - 1; i >= 0; i--) {
|
||||
f32 val = mpKeyBlocks[i]->calc(work->mpEmtr->mTick);
|
||||
switch (mpKeyBlocks[i]->getID()) {
|
||||
for (int i = keyNum - 1; i >= 0; i--) {
|
||||
f32 val = ppKey[i]->calc(work->mpEmtr->mTick);
|
||||
switch (ppKey[i]->getID()) {
|
||||
case 0:
|
||||
work->mpEmtr->mRate = val;
|
||||
break;
|
||||
@@ -1097,20 +1064,20 @@ void JPAResource::calcKey(JPAEmitterWorkData* work) {
|
||||
case 10:
|
||||
work->mpEmtr->mScaleOut = val;
|
||||
break;
|
||||
default:
|
||||
JUT_WARN(917, "%s", "JPA : WRONG ID in key data\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 80276840-80276A0C 271180 01CC+00 1/1 0/0 0/0 .text
|
||||
* calcWorkData_c__11JPAResourceFP18JPAEmitterWorkData */
|
||||
void JPAResource::calcWorkData_c(JPAEmitterWorkData* work) {
|
||||
work->mVolumeSize = work->mpEmtr->mVolumeSize;
|
||||
work->mVolumeMinRad = work->mpEmtr->mVolumeMinRad;
|
||||
work->mVolumeSweep = work->mpEmtr->mVolumeSweep;
|
||||
work->mVolumeX = 0;
|
||||
work->mVolumeAngleNum = 0;
|
||||
work->mVolumeAngleNum = work->mVolumeX = 0;
|
||||
work->mVolumeAngleMax = 1;
|
||||
work->mDivNumber = mpDynamicsBlock->getDivNumber() * 2 + 1;
|
||||
work->mDivNumber = pDyn->getDivNumber() * 2 + 1;
|
||||
Mtx local_scl_mtx, local_rot_mtx, global_mtx;
|
||||
MTXScale(local_scl_mtx, work->mpEmtr->mLocalScl.x, work->mpEmtr->mLocalScl.y,
|
||||
work->mpEmtr->mLocalScl.z);
|
||||
@@ -1127,14 +1094,11 @@ void JPAResource::calcWorkData_c(JPAEmitterWorkData* work) {
|
||||
MTXConcat(work->mGlobalRot, local_scl_mtx, work->mGlobalSR);
|
||||
work->mEmitterPos.set(work->mpEmtr->mLocalTrs);
|
||||
work->mGlobalScl.mul(work->mpEmtr->mGlobalScl, work->mpEmtr->mLocalScl);
|
||||
|
||||
JPAGetDirMtx(work->mpEmtr->mLocalDir, work->mDirectionMtx);
|
||||
work->mPublicScale.set(work->mpEmtr->mGlobalScl);
|
||||
MTXMultVec(global_mtx, work->mpEmtr->mLocalTrs, work->mGlobalPos);
|
||||
}
|
||||
|
||||
/* 80276A0C-80276A8C 27134C 0080+00 1/1 0/0 0/0 .text
|
||||
* calcWorkData_d__11JPAResourceFP18JPAEmitterWorkData */
|
||||
void JPAResource::calcWorkData_d(JPAEmitterWorkData* work) {
|
||||
Mtx mtx;
|
||||
JPAGetXYZRotateMtx(work->mpEmtr->mLocalRot.x * 0xB6, work->mpEmtr->mLocalRot.y * 0xB6,
|
||||
@@ -1142,9 +1106,3 @@ void JPAResource::calcWorkData_d(JPAEmitterWorkData* work) {
|
||||
MTXConcat(work->mpEmtr->mGlobalRot, mtx, work->mGlobalRot);
|
||||
MTXMultVecSR(work->mGlobalRot, work->mpEmtr->mLocalDir, work->mGlobalEmtrDir);
|
||||
}
|
||||
/*
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
static u8 jpa_resource_padding[28] = {0};
|
||||
#pragma pop
|
||||
*/
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAResourceLoader
|
||||
//
|
||||
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include "JSystem/JParticle/JPAResourceLoader.h"
|
||||
#include "JSystem/JParticle/JPABaseShape.h"
|
||||
@@ -14,12 +9,13 @@
|
||||
#include "JSystem/JParticle/JPAKeyBlock.h"
|
||||
#include "JSystem/JParticle/JPAResource.h"
|
||||
#include "JSystem/JParticle/JPAResourceManager.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
/* 8027D8A0-8027D8E0 2781E0 0040+00 0/0 1/1 0/0 .text
|
||||
* __ct__17JPAResourceLoaderFPCUcP18JPAResourceManager */
|
||||
JPAResourceLoader::JPAResourceLoader(u8 const* data, JPAResourceManager* mgr) {
|
||||
if (*(u32*)(data + 4) == '2-11') {
|
||||
load_jpc(data, mgr);
|
||||
} else {
|
||||
JUT_WARN(48, "JPA : wrong version file\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,76 +27,89 @@ struct JPAResourceHeader {
|
||||
/* 0x6 */ u8 mTDB1Num;
|
||||
};
|
||||
|
||||
/* 8027D8E0-8027DCA0 278220 03C0+00 1/1 0/0 0/0 .text
|
||||
* load_jpc__17JPAResourceLoaderFPCUcP18JPAResourceManager */
|
||||
void JPAResourceLoader::load_jpc(u8 const* data, JPAResourceManager* mgr) {
|
||||
EGG::Heap* heap = mgr->mpHeap;
|
||||
mgr->mResMax = *(u16*)(data + 8);
|
||||
mgr->mTexMax = *(u16*)(data + 0xA);
|
||||
mgr->mpResArr = new (heap, 4) JPAResource*[mgr->mResMax];
|
||||
mgr->mpTexArr = new (heap, 4) JPATexture*[mgr->mTexMax];
|
||||
void JPAResourceLoader::load_jpc(u8 const* data, JPAResourceManager* p_res_mgr) {
|
||||
EGG::Heap* heap = p_res_mgr->mpHeap;
|
||||
p_res_mgr->resMaxNum = *(u16*)(data + 8);
|
||||
p_res_mgr->texMaxNum = *(u16*)(data + 0xA);
|
||||
p_res_mgr->pResAry = new (heap) JPAResource*[p_res_mgr->resMaxNum];
|
||||
p_res_mgr->pTexAry = new (heap) JPATexture*[p_res_mgr->texMaxNum];
|
||||
JUT_ASSERT(199, (p_res_mgr->pResAry != NULL) && (p_res_mgr->pTexAry != 0));
|
||||
|
||||
u32 offset = 0x10;
|
||||
for (int i = 0; i < *(u16*)(data + 8); i++) {
|
||||
JPAResourceHeader* header = (JPAResourceHeader*)(data + offset);
|
||||
JPAResource* res = new (heap, 4) JPAResource();
|
||||
res->mFieldBlockNum = header->mFieldBlockNum;
|
||||
res->mpFieldBlocks = res->mFieldBlockNum != 0 ?
|
||||
new (heap, 4) JPAFieldBlock*[res->mFieldBlockNum] : NULL;
|
||||
res->mKeyBlockNum = header->mKeyBlockNum;
|
||||
res->mpKeyBlocks = res->mKeyBlockNum != 0 ?
|
||||
new (heap, 4) JPAKeyBlock*[res->mKeyBlockNum] : NULL;
|
||||
res->mTDB1Num = header->mTDB1Num;
|
||||
res->mpTDB1 = NULL;
|
||||
res->mUsrIdx = header->mUsrIdx;
|
||||
JPAResource* p_res = new (heap) JPAResource();
|
||||
JUT_ASSERT(211, p_res != NULL);
|
||||
p_res->fldNum = header->mFieldBlockNum;
|
||||
p_res->ppFld = p_res->fldNum != 0 ?
|
||||
new (heap) JPAFieldBlock*[p_res->fldNum] : NULL;
|
||||
JUT_ASSERT(216, (p_res->ppFld != NULL) || (p_res->fldNum == 0));
|
||||
p_res->keyNum = header->mKeyBlockNum;
|
||||
p_res->ppKey = p_res->keyNum != 0 ?
|
||||
new (heap) JPAKeyBlock*[p_res->keyNum] : NULL;
|
||||
JUT_ASSERT(221, (p_res->ppKey != NULL) || (p_res->keyNum == 0));
|
||||
p_res->texNum = header->mTDB1Num;
|
||||
p_res->mpTDB1 = NULL;
|
||||
p_res->mUsrIdx = header->mUsrIdx;
|
||||
|
||||
offset += 8;
|
||||
u32 field_idx = 0;
|
||||
u32 key_idx = 0;
|
||||
u32 fld_no = 0;
|
||||
u32 key_no = 0;
|
||||
|
||||
for (int j = 0; j < header->mBlockNum; j++) {
|
||||
u32 magic = *(u32*)(data + offset);
|
||||
u32 size = *(u32*)(data + offset + 4);
|
||||
switch (magic) {
|
||||
case 'FLD1':
|
||||
res->mpFieldBlocks[field_idx] = new (heap, 4) JPAFieldBlock(data + offset, heap);
|
||||
field_idx++;
|
||||
p_res->ppFld[fld_no] = new (heap) JPAFieldBlock(data + offset, heap);
|
||||
JUT_ASSERT(244, p_res->ppFld[fld_no] != NULL);
|
||||
fld_no++;
|
||||
break;
|
||||
case 'KFA1':
|
||||
res->mpKeyBlocks[key_idx] = new (heap, 4) JPAKeyBlock(data + offset);
|
||||
key_idx++;
|
||||
p_res->ppKey[key_no] = new (heap) JPAKeyBlock(data + offset);
|
||||
JUT_ASSERT(249, p_res->ppKey[key_no] != NULL);
|
||||
key_no++;
|
||||
break;
|
||||
case 'BEM1':
|
||||
res->mpDynamicsBlock = new (heap, 4) JPADynamicsBlock(data + offset);
|
||||
p_res->pDyn = new (heap) JPADynamicsBlock(data + offset);
|
||||
JUT_ASSERT(254, p_res->pDyn != NULL);
|
||||
break;
|
||||
case 'BSP1':
|
||||
res->mpBaseShape = new (heap, 4) JPABaseShape(data + offset, heap);
|
||||
p_res->pBsp = new (heap) JPABaseShape(data + offset, heap);
|
||||
JUT_ASSERT(258, p_res->pBsp != NULL);
|
||||
break;
|
||||
case 'ESP1':
|
||||
res->mpExtraShape = new (heap, 4) JPAExtraShape(data + offset);
|
||||
p_res->pEsp = new (heap) JPAExtraShape(data + offset);
|
||||
JUT_ASSERT(262, p_res->pEsp != NULL);
|
||||
break;
|
||||
case 'SSP1':
|
||||
res->mpChildShape = new (heap, 4) JPAChildShape(data + offset);
|
||||
p_res->pCsp = new (heap) JPAChildShape(data + offset);
|
||||
JUT_ASSERT(266, p_res->pCsp != NULL);
|
||||
break;
|
||||
case 'ETX1':
|
||||
res->mpExTexShape = new (heap, 4) JPAExTexShape(data + offset);
|
||||
p_res->pEts = new (heap) JPAExTexShape(data + offset);
|
||||
JUT_ASSERT(270, p_res->pEts != NULL);
|
||||
break;
|
||||
case 'TDB1':
|
||||
res->mpTDB1 = (const u16*)(data + offset + 8);
|
||||
p_res->mpTDB1 = (const u16*)(data + offset + 8);
|
||||
break;
|
||||
default:
|
||||
JUT_WARN(275, "JPA : wrong type block in jpc file %d %x\n", header->mBlockNum, offset);
|
||||
break;
|
||||
}
|
||||
offset += size;
|
||||
}
|
||||
|
||||
res->init(heap);
|
||||
mgr->registRes(res);
|
||||
p_res->init(heap);
|
||||
p_res_mgr->registRes(p_res);
|
||||
}
|
||||
|
||||
offset = *(u32*)(data + 0xC);
|
||||
for (int i = 0; i < *(u16*)(data + 0xA); i++) {
|
||||
u32 size = *(u32*)(data + offset + 4);
|
||||
JPATexture* tex = new (heap, 4) JPATexture(data + offset);
|
||||
mgr->registTex(tex);
|
||||
JPATexture* p_tex = new (heap) JPATexture(data + offset);
|
||||
JUT_ASSERT(298, p_tex != NULL);
|
||||
p_res_mgr->registTex(p_tex);
|
||||
offset += size;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,54 +1,47 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPAResourceManager
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAResourceManager.h"
|
||||
#include "JSystem/JParticle/JPADynamicsBlock.h"
|
||||
#include "JSystem/JParticle/JPAResource.h"
|
||||
#include "string.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include <cstring>
|
||||
|
||||
struct JPAResourceLoader {
|
||||
/* 8027D8A0 */ JPAResourceLoader(u8 const*, JPAResourceManager*);
|
||||
JPAResourceLoader(u8 const*, JPAResourceManager*);
|
||||
};
|
||||
|
||||
/* 80273E10-80273E68 26E750 0058+00 0/0 2/2 0/0 .text __ct__18JPAResourceManagerFPCvP7JKRHeap */
|
||||
JPAResourceManager::JPAResourceManager(void const* pData, EGG::Heap* pHeap) {
|
||||
mpResArr = NULL;
|
||||
mpTexArr = NULL;
|
||||
mResMax = 0;
|
||||
mResNum = 0;
|
||||
mTexMax = 0;
|
||||
mTexNum = 0;
|
||||
JPAResourceManager::JPAResourceManager(void const* p_jpc, EGG::Heap* pHeap) {
|
||||
pResAry = NULL;
|
||||
pTexAry = NULL;
|
||||
resMaxNum = 0;
|
||||
resRegNum = 0;
|
||||
texMaxNum = 0;
|
||||
texRegNum = 0;
|
||||
mpHeap = pHeap;
|
||||
JPAResourceLoader loader((u8 const*)pData, this);
|
||||
JUT_ASSERT(49, (p_jpc != 0) && (pHeap != 0));
|
||||
JPAResourceLoader loader((u8 const*)p_jpc, this);
|
||||
}
|
||||
|
||||
/* 80273E68-80273EA8 26E7A8 0040+00 1/1 1/1 0/0 .text getResource__18JPAResourceManagerCFUs */
|
||||
JPAResource* JPAResourceManager::getResource(u16 usrIdx) const {
|
||||
for (u16 i = 0; i < mResNum; i++)
|
||||
if (mpResArr[i]->getUsrIdx() == usrIdx)
|
||||
return mpResArr[i];
|
||||
for (u16 i = 0; i < resRegNum; i++)
|
||||
if (pResAry[i]->getUsrIdx() == usrIdx)
|
||||
return pResAry[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 80273EA8-80273EEC 26E7E8 0044+00 0/0 2/2 0/0 .text
|
||||
* checkUserIndexDuplication__18JPAResourceManagerCFUs */
|
||||
bool JPAResourceManager::checkUserIndexDuplication(u16 usrIdx) const {
|
||||
for (s32 i = 0; i < mResNum; i++)
|
||||
if (mpResArr[i]->getUsrIdx() == usrIdx)
|
||||
for (s32 i = 0; i < resRegNum; i++)
|
||||
if (pResAry[i]->getUsrIdx() == usrIdx)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 80273EEC-80273F8C 26E82C 00A0+00 0/0 2/2 0/0 .text
|
||||
* swapTexture__18JPAResourceManagerFPC7ResTIMGPCc */
|
||||
const EGG::ResTIMG* JPAResourceManager::swapTexture(EGG::ResTIMG const* img, char const* swapName) {
|
||||
const EGG::ResTIMG* ret = NULL;
|
||||
EGG::Texture* tex = NULL;
|
||||
|
||||
for (s32 i = 0; i < mTexNum; i++) {
|
||||
if (strcmp(swapName, mpTexArr[i]->getName()) == 0) {
|
||||
EGG::Texture* tex = mpTexArr[i]->getJUTTexture();
|
||||
for (s32 i = 0; i < texRegNum; i++) {
|
||||
if (strcmp(swapName, pTexAry[i]->getName()) == 0) {
|
||||
tex = pTexAry[i]->getJUTTexture();
|
||||
ret = tex->getTexInfo();
|
||||
tex->storeTIMG(img, (u8)0);
|
||||
break;
|
||||
@@ -58,21 +51,18 @@ const EGG::ResTIMG* JPAResourceManager::swapTexture(EGG::ResTIMG const* img, cha
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80273F8C-80273FAC 26E8CC 0020+00 0/0 1/1 0/0 .text
|
||||
* registRes__18JPAResourceManagerFP11JPAResource */
|
||||
void JPAResourceManager::registRes(JPAResource* res) {
|
||||
mpResArr[mResNum] = res;
|
||||
mResNum++;
|
||||
JUT_ASSERT(151, resRegNum < resMaxNum);
|
||||
pResAry[resRegNum] = res;
|
||||
resRegNum++;
|
||||
}
|
||||
|
||||
/* 80273FAC-80273FCC 26E8EC 0020+00 0/0 1/1 0/0 .text
|
||||
* registTex__18JPAResourceManagerFP10JPATexture */
|
||||
void JPAResourceManager::registTex(JPATexture* tex) {
|
||||
mpTexArr[mTexNum] = tex;
|
||||
mTexNum++;
|
||||
JUT_ASSERT(166, texRegNum < texMaxNum);
|
||||
pTexAry[texRegNum] = tex;
|
||||
texRegNum++;
|
||||
}
|
||||
|
||||
/* 80273FCC-80274010 26E90C 0044+00 0/0 6/6 0/0 .text getResUserWork__18JPAResourceManagerCFUs */
|
||||
u32 JPAResourceManager::getResUserWork(u16 usrIdx) const {
|
||||
u32 ret = 0;
|
||||
|
||||
|
||||
@@ -1,15 +1,8 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JPATexture
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPATexture.h"
|
||||
|
||||
/* 8027D7D4-8027D83C 278114 0068+00 0/0 1/1 0/0 .text __ct__10JPATextureFPCUc */
|
||||
JPATexture::JPATexture(u8 const* pData) {
|
||||
mpData = (const JPATextureData*)pData;
|
||||
mTexture.store(&mpData->mResTIMG);
|
||||
}
|
||||
|
||||
/* 8027D83C-8027D8A0 27817C 0064+00 1/0 0/0 0/0 .text __dt__10JPATextureFv */
|
||||
JPATexture::~JPATexture() {}
|
||||
|
||||
@@ -54,7 +54,7 @@ int dAcBombf_c::actorPostCreate() {
|
||||
mMtx_c mtx;
|
||||
mtx.ZXYrotS(mRotation.x, mRotation.y, mRotation.z);
|
||||
mVec3_c v;
|
||||
PSMTXMultVecSR(mtx, mVec3_c::Ey, v);
|
||||
MTXMultVecSR(mtx, mVec3_c::Ey, v);
|
||||
mVec3_c v3 = mPosition + v * 10.0f;
|
||||
mVec3_c v4 = mPosition - v * 10.0f;
|
||||
|
||||
@@ -184,7 +184,7 @@ void dAcBombf_c::executeState_Wait() {
|
||||
f32 scaleFactor = mScale.x;
|
||||
if (field_0x3D2 == 0 || field_0x3D2 == 2) {
|
||||
mVec3_c up;
|
||||
PSMTXMultVecSR(mWorldMtx, mVec3_c::Ey, up);
|
||||
MTXMultVecSR(mWorldMtx, mVec3_c::Ey, up);
|
||||
mVec3_c upScaled = up * 30.0f;
|
||||
mVec3_c checkPos = mPosition + upScaled;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ STATE_DEFINE(dAcTWoodArea_c, Wait);
|
||||
|
||||
int dAcTWoodArea_c::actorCreate() {
|
||||
mStateMgr.changeState(StateID_Init);
|
||||
PSMTXTrans(mWorldMtx.m, mPosition.x, mPosition.y, mPosition.z);
|
||||
MTXTrans(mWorldMtx.m, mPosition.x, mPosition.y, mPosition.z);
|
||||
mBoundingBox.mMin = mVec3_c(-0.0f, -0.0f, -0.0f);
|
||||
mBoundingBox.mMax = mVec3_c(0.0f, 0.0f, 0.0f);
|
||||
return SUCCEEDED;
|
||||
|
||||
@@ -75,8 +75,8 @@ int dAcEhb_leaf_c::actorExecute() {
|
||||
updateMatrix();
|
||||
if (mType != 0) {
|
||||
Mtx m;
|
||||
PSMTXScale(m, mTimeAreaStruct.field_0x00, mTimeAreaStruct.field_0x00, mTimeAreaStruct.field_0x00);
|
||||
PSMTXConcat(mWorldMtx.m, m, mWorldMtx.m);
|
||||
MTXScale(m, mTimeAreaStruct.field_0x00, mTimeAreaStruct.field_0x00, mTimeAreaStruct.field_0x00);
|
||||
MTXConcat(mWorldMtx.m, m, mWorldMtx.m);
|
||||
}
|
||||
mModel.getModel().setLocalMtx(mWorldMtx);
|
||||
mModel.getModel().calc(false);
|
||||
|
||||
@@ -1148,7 +1148,7 @@ void dAcEremly_c::executeState_Fly() {
|
||||
mSomeCounter++;
|
||||
mVec3_c v(0.f, 0.f, 0.f);
|
||||
|
||||
v.offsetWithAngle(a, -10.f + _weird_zero);
|
||||
getXZCirclePoint(v, a, -10.f + _weird_zero);
|
||||
|
||||
field_0xAF8.set(v);
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ int dAcOF400GateSeal_c::actorPostCreate() {
|
||||
dAcOdoor_c *door;
|
||||
|
||||
while (notDone && parent != nullptr) {
|
||||
if (10000.0f < PSVECSquareDistance(mPosition, parent->mPosition)) {
|
||||
if (10000.0f < VECSquareDistance(mPosition, parent->mPosition)) {
|
||||
parent = (dAcOdoor_c *)fManager_c::searchBaseByProfName(fProfile::OBJ_DOOR, parent);
|
||||
door = parent;
|
||||
} else {
|
||||
|
||||
@@ -42,7 +42,7 @@ int dAcObjBirdSp_c::actorExecute() {
|
||||
mVec3_c posChange(0, -0.2, 1.0);
|
||||
mMtx_c matrix;
|
||||
matrix.ZXYrotS(mRotation);
|
||||
PSMTXMultVec(matrix.m, posChange, posChange);
|
||||
MTXMultVec(matrix.m, posChange, posChange);
|
||||
|
||||
f32 angle = (mPosition - dBird_c::getInstance()->mPosition).dot(posChange);
|
||||
if (angle < 0.0f) {
|
||||
|
||||
@@ -35,7 +35,7 @@ int dAcODecoB_c::doDelete() {
|
||||
|
||||
int dAcODecoB_c::actorExecute() {
|
||||
mStateMgr.executeState();
|
||||
PSMTXTrans(mWorldMtx, mPosition.x, mPosition.y, mPosition.z);
|
||||
MTXTrans(mWorldMtx, mPosition.x, mPosition.y, mPosition.z);
|
||||
mWorldMtx.ZXYrotM(mRotation);
|
||||
mMdl.setLocalMtx(mWorldMtx);
|
||||
return SUCCEEDED;
|
||||
|
||||
@@ -85,7 +85,7 @@ int dAcOFlyingClawshotTarget_c::actorExecute() {
|
||||
dAcPy_c *player = dAcPy_c::LINK;
|
||||
|
||||
mVec3_c markPoint;
|
||||
PSMTXMultVec(mWorldMtx, mMarkPoint, markPoint);
|
||||
MTXMultVec(mWorldMtx, mMarkPoint, markPoint);
|
||||
|
||||
f32 dist_to = markPoint.squareDistance(player->mPosition);
|
||||
|
||||
|
||||
@@ -852,7 +852,7 @@ void dAcOivyRope_c::fn_256_D3D0(mVec3_c &pOut1, mVec3_c &pOut2, s16 param2, bool
|
||||
getXZCirclePoint(somevec, swingAngle, something);
|
||||
|
||||
mVec3_c somevec2(0.f, -25.f, float0);
|
||||
PSMTXMultVec(m, somevec, somevec2);
|
||||
MTXMultVec(m, somevec, somevec2);
|
||||
somevec2 += somevec;
|
||||
if (somevec2.z < float0) {
|
||||
somevec2.z = float0;
|
||||
@@ -860,7 +860,7 @@ void dAcOivyRope_c::fn_256_D3D0(mVec3_c &pOut1, mVec3_c &pOut2, s16 param2, bool
|
||||
|
||||
// name 100% guess
|
||||
mVec3_c swingTarget;
|
||||
PSMTXMultVec(m, somevec, swingTarget);
|
||||
MTXMultVec(m, somevec, swingTarget);
|
||||
|
||||
cLib::addCalcPos(&pOut2, swingTarget, 0.3f, 50.f, 1.f);
|
||||
|
||||
|
||||
@@ -60,12 +60,12 @@ int dAcOPoolCock_c::actorExecute() {
|
||||
mMtx_c tmp2;
|
||||
|
||||
mVec3_c translation = mOpenDirection * mOpenProgress;
|
||||
PSMTXTrans(tmp1, translation.x, translation.y, translation.z);
|
||||
PSMTXConcat(mdl1Transform, tmp1, mdl1Transform);
|
||||
MTXTrans(tmp1, translation.x, translation.y, translation.z);
|
||||
MTXConcat(mdl1Transform, tmp1, mdl1Transform);
|
||||
|
||||
mVec3_c translation2 = -translation;
|
||||
PSMTXTrans(tmp2, translation2.x, translation2.y, translation2.z);
|
||||
PSMTXConcat(mdl2Transform, tmp2, mdl2Transform);
|
||||
MTXTrans(tmp2, translation2.x, translation2.y, translation2.z);
|
||||
MTXConcat(mdl2Transform, tmp2, mdl2Transform);
|
||||
|
||||
mdl2Transform.YrotM(-0x8000);
|
||||
mModels[0].setLocalMtx(mdl1Transform);
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "d/d_camera.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/d_stage_mgr.h"
|
||||
#include "d/d_vec.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
#include "d/snd/d_snd_small_effect_mgr.h"
|
||||
#include "d/t/d_t_insect.h"
|
||||
@@ -476,7 +477,8 @@ void dAcOsoil_c::giveItemFinal() {
|
||||
|
||||
void dAcOsoil_c::calcItemAndInsectSpawnPos() {
|
||||
mItemAndInsectSpawnPos = mPosition;
|
||||
mItemAndInsectSpawnPos.offsetWithAngle(dAcPy_c::LINK->getRotation().y, 30.f);
|
||||
// TODO not sure about this s16 cast
|
||||
getXZCirclePoint(mItemAndInsectSpawnPos, (s16)dAcPy_c::LINK->getRotation().y, 30.f);
|
||||
}
|
||||
|
||||
void dAcOsoil_c::fn_255_1A50() {
|
||||
|
||||
@@ -35,15 +35,15 @@ int dAcOspike_c::create() {
|
||||
updateMatrix();
|
||||
mMdl.setLocalMtx(mWorldMtx);
|
||||
mVec3_c tmp;
|
||||
PSMTXMultVecSR(mWorldMtx.m, mVec3_c::Ex, tmp);
|
||||
MTXMultVecSR(mWorldMtx.m, mVec3_c::Ex, tmp);
|
||||
mCollision.SetAtVec(tmp);
|
||||
|
||||
mMtx_c mtx;
|
||||
mtx.XrotS(mRotation.x);
|
||||
mtx.ZrotM(mRotation.z);
|
||||
mVec3_c tmp2, tmp3;
|
||||
PSMTXMultVecSR(mtx.m, sVec1, tmp2);
|
||||
PSMTXMultVecSR(mtx.m, sVec2, tmp3);
|
||||
MTXMultVecSR(mtx.m, sVec1, tmp2);
|
||||
MTXMultVecSR(mtx.m, sVec2, tmp3);
|
||||
|
||||
if (tmp2.x > tmp3.x) {
|
||||
f32 copy = tmp2.x;
|
||||
|
||||
@@ -176,7 +176,7 @@ int dAcOTowerHandD101_c::actorPostCreate() {
|
||||
dAcObjBase_c *ac = dAcObjBase_c::getNextObject(&dAcItem_c::sItemList, nullptr);
|
||||
f32 distLimit = 90000.0f;
|
||||
while (handClosed && ac != nullptr) {
|
||||
if (PSVECSquareDistance(pos, ac->mPosition) < distLimit) {
|
||||
if (VECSquareDistance(pos, ac->mPosition) < distLimit) {
|
||||
handClosed = false;
|
||||
mHeldItem.link(static_cast<dAcItem_c *>(ac));
|
||||
} else {
|
||||
@@ -210,7 +210,7 @@ int dAcOTowerHandD101_c::actorExecute() {
|
||||
UNKWORD w = link->IfCurrentActionToActor(this, 0x3D);
|
||||
bool b = getItem(item);
|
||||
if (!b && item->isStateWait()) {
|
||||
f32 dist = PSVECSquareDistance(item->mPosition, link->mPosition);
|
||||
f32 dist = VECSquareDistance(item->mPosition, link->mPosition);
|
||||
if (w == 0 && dist < 15625.0f) {
|
||||
item->getItemFromBWheelItem();
|
||||
} else {
|
||||
@@ -240,13 +240,13 @@ int dAcOTowerHandD101_c::actorExecute() {
|
||||
mMtx_c tmpMtx4;
|
||||
|
||||
getLoc1Mtx(tmpMtx2);
|
||||
PSMTXScale(tmpMtx1, newScale.x, newScale.y, newScale.z);
|
||||
PSMTXConcat(tmpMtx2, tmpMtx1, tmpMtx2);
|
||||
MTXScale(tmpMtx1, newScale.x, newScale.y, newScale.z);
|
||||
MTXConcat(tmpMtx2, tmpMtx1, tmpMtx2);
|
||||
mLoc1Mtx.copyFrom(tmpMtx2);
|
||||
|
||||
getLoc2Mtx(tmpMtx3);
|
||||
PSMTXScale(tmpMtx4, newScale.x, newScale.y, newScale.z);
|
||||
PSMTXConcat(tmpMtx3, tmpMtx4, tmpMtx3);
|
||||
MTXScale(tmpMtx4, newScale.x, newScale.y, newScale.z);
|
||||
MTXConcat(tmpMtx3, tmpMtx4, tmpMtx3);
|
||||
mLoc2Mtx.copyFrom(tmpMtx3);
|
||||
|
||||
if (mEffects.hasEmitters()) {
|
||||
@@ -292,13 +292,13 @@ int dAcOTowerHandD101_c::actorExecuteInEvent() {
|
||||
mMtx_c tmpMtx4;
|
||||
|
||||
getLoc1Mtx(tmpMtx2);
|
||||
PSMTXScale(tmpMtx1, newScale.x, newScale.y, newScale.z);
|
||||
PSMTXConcat(tmpMtx2, tmpMtx1, tmpMtx2);
|
||||
MTXScale(tmpMtx1, newScale.x, newScale.y, newScale.z);
|
||||
MTXConcat(tmpMtx2, tmpMtx1, tmpMtx2);
|
||||
mLoc1Mtx.copyFrom(tmpMtx2);
|
||||
|
||||
getLoc2Mtx(tmpMtx3);
|
||||
PSMTXScale(tmpMtx4, newScale.x, newScale.y, newScale.z);
|
||||
PSMTXConcat(tmpMtx3, tmpMtx4, tmpMtx3);
|
||||
MTXScale(tmpMtx4, newScale.x, newScale.y, newScale.z);
|
||||
MTXConcat(tmpMtx3, tmpMtx4, tmpMtx3);
|
||||
mLoc2Mtx.copyFrom(tmpMtx3);
|
||||
|
||||
if (mEffects.hasEmitters()) {
|
||||
@@ -572,7 +572,7 @@ void dAcOTowerHandD101_c::executeState_RemainOpen() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
f32 linkDistToItem = PSVECSquareDistance(pos, link->mPosition);
|
||||
f32 linkDistToItem = VECSquareDistance(pos, link->mPosition);
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'wait') {
|
||||
return;
|
||||
}
|
||||
@@ -604,7 +604,7 @@ void dAcOTowerHandD101_c::executeState_Close() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
f32 linkDistToItem = PSVECSquareDistance(pos, link->mPosition);
|
||||
f32 linkDistToItem = VECSquareDistance(pos, link->mPosition);
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'wait') {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
return;
|
||||
@@ -656,7 +656,7 @@ void dAcOTowerHandD101_c::executeState_Open() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
f32 linkDistToItem = PSVECSquareDistance(pos, link->mPosition);
|
||||
f32 linkDistToItem = VECSquareDistance(pos, link->mPosition);
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'wait') {
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mStateMgr.changeState(StateID_RemainOpen);
|
||||
@@ -714,7 +714,7 @@ void dAcOTowerHandD101_c::executeState_RemainClosed() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
f32 linkDistToItem = PSVECSquareDistance(pos, link->mPosition);
|
||||
f32 linkDistToItem = VECSquareDistance(pos, link->mPosition);
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'wait') {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
return;
|
||||
|
||||
@@ -67,8 +67,8 @@ int dAcOtriforce_c::actorExecute() {
|
||||
dCcS::GetInstance()->Set(&mCollision);
|
||||
updateMatrix();
|
||||
Mtx m;
|
||||
PSMTXScale(m, mScale.x, mScale.y, mScale.z);
|
||||
PSMTXConcat(mWorldMtx.m, m, mWorldMtx.m);
|
||||
MTXScale(m, mScale.x, mScale.y, mScale.z);
|
||||
MTXConcat(mWorldMtx.m, m, mWorldMtx.m);
|
||||
mMdl.setLocalMtx(mWorldMtx);
|
||||
mAnm.play();
|
||||
mEffects.holdEffect(PARTICLE_RESOURCE_ID_MAPPING_967_, mWorldMtx, nullptr, nullptr);
|
||||
|
||||
@@ -681,7 +681,7 @@ mVec3_c dAcOtubo_c::getCenter() const {
|
||||
mMtx_c m;
|
||||
m.ZXYrotS(mRotation.x, mRotation.y, mRotation.z);
|
||||
mVec3_c dir;
|
||||
PSMTXMultVecSR(m, mVec3_c::Ey, dir);
|
||||
MTXMultVecSR(m, mVec3_c::Ey, dir);
|
||||
|
||||
return mPosition + dir * 28.f;
|
||||
}
|
||||
|
||||
@@ -385,7 +385,7 @@ mVec3_c dAcOTumbleWeed_c::getTumblePosition() const {
|
||||
mMtx_c mtx;
|
||||
mVec3_c vec;
|
||||
mtx.ZXYrotS(mRotation.x, mRotation.y, mRotation.z);
|
||||
PSMTXMultVecSR(mtx, mVec3_c::Ey, vec);
|
||||
MTXMultVecSR(mtx, mVec3_c::Ey, vec);
|
||||
return mPosition + vec * 40.f;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ int dTgColBombShield::create() {
|
||||
mColMtx.transS(mPosition.x, mPosition.y + mScale.y * 0.5f - 0.05f, mPosition.z);
|
||||
mColMtx.ZXYrotM(mRotation.x, mRotation.y, mRotation.z);
|
||||
mMtx_c tmp;
|
||||
PSMTXScale(tmp, mScale.x, mScale.y, mScale.z);
|
||||
MTXScale(tmp, mScale.x, mScale.y, mScale.z);
|
||||
mColMtx += tmp;
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
return SUCCEEDED;
|
||||
|
||||
@@ -187,10 +187,10 @@ void dTgInsect_c::executeState_Wait() {
|
||||
mInsectRespawnTimers[i]--;
|
||||
} else if (mInsectRespawnTimers[i] == 0) {
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXTrans(mtx, mPosition.x, mPosition.y, mPosition.z);
|
||||
MTXTrans(mtx, mPosition.x, mPosition.y, mPosition.z);
|
||||
nw4r::math::MTX34 scale;
|
||||
PSMTXScale(scale, mScale.x, mScale.y, mScale.x);
|
||||
PSMTXConcat(mtx, scale, mtx);
|
||||
MTXScale(scale, mScale.x, mScale.y, mScale.x);
|
||||
MTXConcat(mtx, scale, mtx);
|
||||
nw4r::math::AABB aabb(-100, 0, -100, 100, 100, 100);
|
||||
aabb.Set(&aabb, &mtx);
|
||||
if (fn_801BB750(&aabb, 10000)) {
|
||||
|
||||
@@ -9,9 +9,9 @@ const f32 dTgNoEffectArea_c::sFloat2 = 100.0f;
|
||||
|
||||
int dTgNoEffectArea_c::create() {
|
||||
mScale *= 0.01f;
|
||||
PSMTXTrans(mMtx, mPosition.x, mPosition.y, mPosition.z);
|
||||
MTXTrans(mMtx, mPosition.x, mPosition.y, mPosition.z);
|
||||
mMtx.YrotM(mRotation.y);
|
||||
PSMTXInverse(mMtx, mMtx);
|
||||
MTXInverse(mMtx, mMtx);
|
||||
addToList(sList);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ int dTgSndAr_c::create() {
|
||||
|
||||
switch (getTypeFromParams()) {
|
||||
case 0:
|
||||
PSMTXTrans(mtx.m, mPosition.x, mPosition.y, mPosition.z);
|
||||
MTXTrans(mtx.m, mPosition.x, mPosition.y, mPosition.z);
|
||||
mtx.YrotM(mRotation.y);
|
||||
PSMTXInverse(mtx.m, mtx.m);
|
||||
MTXInverse(mtx.m, mtx.m);
|
||||
break;
|
||||
case 3: mRail.initWithPathIndex(mParams >> 8 & 0xFF, mRoomID, 0); break;
|
||||
}
|
||||
@@ -83,7 +83,7 @@ inline bool inRange(f32 val, f32 tolerance) {
|
||||
// Box
|
||||
bool dTgSndAr_c::checkAlg0(const mVec3_c &pos) {
|
||||
mVec3_c c2 = pos;
|
||||
PSMTXMultVec(mtx.m, c2, c2);
|
||||
MTXMultVec(mtx.m, c2, c2);
|
||||
f32 sxLower = -50.0f * mScale.x;
|
||||
f32 sxUpper = 50.0f * mScale.x;
|
||||
f32 syLower = 0.0f;
|
||||
@@ -102,7 +102,7 @@ bool dTgSndAr_c::checkAlg0(const mVec3_c &pos) {
|
||||
bool dTgSndAr_c::checkAlg1(const mVec3_c &pos) {
|
||||
f32 tgtDist = mScale.x * 100.0f;
|
||||
f32 tgtDist2 = tgtDist * tgtDist;
|
||||
return PSVECSquareDistance(mPosition, pos) < tgtDist2;
|
||||
return VECSquareDistance(mPosition, pos) < tgtDist2;
|
||||
}
|
||||
|
||||
// Cylinder
|
||||
@@ -152,11 +152,11 @@ bool dTgSndAr_c::checkAlg3(const mVec3_c &pos) {
|
||||
return d < radius;
|
||||
} else {
|
||||
// Otherwise check if we are within the spheres around the endpoints
|
||||
f32 distSq = PSVECSquareDistance(unk.GetStart(), pos);
|
||||
f32 distSq = VECSquareDistance(unk.GetStart(), pos);
|
||||
if (distSq < radius) {
|
||||
return true;
|
||||
} else {
|
||||
distSq = PSVECSquareDistance(unk.GetEnd(), pos);
|
||||
distSq = VECSquareDistance(unk.GetEnd(), pos);
|
||||
return distSq < radius;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ bool dAcBase_c::getDistanceToActor(dAcBase_c *actor, f32 distThresh, f32 *outDis
|
||||
bool isWithinThreshhold = false;
|
||||
|
||||
if (actor != nullptr) {
|
||||
distSquared = PSVECSquareDistance(mPosition, actor->mPosition);
|
||||
distSquared = VECSquareDistance(mPosition, actor->mPosition);
|
||||
|
||||
if (distSquared <= distThresh * distThresh) {
|
||||
isWithinThreshhold = true;
|
||||
@@ -414,7 +414,7 @@ bool dAcBase_c::getDistanceAndAngleToActor(
|
||||
mAng angleToActorY(0), angleToActorX(0);
|
||||
|
||||
if (actor != nullptr) {
|
||||
distSquared = PSVECSquareDistance(mPosition, actor->mPosition);
|
||||
distSquared = VECSquareDistance(mPosition, actor->mPosition);
|
||||
angleToActorY.set(cLib::targetAngleY(mPosition, actor->mPosition));
|
||||
angleToActorX.set(cLib::targetAngleX(mPosition, actor->mPosition));
|
||||
|
||||
@@ -453,11 +453,11 @@ bool dAcBase_c::getDistanceAndAngleToPlayer(
|
||||
}
|
||||
|
||||
f32 dAcBase_c::getDistToPlayer() {
|
||||
return EGG::Math<f32>::sqrt(PSVECSquareDistance(mPosition, dAcPy_c::LINK->mPosition));
|
||||
return EGG::Math<f32>::sqrt(VECSquareDistance(mPosition, dAcPy_c::LINK->mPosition));
|
||||
}
|
||||
|
||||
f32 dAcBase_c::getSquareDistToPlayer() {
|
||||
return PSVECSquareDistance(mPosition, dAcPy_c::LINK->mPosition);
|
||||
return VECSquareDistance(mPosition, dAcPy_c::LINK->mPosition);
|
||||
}
|
||||
|
||||
// Some weirdness with the float registers being used
|
||||
|
||||
@@ -26,8 +26,8 @@ void dAcOswMdlCallback_c::timingB(u32 nodeId, nw4r::g3d::WorldMtxManip *manip, n
|
||||
mMtx_c mtx1;
|
||||
mMtx_c mtx2;
|
||||
manip->GetMtx(mtx1);
|
||||
PSMTXTrans(mtx2, mElevation, 0.0f, 0.0f);
|
||||
PSMTXConcat(mtx1, mtx2, mtx1);
|
||||
MTXTrans(mtx2, mElevation, 0.0f, 0.0f);
|
||||
MTXConcat(mtx1, mtx2, mtx1);
|
||||
manip->SetMtx(mtx1);
|
||||
}
|
||||
}
|
||||
@@ -189,8 +189,8 @@ int dAcOsw_c::actorExecute() {
|
||||
updateMatrix();
|
||||
field_0x5B8.copyFrom(mWorldMtx);
|
||||
mMtx_c tmp;
|
||||
PSMTXTrans(tmp, 0.0f, mButtonCtrl.mElevation, 0.0f);
|
||||
PSMTXConcat(field_0x5B8, tmp, field_0x5B8);
|
||||
MTXTrans(tmp, 0.0f, mButtonCtrl.mElevation, 0.0f);
|
||||
MTXConcat(field_0x5B8, tmp, field_0x5B8);
|
||||
mModel.setScale(mScale);
|
||||
mModel.setLocalMtx(mWorldMtx);
|
||||
mModel.calc(false);
|
||||
|
||||
@@ -2418,7 +2418,7 @@ void dAcTbox_c::fn_8026DAC0(mAng &ang) {
|
||||
}
|
||||
|
||||
void dAcTbox_c::fn_8026DAD0(const mVec3_c *a, mVec3_c *b) const {
|
||||
PSMTXMultVec(mWorldMtx, *a, *b);
|
||||
MTXMultVec(mWorldMtx, *a, *b);
|
||||
}
|
||||
|
||||
void dAcTbox_c::getCylParams(mVec3_c *c, f32 *r, f32 *h) const {
|
||||
@@ -2529,7 +2529,7 @@ void dAcTbox_c::getCylParams(mVec3_c *c, f32 *r, f32 *h) const {
|
||||
break;
|
||||
}
|
||||
if (c != nullptr) {
|
||||
PSMTXMultVec(mWorldMtx, *c, *c);
|
||||
MTXMultVec(mWorldMtx, *c, *c);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2631,7 +2631,7 @@ bool dAcTbox_c::checkForLinkBonk() {
|
||||
}
|
||||
|
||||
mVec3_c linkPos;
|
||||
PSMTXMultVec(mCcD3.mInvMtx, link->mPosition, linkPos);
|
||||
MTXMultVec(mCcD3.mInvMtx, link->mPosition, linkPos);
|
||||
mVec3_c ccLo, ccHi;
|
||||
getCCBounds(&ccLo, &ccHi);
|
||||
// Math performed in local coordinate space
|
||||
|
||||
@@ -886,10 +886,10 @@ void dBgS_MoveBGProc_Typical(
|
||||
mMtx_c a;
|
||||
if (i_bgw->GetOldInvMtx(&a) != NULL) {
|
||||
mVec3_c moveOld;
|
||||
PSMTXMultVec(a, *i_pos, moveOld);
|
||||
MTXMultVec(a, *i_pos, moveOld);
|
||||
|
||||
mVec3_c movePos;
|
||||
PSMTXMultVec(i_bgw->mInvMtx, moveOld, movePos);
|
||||
MTXMultVec(i_bgw->mInvMtx, moveOld, movePos);
|
||||
*i_pos = movePos;
|
||||
}
|
||||
}
|
||||
|
||||
+13
-13
@@ -31,9 +31,9 @@ cBgW::cBgW()
|
||||
mpGrp(nullptr),
|
||||
mpNodeTree(nullptr),
|
||||
mNeedsFullTransform(true) {
|
||||
PSMTXIdentity(mInvMtx);
|
||||
PSMTXIdentity(mMtx);
|
||||
PSMTXIdentity(mMtxUnk);
|
||||
MTXIdentity(mInvMtx);
|
||||
MTXIdentity(mMtx);
|
||||
MTXIdentity(mMtxUnk);
|
||||
}
|
||||
|
||||
cBgW::~cBgW() {
|
||||
@@ -65,24 +65,24 @@ void cBgW::FreeArea() {
|
||||
}
|
||||
|
||||
u32 cBgW::GetOldInvMtx(mMtx_c *m) {
|
||||
return PSMTXInverse(mMtx, *m);
|
||||
return MTXInverse(mMtx, *m);
|
||||
}
|
||||
|
||||
void cBgW::UpdateMtx() {
|
||||
if (!mpMdlMtx) {
|
||||
PSMTXIdentity(mInvMtx);
|
||||
PSMTXIdentity(mMtx);
|
||||
PSMTXIdentity(mMtxUnk);
|
||||
MTXIdentity(mInvMtx);
|
||||
MTXIdentity(mMtx);
|
||||
MTXIdentity(mMtxUnk);
|
||||
} else {
|
||||
PSMTXCopy(*mpMdlMtx, mInvMtx);
|
||||
MTXCopy(*mpMdlMtx, mInvMtx);
|
||||
if (mpScale) {
|
||||
mMtx_c scale;
|
||||
PSMTXScale(scale, mpScale->x, mpScale->y, mpScale->z);
|
||||
PSMTXConcat(mInvMtx, scale, mInvMtx);
|
||||
MTXScale(scale, mpScale->x, mpScale->y, mpScale->z);
|
||||
MTXConcat(mInvMtx, scale, mInvMtx);
|
||||
}
|
||||
|
||||
PSMTXCopy(mInvMtx, mMtx);
|
||||
PSMTXCopy(mInvMtx, mMtxUnk);
|
||||
MTXCopy(mInvMtx, mMtx);
|
||||
MTXCopy(mInvMtx, mMtxUnk);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ void cBgW::GlobalVtx() {
|
||||
} else {
|
||||
int i = 0;
|
||||
do {
|
||||
PSMTXMultVec(mInvMtx, mpBgd->mVtxTbl[i], mpVtxTbl[i]);
|
||||
MTXMultVec(mInvMtx, mpBgd->mVtxTbl[i], mpVtxTbl[i]);
|
||||
i++;
|
||||
} while (i < mpBgd->mVtxNum);
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ void dBgWKCol::vt_0x3C() {
|
||||
bool dBgWKCol::LineCheck(cBgS_LinChk *pLine) {
|
||||
mVec3_c diff;
|
||||
VEC3Sub(diff, pLine->mLin.GetStartP(), pLine->mLin.GetEndP());
|
||||
f32 mag = PSVECMag(diff);
|
||||
f32 mag = VECMag(diff);
|
||||
if (mag < 500.0f) {
|
||||
int tmp0 = (int)(mag * 0.002f) + 1;
|
||||
f32 tmp1 = mag / (tmp0 + 1);
|
||||
|
||||
@@ -49,9 +49,9 @@ bool dBgWTime::GetTriPnt(cBgS_PolyInfo const &info, mVec3_c *pA, mVec3_c *pB, mV
|
||||
pB->set(1.f, 0.f, -1.f);
|
||||
pC->set(-1.f, 0.f, -1.f);
|
||||
|
||||
PSMTXMultVec(mtx, *pA, *pA);
|
||||
PSMTXMultVec(mtx, *pB, *pB);
|
||||
PSMTXMultVec(mtx, *pC, *pC);
|
||||
MTXMultVec(mtx, *pA, *pA);
|
||||
MTXMultVec(mtx, *pB, *pB);
|
||||
MTXMultVec(mtx, *pC, *pC);
|
||||
|
||||
*pA += info.GetField0x20();
|
||||
*pB += info.GetField0x20();
|
||||
|
||||
+30
-30
@@ -19,7 +19,7 @@
|
||||
#include "rvl/MTX.h" // IWYU pragma: export
|
||||
|
||||
static inline void MtxTransMinusXYZ(mMtx_c &mtx, f32 x, f32 y, f32 z) {
|
||||
PSMTXTrans(mtx, -x, -y, -z);
|
||||
MTXTrans(mtx, -x, -y, -z);
|
||||
}
|
||||
|
||||
mVec3_c cCcD_ShapeAttr::sVirtualCenter = mVec3_c::Zero;
|
||||
@@ -692,7 +692,7 @@ bool cCcD_TriAttr::GetNVec(const mVec3_c &pnt, mVec3_c *pOut) const {
|
||||
*pOut = GetN();
|
||||
} else {
|
||||
*pOut = GetN();
|
||||
PSVECScale(*pOut, *pOut, -1.0f);
|
||||
VECScale(*pOut, *pOut, -1.0f);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -728,8 +728,8 @@ cCcD_UnkAttr::~cCcD_UnkAttr() {}
|
||||
bool cCcD_UnkAttr::Calc(const mVec3_c &start, const mVec3_c &end, mVec3_c *pOut) {
|
||||
mVec3_c tmp0, tmp1;
|
||||
const mMtx_c &inv = mInvMtx;
|
||||
PSMTXMultVec(inv, start, tmp0);
|
||||
PSMTXMultVec(inv, end, tmp1);
|
||||
MTXMultVec(inv, start, tmp0);
|
||||
MTXMultVec(inv, end, tmp1);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
bool tmp0Min = tmp0(i) < mMin(i);
|
||||
bool tmp0Max = tmp0(i) > mMax(i);
|
||||
@@ -761,7 +761,7 @@ bool cCcD_UnkAttr::Calc(const mVec3_c &start, const mVec3_c &end, mVec3_c *pOut)
|
||||
(*pOut)(i) = (tmp0(i) + tmp1(i)) * 0.5f;
|
||||
}
|
||||
}
|
||||
PSMTXMultVec(mMtx, *pOut, *pOut);
|
||||
MTXMultVec(mMtx, *pOut, *pOut);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -827,23 +827,23 @@ void cCcD_UnkAttr::CalcAabBox() {
|
||||
mVec3_c a;
|
||||
|
||||
a = start;
|
||||
PSMTXMultVec(mtx, a, a);
|
||||
MTXMultVec(mtx, a, a);
|
||||
mAab.SetMinMax(a);
|
||||
|
||||
a = end;
|
||||
PSMTXMultVec(mtx, a, a);
|
||||
MTXMultVec(mtx, a, a);
|
||||
mAab.SetMinMax(a);
|
||||
|
||||
a.x = start.x;
|
||||
a.y = start.y;
|
||||
a.z = end.z;
|
||||
PSMTXMultVec(mtx, a, a);
|
||||
MTXMultVec(mtx, a, a);
|
||||
mAab.SetMinMax(a);
|
||||
|
||||
a.x = end.x;
|
||||
a.y = end.y;
|
||||
a.z = start.z;
|
||||
PSMTXMultVec(mtx, a, a);
|
||||
MTXMultVec(mtx, a, a);
|
||||
mAab.SetMinMax(a);
|
||||
}
|
||||
|
||||
@@ -988,18 +988,18 @@ bool cCcD_CpsAttr::Calc(const mVec3_c &start, const mVec3_c &end, mVec3_c *pOut)
|
||||
}
|
||||
bInverse = false;
|
||||
} else {
|
||||
PSMTXTrans(mtx0, startRef.x, startRef.y, startRef.z);
|
||||
MTXTrans(mtx0, startRef.x, startRef.y, startRef.z);
|
||||
mtx0.XrotM(mAng::atan2s(-dist, tmp0.y));
|
||||
mtx0.YrotM(mAng::atan2s(-tmp0.x, tmp0.z));
|
||||
|
||||
mMtx_c mtx1;
|
||||
|
||||
MtxTransMinusXYZ(mtx1, startRef.x, startRef.y, startRef.z);
|
||||
PSMTXConcat(mtx0, mtx1, mtx0);
|
||||
PSMTXMultVec(mtx0, start, tmp1);
|
||||
PSMTXMultVec(mtx0, end, tmp2);
|
||||
MTXConcat(mtx0, mtx1, mtx0);
|
||||
MTXMultVec(mtx0, start, tmp1);
|
||||
MTXMultVec(mtx0, end, tmp2);
|
||||
tmp3 = GetStart();
|
||||
PSMTXMultVec(mtx0, GetEnd(), tmp4);
|
||||
MTXMultVec(mtx0, GetEnd(), tmp4);
|
||||
bInverse = true;
|
||||
}
|
||||
tmp3.y -= GetR() * 0.5f;
|
||||
@@ -1007,8 +1007,8 @@ bool cCcD_CpsAttr::Calc(const mVec3_c &start, const mVec3_c &end, mVec3_c *pOut)
|
||||
cyl.SetC(tmp3, GetR(), tmp4.y - tmp3.y);
|
||||
CalcCyl(cyl, tmp1, tmp2, pOut);
|
||||
if (bInverse) {
|
||||
PSMTXInverse(mtx0, mtx0);
|
||||
PSMTXMultVec(mtx0, *pOut, *pOut);
|
||||
MTXInverse(mtx0, mtx0);
|
||||
MTXMultVec(mtx0, *pOut, *pOut);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1111,31 +1111,31 @@ void cCcD_CpsAttr::CalcAabBox() {
|
||||
|
||||
bool cCcD_CpsAttr::GetNVec(const mVec3_c ¶m0, mVec3_c *pOut) const {
|
||||
mVec3_c tmp1;
|
||||
PSVECSubtract(GetEnd(), GetStart(), tmp1);
|
||||
f32 sqMag = PSVECDotProduct(tmp1, tmp1);
|
||||
VECSubtract(GetEnd(), GetStart(), tmp1);
|
||||
f32 sqMag = VECDotProduct(tmp1, tmp1);
|
||||
if (cM3d_IsZero(sqMag)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mVec3_c tmp2;
|
||||
PSVECSubtract(param0, GetStart(), tmp2);
|
||||
f32 sqDist = PSVECDotProduct(tmp2, tmp1) / sqMag;
|
||||
VECSubtract(param0, GetStart(), tmp2);
|
||||
f32 sqDist = VECDotProduct(tmp2, tmp1) / sqMag;
|
||||
mVec3_c tmp3;
|
||||
if (sqDist < 0.f) {
|
||||
tmp3 = GetStart();
|
||||
} else if (sqDist > 1.f) {
|
||||
tmp3 = GetEnd();
|
||||
} else {
|
||||
PSVECScale(tmp1, tmp1, sqDist);
|
||||
PSVECAdd(tmp1, GetStart(), tmp3);
|
||||
VECScale(tmp1, tmp1, sqDist);
|
||||
VECAdd(tmp1, GetStart(), tmp3);
|
||||
}
|
||||
|
||||
PSVECSubtract(param0, tmp3, *pOut);
|
||||
if (cM3d_IsZero(PSVECMag(*pOut))) {
|
||||
VECSubtract(param0, tmp3, *pOut);
|
||||
if (cM3d_IsZero(VECMag(*pOut))) {
|
||||
pOut->set(0.f, 0.f, 0.f);
|
||||
return false;
|
||||
} else {
|
||||
PSVECNormalize(*pOut, *pOut);
|
||||
VECNormalize(*pOut, *pOut);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1266,12 +1266,12 @@ bool cCcD_CylAttr::GetNVec(const mVec3_c ¶m0, mVec3_c *pOut) const {
|
||||
vec = GetC();
|
||||
vec.y = param0.y;
|
||||
}
|
||||
PSVECSubtract(param0, vec, *pOut);
|
||||
if (cM3d_IsZero(PSVECMag(*pOut))) {
|
||||
VECSubtract(param0, vec, *pOut);
|
||||
if (cM3d_IsZero(VECMag(*pOut))) {
|
||||
pOut->set(0.f, 0.f, 0.f);
|
||||
return false;
|
||||
} else {
|
||||
PSVECNormalize(*pOut, *pOut);
|
||||
VECNormalize(*pOut, *pOut);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1393,11 +1393,11 @@ bool cCcD_SphAttr::GetNVec(const mVec3_c ¶m0, mVec3_c *param1) const {
|
||||
param1->x = param0.x - GetC().x;
|
||||
param1->y = param0.y - GetC().y;
|
||||
param1->z = param0.z - GetC().z;
|
||||
if (cM3d_IsZero(PSVECMag(*param1))) {
|
||||
if (cM3d_IsZero(VECMag(*param1))) {
|
||||
param1->set(0.0f, 0.0f, 0.0f);
|
||||
return false;
|
||||
} else {
|
||||
PSVECNormalize(*param1, *param1);
|
||||
VECNormalize(*param1, *param1);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,8 +169,8 @@ bool cM3d_Cross_SphSph(const cM3dGSph &, const cM3dGSph &, VEC3 *) {
|
||||
|
||||
void cM3d_CalcSphVsTriCrossPoint(const cM3dGSph &pSph, const cM3dGTri &pTri, VEC3 *pPnt) {
|
||||
VEC3 scale, add;
|
||||
PSVECAdd(pTri.mA, pTri.mB, add);
|
||||
PSVECScale(add, scale, 0.5f);
|
||||
VECAdd(pTri.mA, pTri.mB, add);
|
||||
VECScale(add, scale, 0.5f);
|
||||
const f32 mag = VEC3DistSq(&scale, &pSph.GetC());
|
||||
if (cM3d_IsZero(mag)) {
|
||||
*pPnt = pSph.GetC();
|
||||
@@ -245,7 +245,7 @@ f32 cM3d_lineVsPosSuisenCross(const VEC3 &, const VEC3 &, const VEC3 &, VEC3 *)
|
||||
}
|
||||
|
||||
bool cM3d_Normalize(nw4r::math::VEC3 *pPnt) {
|
||||
f32 mag = PSVECMag(*pPnt);
|
||||
f32 mag = VECMag(*pPnt);
|
||||
if (cM3d_IsZero(mag)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -27,8 +27,8 @@ void cM3dGAab::SetMax(const mVec3_c &max) {
|
||||
}
|
||||
|
||||
void cM3dGAab::CalcCenter(mVec3_c ¢er) const {
|
||||
PSVECAdd(mMin, mMax, center);
|
||||
PSVECScale(center, center, 0.5f);
|
||||
VECAdd(mMin, mMax, center);
|
||||
VECScale(center, center, 0.5f);
|
||||
}
|
||||
|
||||
void cM3dGAab::PlusR(f32 r) {
|
||||
|
||||
@@ -34,10 +34,10 @@ bool cM3dGCps::Cross(cM3dGUnk &unk, mVec3_c *vec) {
|
||||
|
||||
bool cM3dGCps::fn_80337f40(const mVec3_c &v) const {
|
||||
f32 r2 = mRadius * mRadius;
|
||||
if (!(mFlags & 1) && PSVECSquareDistance(mStart, v) <= r2) {
|
||||
if (!(mFlags & 1) && VECSquareDistance(mStart, v) <= r2) {
|
||||
return true;
|
||||
}
|
||||
if (!(mFlags & 2) && PSVECSquareDistance(mEnd, v) <= r2) {
|
||||
if (!(mFlags & 2) && VECSquareDistance(mEnd, v) <= r2) {
|
||||
return true;
|
||||
}
|
||||
f32 tmp;
|
||||
|
||||
@@ -11,9 +11,9 @@ void cM3dGLin::SetStartEnd(const mVec3_c *start, const mVec3_c *end) {
|
||||
|
||||
void cM3dGLin::CalcPos(mVec3_c *out, f32 scale) const {
|
||||
mVec3_c tmp;
|
||||
PSVECSubtract(mEnd, mStart, tmp);
|
||||
PSVECScale(tmp, tmp, scale);
|
||||
PSVECAdd(tmp, mStart, *out);
|
||||
VECSubtract(mEnd, mStart, tmp);
|
||||
VECScale(tmp, tmp, scale);
|
||||
VECAdd(tmp, mStart, *out);
|
||||
}
|
||||
|
||||
void cM3dGLin::SetStart(const mVec3_c &start) {
|
||||
|
||||
+10
-10
@@ -16,8 +16,8 @@ cM3dGUnk::cM3dGUnk() {
|
||||
field_0xB4 = 0;
|
||||
mVirtCenter.set(0.0f, 0.0f, 0.0f);
|
||||
field_0xC4 = 0.0f;
|
||||
PSMTXIdentity(mMtx);
|
||||
PSMTXIdentity(mInvMtx);
|
||||
MTXIdentity(mMtx);
|
||||
MTXIdentity(mInvMtx);
|
||||
}
|
||||
|
||||
void cM3dGUnk::Set(const mVec3_c &vA, const mVec3_c &vB) {
|
||||
@@ -34,13 +34,13 @@ void cM3dGUnk::Set(const mVec3_c &vA, const mVec3_c &vB) {
|
||||
|
||||
void cM3dGUnk::Update() {
|
||||
mVec3_c a, b;
|
||||
PSMTXMultVec(mMtx, mMin, a);
|
||||
PSMTXMultVec(mMtx, mMax, b);
|
||||
MTXMultVec(mMtx, mMin, a);
|
||||
MTXMultVec(mMtx, mMax, b);
|
||||
mLin.GetStart().x = (a.x + b.x) * 0.5f;
|
||||
mLin.GetStart().y = (a.y + b.y) * 0.5f;
|
||||
mLin.GetStart().z = (a.z + b.z) * 0.5f;
|
||||
if (!PSMTXInverse(mMtx, mInvMtx)) {
|
||||
PSMTXIdentity(mInvMtx);
|
||||
if (!MTXInverse(mMtx, mInvMtx)) {
|
||||
MTXIdentity(mInvMtx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ void cM3dGUnk::Set(const mMtx_c &mtx) {
|
||||
|
||||
void cM3dGUnk::Set(const mVec3_c &vec, const mAng &ang) {
|
||||
mMtx_c mtx;
|
||||
PSMTXIdentity(mtx);
|
||||
MTXIdentity(mtx);
|
||||
mtx.YrotS(ang);
|
||||
mtx.setTranslation(vec);
|
||||
Set(mtx);
|
||||
@@ -97,7 +97,7 @@ void cM3dGUnk::Set(const mVec3_c &vec, const mAng &ang) {
|
||||
|
||||
bool cM3dGUnk::Cross(const mVec3_c &vec) {
|
||||
mVec3_c tmp;
|
||||
PSMTXMultVec(mInvMtx, vec, tmp);
|
||||
MTXMultVec(mInvMtx, vec, tmp);
|
||||
if ((tmp.x < mMin.x)) {
|
||||
return false;
|
||||
}
|
||||
@@ -121,11 +121,11 @@ bool cM3dGUnk::Cross(const mVec3_c &vec) {
|
||||
|
||||
void cM3dGUnk::Clamp(const mVec3_c &in, mVec3_c &out) {
|
||||
mVec3_c tmp1, tmp2;
|
||||
PSMTXMultVec(mInvMtx, in, tmp1);
|
||||
MTXMultVec(mInvMtx, in, tmp1);
|
||||
cM3dGAab aab;
|
||||
aab.Set(mMin, mMax);
|
||||
aab.Clamp(tmp1, tmp2);
|
||||
PSMTXMultVec(mMtx, tmp2, out);
|
||||
MTXMultVec(mMtx, tmp2, out);
|
||||
}
|
||||
|
||||
void cM3dGUnk::fn_80338f30(f32 f0, f32 f1) {
|
||||
|
||||
@@ -16,7 +16,7 @@ cCcD_ShapeAttr *dCcD_Cps::GetShapeAttr() {
|
||||
}
|
||||
|
||||
void dCcD_Cps::unknownCalc() {
|
||||
PSVECSubtract(mEnd, mStart, mAt.mVec);
|
||||
VECSubtract(mEnd, mStart, mAt.mVec);
|
||||
}
|
||||
|
||||
dCcD_Tri::dCcD_Tri() {}
|
||||
|
||||
@@ -176,13 +176,13 @@ u32 dCcMassS_Mng::Chk(mVec3_c *p_xyz, dAcObjBase_c **p_actor, dCcMassS_HitInf *p
|
||||
|
||||
if (field_0x3A8 & 0x10) {
|
||||
mVec3_c vec;
|
||||
PSVECSubtract((*p_actor)->getPosition(), *p_xyz, vec);
|
||||
VECSubtract((*p_actor)->getPosition(), *p_xyz, vec);
|
||||
vec.y = 0;
|
||||
f32 vecMag = PSVECMag(vec);
|
||||
f32 vecMag = VECMag(vec);
|
||||
if (cM3d_IsZero(vecMag)) {
|
||||
vec.x = 1;
|
||||
} else {
|
||||
PSVECScale(vec, vec, f / vecMag);
|
||||
VECScale(vec, vec, f / vecMag);
|
||||
}
|
||||
obj->GetStts()->PlusCcMove(vec.x, vec.y, vec.z);
|
||||
}
|
||||
@@ -208,7 +208,7 @@ u32 dCcMassS_Mng::Chk(mVec3_c *p_xyz, dAcObjBase_c **p_actor, dCcMassS_HitInf *p
|
||||
tmpVec.z = p_xyz->z;
|
||||
|
||||
if (mCamTopPos.y < (20.0f + plusH)) {
|
||||
f32 newCamTopDist = PSVECSquareDistance(&tmpVec, *mCpsAttr.GetStartP());
|
||||
f32 newCamTopDist = VECSquareDistance(&tmpVec, *mCpsAttr.GetStartP());
|
||||
if (mCamTopDist > newCamTopDist) {
|
||||
mCamTopDist = newCamTopDist;
|
||||
mCamTopPos = tmpVec;
|
||||
@@ -216,7 +216,7 @@ u32 dCcMassS_Mng::Chk(mVec3_c *p_xyz, dAcObjBase_c **p_actor, dCcMassS_HitInf *p
|
||||
}
|
||||
|
||||
if (mCamBottomPos.y < (20.0f + plusH)) {
|
||||
f32 newCamBottomDist = PSVECSquareDistance(&tmpVec, *mCpsAttr.GetEndP());
|
||||
f32 newCamBottomDist = VECSquareDistance(&tmpVec, *mCpsAttr.GetEndP());
|
||||
if (mCamBottomDist > newCamBottomDist) {
|
||||
mCamBottomDist = newCamBottomDist;
|
||||
mCamBottomPos = tmpVec;
|
||||
|
||||
@@ -159,7 +159,7 @@ void dCcS::SetArea(mMtx_c *pMtx) {
|
||||
// non-match: Huh
|
||||
mAreas[mAreaCount].mInv = mAreas[mAreaCount].mMtx = *pMtx;
|
||||
|
||||
PSMTXInverse(mAreas[mAreaCount].mInv, mAreas[mAreaCount].mInv);
|
||||
MTXInverse(mAreas[mAreaCount].mInv, mAreas[mAreaCount].mInv);
|
||||
mAreaCount++;
|
||||
}
|
||||
|
||||
|
||||
@@ -45,14 +45,14 @@ void dScreenFader_c::draw() {
|
||||
f32 scaleY = EGG::Screen::GetSizeYMax();
|
||||
|
||||
mMtx_c mtx;
|
||||
PSMTXScale(mtx, scaleX, mProgress, 1.0f);
|
||||
PSMTXTransApply(mtx, mtx, -scaleX * 0.5f, scaleY * 0.5f - mProgress, 0.0f);
|
||||
MTXScale(mtx, scaleX, mProgress, 1.0f);
|
||||
MTXTransApply(mtx, mtx, -scaleX * 0.5f, scaleY * 0.5f - mProgress, 0.0f);
|
||||
|
||||
GXColor a = EGG::DrawGX::BLACK;
|
||||
EGG::DrawGX::DrawDL(EGG::DrawGX::DL_17, mtx, a);
|
||||
|
||||
PSMTXScale(mtx, scaleX, mProgress, 1.0f);
|
||||
PSMTXTransApply(mtx, mtx, -scaleX * 0.5f, -scaleY * 0.5f, 0.0f);
|
||||
MTXScale(mtx, scaleX, mProgress, 1.0f);
|
||||
MTXTransApply(mtx, mtx, -scaleX * 0.5f, -scaleY * 0.5f, 0.0f);
|
||||
EGG::DrawGX::DrawDL(EGG::DrawGX::DL_17, mtx, a);
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ void EGG::ColorFader::draw() {
|
||||
GXSetScissor(mStartX, mStartY, getWidth(), getHeight());
|
||||
|
||||
Mtx posMtx;
|
||||
PSMTXIdentity(posMtx);
|
||||
MTXIdentity(posMtx);
|
||||
GXLoadPosMtxImm(posMtx, 0);
|
||||
GXSetCurrentMtx(0);
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ void CpuTexture::fillNormalMapSphere(f32 f1, f32 f2) {
|
||||
// TODO: std::sqrtf?
|
||||
vec(2) = fz < Math<f32>::zero() ? Math<f32>::zero() : (f32)sqrt(fz);
|
||||
|
||||
PSVECNormalize(vec, vec);
|
||||
VECNormalize(vec, vec);
|
||||
GXUtility::getNormalColor(c, vec);
|
||||
c.r = c.a;
|
||||
setColor(x, y, c);
|
||||
|
||||
+17
-17
@@ -72,8 +72,8 @@ static void DrawCircleYPolygonFan(const nw4r::math::MTX34 &mtx, f32 f, u16 numSe
|
||||
|
||||
int seg = numSegments + 1;
|
||||
|
||||
PSMTXMultVec(mtx, v1, v1);
|
||||
PSMTXMultVec(mtx, v2, v2);
|
||||
MTXMultVec(mtx, v1, v1);
|
||||
MTXMultVec(mtx, v2, v2);
|
||||
|
||||
GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, seg + 1);
|
||||
|
||||
@@ -86,7 +86,7 @@ static void DrawCircleYPolygonFan(const nw4r::math::MTX34 &mtx, f32 f, u16 numSe
|
||||
nw4r::math::VEC3 v3(
|
||||
0.5f * nw4r::math::SinRad(signedStepSize * i), 0.0f, 0.5f * nw4r::math::CosRad(signedStepSize * i)
|
||||
);
|
||||
PSMTXMultVec(mtx, v3, v3);
|
||||
MTXMultVec(mtx, v3, v3);
|
||||
GXPosition3f32(v3.x, v3.y, v3.z);
|
||||
|
||||
nw4r::math::VEC3 v4(
|
||||
@@ -98,15 +98,15 @@ static void DrawCircleYPolygonFan(const nw4r::math::MTX34 &mtx, f32 f, u16 numSe
|
||||
0.5f * nw4r::math::CosRad(signedStepSize * (i + 1))
|
||||
);
|
||||
|
||||
PSMTXMultVec(mtx, v4, v4);
|
||||
PSMTXMultVec(mtx, v5, v5);
|
||||
MTXMultVec(mtx, v4, v4);
|
||||
MTXMultVec(mtx, v5, v5);
|
||||
|
||||
nw4r::math::VEC3Sub(&v4, &v4, &v2);
|
||||
nw4r::math::VEC3Sub(&v5, &v5, &v2);
|
||||
|
||||
nw4r::math::VEC3 v6;
|
||||
PSVECCrossProduct(v5, v4, v6);
|
||||
PSVECNormalize(v6, v6);
|
||||
VECCrossProduct(v5, v4, v6);
|
||||
VECNormalize(v6, v6);
|
||||
|
||||
GXPosition3f32(v6.x, v6.y, v6.z);
|
||||
}
|
||||
@@ -145,7 +145,7 @@ void DrawGX::Initialize(Heap *pHeap_) {
|
||||
|
||||
GXInitTexObj(&CLEAR_Z_TEX_OBJ, s_clear_z_TX, 4, 4, GX_TF_Z24X8, GX_REPEAT, GX_REPEAT, false);
|
||||
GXInitTexObjLOD(&CLEAR_Z_TEX_OBJ, GX_NEAR, GX_NEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
|
||||
PSMTXIdentity(s_cameraMtx.m);
|
||||
MTXIdentity(s_cameraMtx.m);
|
||||
CreateDisplayList(pHeap);
|
||||
}
|
||||
|
||||
@@ -591,29 +591,29 @@ void DrawGX::CreateDisplayList(EGG::Heap *pHeap) {
|
||||
GXPosition3f32(2.0f * x, 0.0f, 2.0f * z);
|
||||
}
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXTrans(mtx, 0.0f, 0.5f, 0.0f);
|
||||
MTXTrans(mtx, 0.0f, 0.5f, 0.0f);
|
||||
DrawCircleYPolygonFan(mtx, 0.0f, POS_NUM[i - DL_9]);
|
||||
|
||||
PSMTXIdentity(mtx);
|
||||
PSMTXRotRad(mtx, M_PI, 0x7A);
|
||||
PSMTXTransApply(mtx, mtx, 0.0f, -0.5f, 0.0f);
|
||||
MTXIdentity(mtx);
|
||||
MTXRotRad(mtx, M_PI, 0x7A);
|
||||
MTXTransApply(mtx, mtx, 0.0f, -0.5f, 0.0f);
|
||||
DrawCircleYPolygonFan(mtx, 0.0f, POS_NUM[i - DL_9]);
|
||||
break;
|
||||
}
|
||||
case DL_11:
|
||||
case DL_12: {
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXIdentity(mtx);
|
||||
MTXIdentity(mtx);
|
||||
DrawCircleYPolygonFan(mtx, 1.0f, POS_NUM[i - DL_11]);
|
||||
PSMTXRotRad(mtx, M_PI, 0x7A);
|
||||
MTXRotRad(mtx, M_PI, 0x7A);
|
||||
DrawCircleYPolygonFan(mtx, 0.0f, POS_NUM[i - DL_11]);
|
||||
break;
|
||||
}
|
||||
case DL_7:
|
||||
case DL_8: {
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXIdentity(mtx);
|
||||
PSMTXRotRad(mtx, M_PI / 2.0f, 0x78);
|
||||
MTXIdentity(mtx);
|
||||
MTXRotRad(mtx, M_PI / 2.0f, 0x78);
|
||||
DrawCircleYPolygonFan(mtx, 0.0f, POS_NUM[i - DL_7]);
|
||||
break;
|
||||
}
|
||||
@@ -725,7 +725,7 @@ void DrawGX::SetBlendMode(enum Blend mode) {
|
||||
void DrawGX::DrawDLWorld(DL dl, const EGG::Matrix34f &mtx, GXColor color) {
|
||||
nw4r::math::MTX34 resMtx;
|
||||
|
||||
PSMTXConcat(s_cameraMtx.m, mtx.m, resMtx.m);
|
||||
MTXConcat(s_cameraMtx.m, mtx.m, resMtx.m);
|
||||
DrawDL(dl, resMtx, color);
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ void DrawPathLightMap::internalDraw(u16 idx) {
|
||||
|
||||
PostEffectBase::setProjection(GetScreen());
|
||||
|
||||
PSMTXScale(forDL, GetScreen().GetWidth(), GetScreen().GetHeight(), 1.0f);
|
||||
MTXScale(forDL, GetScreen().GetWidth(), GetScreen().GetHeight(), 1.0f);
|
||||
|
||||
mpTextureBuffer_0x30->load(GX_TEXMAP0);
|
||||
DrawGX::BeginDrawScreen(true, true, false);
|
||||
@@ -113,7 +113,7 @@ void DrawPathLightMap::internalDraw(u16 idx) {
|
||||
|
||||
nw4r::math::MTX34 forDL;
|
||||
PostEffectBase::setProjection(GetScreen());
|
||||
PSMTXScale(forDL, GetScreen().GetWidth(), GetScreen().GetHeight(), 1.0f);
|
||||
MTXScale(forDL, GetScreen().GetWidth(), GetScreen().GetHeight(), 1.0f);
|
||||
|
||||
GXColor tevColor = {0xFF, 0xFF, 0xFF, mAlpha};
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ void G3DUtility::create(u32 size, Heap *pHeap) {
|
||||
|
||||
void G3DUtility::defaultTexMtxFunc(nw4r::math::MTX34 *pMtx, s8 camRef, s8 lightRef) {
|
||||
const nw4r::math::MTX34 *mtxPtr = nw4r::g3d::G3DState::GetInvCameraMtxPtr();
|
||||
PSMTXCopy(mtxPtr->m, pMtx->m);
|
||||
MTXCopy(mtxPtr->m, pMtx->m);
|
||||
}
|
||||
|
||||
bool G3DUtility::setUpLightSet(nw4r::g3d::LightSetting &lightSet, nw4r::g3d::ResAnmScn scn, int refNumber) {
|
||||
|
||||
@@ -19,7 +19,7 @@ GlobalDrawState sState;
|
||||
void GlobalDrawState::beginDrawView(u16 cameraId, const nw4r::math::MTX34 &mtx, const Screen &screen) {
|
||||
spScreen = &screen;
|
||||
sCameraId = cameraId;
|
||||
PSMTXCopy(mtx, sMtx);
|
||||
MTXCopy(mtx, sMtx);
|
||||
StateEfb::Clean();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ void IScnProc::createScnProc(u16 procNum, MEMAllocator *pAllocator) {
|
||||
mNumScnProc = procNum;
|
||||
mpDataSet = new ProcData[mNumScnProc];
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXIdentity(mtx);
|
||||
MTXIdentity(mtx);
|
||||
|
||||
for (u16 i = 0; i < getNumScnProc(); i++) {
|
||||
u32 sp8;
|
||||
|
||||
@@ -117,7 +117,7 @@ void LightManager::CalcView(const nw4r::math::MTX34 &viewMtx, u8 lightObjOffset,
|
||||
DCFlushRange(gxObj, CheckedNumLightObjs(mCounts.mNumEggLightObjects) * sizeof(GXLightObj));
|
||||
if (root != nullptr) {
|
||||
nw4r::math::MTX34 tmp;
|
||||
PSMTXInverse(viewMtx, tmp);
|
||||
MTXInverse(viewMtx, tmp);
|
||||
CopyToG3D_View(root, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,18 +114,18 @@ void LightObject::CalcView(nw4r::math::MTX34 const &viewMtx) {
|
||||
} else {
|
||||
if (getField0x3C() == 1) {
|
||||
nw4r::math::VEC3 tmp(-viewMtx._20, -viewMtx._21, -viewMtx._22);
|
||||
if (PSVECMag(tmp) > 0.0f) {
|
||||
if (VECMag(tmp) > 0.0f) {
|
||||
nw4r::math::VEC3 angle;
|
||||
C_VECHalfAngle(mDir, tmp, angle);
|
||||
nw4r::math::VEC3Scale(&field_0x6C, &angle, -1.0f);
|
||||
PSVECNormalize(field_0x6C, field_0x6C);
|
||||
VECNormalize(field_0x6C, field_0x6C);
|
||||
} else {
|
||||
field_0x6C.x = field_0x6C.y = 0.0f;
|
||||
field_0x6C.z = 1.0f;
|
||||
}
|
||||
}
|
||||
PSMTXMultVec(viewMtx, mPos, mViewPos);
|
||||
PSMTXMultVec(viewMtx, mAt, mViewAt);
|
||||
MTXMultVec(viewMtx, mPos, mViewPos);
|
||||
MTXMultVec(viewMtx, mAt, mViewAt);
|
||||
nw4r::math::VEC3TransformNormal(&field_0x94, &viewMtx, &field_0x6C);
|
||||
}
|
||||
}
|
||||
@@ -238,12 +238,12 @@ void LightObject::CopyToG3D_View(nw4r::g3d::LightObj &g3dObj, const nw4r::math::
|
||||
break;
|
||||
}
|
||||
case 0: {
|
||||
PSMTXMultVec(viewMtx, mViewPos, pos);
|
||||
MTXMultVec(viewMtx, mViewPos, pos);
|
||||
dir.x = dir.y = dir.z = 0.0f;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
PSMTXMultVec(viewMtx, mViewPos, pos);
|
||||
MTXMultVec(viewMtx, mViewPos, pos);
|
||||
nw4r::math::VEC3TransformNormal(&dir, &viewMtx, &field_0x94);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -519,7 +519,7 @@ void LightTexture::debugDraw(int i) {
|
||||
fn_804AC0A0(i, &u1, &u2);
|
||||
load(GX_TEXMAP0);
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXScale(mtx, sTexWidth, sTexHeight, 1.0f);
|
||||
MTXScale(mtx, sTexWidth, sTexHeight, 1.0f);
|
||||
|
||||
mtx._03 = u1;
|
||||
mtx._13 = sDrawHeight - (u2 + sTexHeight);
|
||||
|
||||
@@ -247,7 +247,7 @@ void LightTextureManager::drawAndCaptureTexture(f32 ox, f32 oy, f32 sx, f32 sy)
|
||||
StateGX::GXSetScissor_(x1, y1, x2, y2);
|
||||
StateGX::GXSetScissorBoxOffset_(0, 0);
|
||||
nw4r::math::MTX34 identity;
|
||||
PSMTXIdentity(identity);
|
||||
MTXIdentity(identity);
|
||||
|
||||
DrawGX::BeginDrawScreen(1, 1, 0);
|
||||
DrawGX::SetBlendMode(DrawGX::BLEND_14);
|
||||
|
||||
@@ -66,7 +66,7 @@ void ModelEx::getShapeMinMax(u16 shapeIndex, math::VEC3 *pMin, math::VEC3 *pMax,
|
||||
math::MTX34 *pMtxArr =
|
||||
reinterpret_cast<math::MTX34 *>(G3DUtility::BumpAlloc(info.GetNumPosNrmMtx() * sizeof(math::MTX34), 1));
|
||||
if (doCalcWorld) {
|
||||
PSMTXIdentity(tmpMtx);
|
||||
MTXIdentity(tmpMtx);
|
||||
calcWorld(pMtxArr, &tmpMtx);
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ void ModelEx::getShapeMinMax(u16 shapeIndex, math::VEC3 *pMin, math::VEC3 *pMax,
|
||||
mtxIdx = defaultMatrixIdx;
|
||||
}
|
||||
nw4r::math::VEC3 tmpVec;
|
||||
PSMTXMultVec(pMtxArr[mtxIdx], &analyze.getVtxResult().field_0x08, tmpVec);
|
||||
MTXMultVec(pMtxArr[mtxIdx], &analyze.getVtxResult().field_0x08, tmpVec);
|
||||
if (firstIteration) {
|
||||
firstIteration = false;
|
||||
*pMin = *pMax = tmpVec;
|
||||
|
||||
@@ -43,7 +43,7 @@ void PostEffectBase::setVtxState() {
|
||||
|
||||
void PostEffectBase::drawScreenInternal(f32 offsetX, f32 offsetY, f32 width, f32 height) {
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXScale(mtx, width, height, 1.0f);
|
||||
MTXScale(mtx, width, height, 1.0f);
|
||||
mtx._03 = offsetX;
|
||||
mtx._13 = offsetY;
|
||||
mtx._23 = 0.0f;
|
||||
|
||||
@@ -76,7 +76,7 @@ void PostEffectBlur::setMaterialMulti(u8 kernelIdx, u8 p2, f32 f1, f32 f2) {
|
||||
0.0f, 0.0f, 0.0f, 0.0f
|
||||
// clang-format on
|
||||
);
|
||||
PSMTXConcat(m, mtx, m);
|
||||
MTXConcat(m, mtx, m);
|
||||
GXLoadTexMtxImm(m, texMtxId, GX_MTX2x4);
|
||||
unk_00_scale++;
|
||||
}
|
||||
|
||||
@@ -101,8 +101,8 @@ void PostEffectMaskDOF::draw(f32 width, f32 height) {
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0);
|
||||
GXSetVtxDesc(GX_VA_TEX1, GX_DIRECT);
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXScale(mtx, width * mScaleX, height * mScaleY, 1.f);
|
||||
PSMTXTransApply(mtx, mtx, mOffsetX, mOffsetY, 0.f);
|
||||
MTXScale(mtx, width * mScaleX, height * mScaleY, 1.f);
|
||||
MTXTransApply(mtx, mtx, mOffsetX, mOffsetY, 0.f);
|
||||
GXLoadPosMtxImm(mtx, GX_PNMTX0);
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
GXPosition2u8(0, 0);
|
||||
|
||||
@@ -61,8 +61,8 @@ void PostEffectUnk2::draw(f32 width, f32 height) {
|
||||
GXSetVtxDesc(GX_VA_TEX1, GX_DIRECT);
|
||||
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXScale(mtx, width * mScaleX, height * mScaleY, 1.0f);
|
||||
PSMTXTransApply(mtx, mtx, mOffsetX, mOffsetY, 0.0f);
|
||||
MTXScale(mtx, width * mScaleX, height * mScaleY, 1.0f);
|
||||
MTXTransApply(mtx, mtx, mOffsetX, mOffsetY, 0.0f);
|
||||
GXLoadPosMtxImm(mtx, 0);
|
||||
|
||||
static const f32 floats1[2][2] = {
|
||||
|
||||
@@ -264,7 +264,7 @@ bool Screen::IsChangeEfb() const {
|
||||
}
|
||||
|
||||
void Screen::CalcMatrixForDrawQuad(math::MTX34 *mtx, f32 x, f32 y, f32 sx, f32 sy) const {
|
||||
PSMTXScale(*mtx, sx, sy, 1.0f);
|
||||
MTXScale(*mtx, sx, sy, 1.0f);
|
||||
|
||||
mtx->m[0][3] = x;
|
||||
mtx->m[1][3] = mCanvasMode == CANVASMODE_0 ? y - sy : y;
|
||||
|
||||
@@ -96,7 +96,7 @@ void ScreenEffectBlur::fn_804B32B0() {
|
||||
|
||||
if (field_0x0C & 1) {
|
||||
nw4r::math::MTX34 m;
|
||||
PSMTXScale(m, sizeY, sizeY, 1.f);
|
||||
MTXScale(m, sizeY, sizeY, 1.f);
|
||||
pTex0->load(GX_TEXMAP0);
|
||||
DrawGX::BeginDrawScreen(true, true, false);
|
||||
DrawGX::SetBlendMode(DrawGX::BLEND_14);
|
||||
@@ -114,7 +114,7 @@ void ScreenEffectBlur::fn_804B3710() {
|
||||
// Have to perform a float -> u16 -> float round trip here...
|
||||
u16 sizeY = sScreen.GetSize().y;
|
||||
u16 sizeX = sScreen.GetSize().x;
|
||||
PSMTXScale(mtx, sizeX, sizeY, 0.0f);
|
||||
MTXScale(mtx, sizeX, sizeY, 0.0f);
|
||||
mpCpuTexture->load(GX_TEXMAP0);
|
||||
DrawGX::BeginDrawScreen(true, true, true);
|
||||
GXSetTevKColor(GX_KCOLOR0, field_0x28);
|
||||
|
||||
@@ -184,7 +184,7 @@ void StateEfb::popWorkBuffer(bool b, u32 userData) {
|
||||
StateGX::GXSetScissorBoxOffset_(0, 0);
|
||||
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXScale(mtx, parentScreen.GetSize().x, parentScreen.GetSize().y, 1.0f);
|
||||
MTXScale(mtx, parentScreen.GetSize().x, parentScreen.GetSize().y, 1.0f);
|
||||
|
||||
DrawGX::BeginDrawScreen(true, isEnableDirtyBufferMode(), false);
|
||||
DrawGX::SetBlendMode(DrawGX::BLEND_14);
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
namespace EGG {
|
||||
|
||||
void Matrix34f::inverseTo(Matrix34f &to) const {
|
||||
PSMTXInverse(m, to.m);
|
||||
MTXInverse(m, to.m);
|
||||
}
|
||||
|
||||
void Matrix34f::inverseTransposeTo(Matrix34f &to) const {
|
||||
PSMTXInvXpose(m, to.m);
|
||||
MTXInvXpose(m, to.m);
|
||||
}
|
||||
|
||||
void Matrix34f::makeIdentity() {
|
||||
@@ -357,7 +357,7 @@ void Matrix34f::loadPosMtx(u32 posMtxId) {
|
||||
}
|
||||
|
||||
void Matrix34f::multiplyTo(const Matrix34f &m2, Matrix34f &to) const {
|
||||
PSMTXConcat(m, m2.m, to.m);
|
||||
MTXConcat(m, m2.m, to.m);
|
||||
}
|
||||
|
||||
void Matrix34f::dump() {}
|
||||
|
||||
+2
-2
@@ -268,10 +268,10 @@ Simple_c::Simple_c() : Base_c(0x80), mLayout(), mDrawInfo(), mpResAcc(nullptr),
|
||||
void Simple_c::calc() {
|
||||
calcBefore();
|
||||
nw4r::math::MTX34 mtx;
|
||||
PSMTXIdentity(mtx.m);
|
||||
MTXIdentity(mtx.m);
|
||||
// Probably inlines
|
||||
mVec3_c v = mVec;
|
||||
PSMTXTransApply(mtx.m, mtx.m, v.x, v.y, v.z);
|
||||
MTXTransApply(mtx.m, mtx.m, v.x, v.y, v.z);
|
||||
mDrawInfo.SetViewMtx(mtx);
|
||||
calcAfter();
|
||||
}
|
||||
|
||||
@@ -59,8 +59,8 @@ void blineMat_c::update() {
|
||||
mVec3_c vec;
|
||||
|
||||
getCurrentCamera().GetCameraMtx(&camMtx);
|
||||
PSMTXInverse(camMtx, camMtx);
|
||||
PSMTXMultVec(camMtx, mVec3_c::Zero, vec);
|
||||
MTXInverse(camMtx, camMtx);
|
||||
MTXMultVec(camMtx, mVec3_c::Zero, vec);
|
||||
|
||||
for (bline_c *line = (bline_c *)nw4r::ut::List_GetNext(&mLines, 0); line != nullptr;
|
||||
line = (bline_c *)nw4r::ut::List_GetNext(&mLines, line)) {
|
||||
|
||||
@@ -44,7 +44,7 @@ bool bmdl_c::getNodeWorldMtxMultVec(u32 p1, const nw4r::math::VEC3 &in, nw4r::ma
|
||||
if (!getNodeWorldMtx(p1, &mtx)) {
|
||||
return false;
|
||||
} else {
|
||||
PSMTXMultVec(mtx, in, out);
|
||||
MTXMultVec(mtx, in, out);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -57,7 +57,7 @@ void mdl_c::mdlCallback_c::ExecCallbackA(
|
||||
tmp.x = result->rt._03;
|
||||
tmp.y = result->rt._13;
|
||||
tmp.z = result->rt._23;
|
||||
PSMTXQuat(result->rt, q1);
|
||||
MTXQuat(result->rt, q1);
|
||||
result->rt._03 = tmp.x;
|
||||
result->rt._13 = tmp.y;
|
||||
result->rt._23 = tmp.z;
|
||||
@@ -121,7 +121,7 @@ bool mdl_c::mdlCallback_c::create(nw4r::g3d::ResMdl mdl, mAllocator_c *alloc, u3
|
||||
node->s.x = 1.0f;
|
||||
node->s.y = 1.0f;
|
||||
node->s.z = 1.0f;
|
||||
PSMTXIdentity(node->rt);
|
||||
MTXIdentity(node->rt);
|
||||
node++;
|
||||
}
|
||||
|
||||
|
||||
@@ -504,7 +504,7 @@ bool mShadowChild_c::addMdl(scnLeaf_c &mdl, const mQuat_c &quat) {
|
||||
|
||||
bool mShadowChild_c::setGeom(const GXTexObj *texObj, const mMtx_c &mtx, const mQuat_c &quat) {
|
||||
mQuat = quat;
|
||||
PSMTXMultVec(mtx.m, mQuat.v, mQuat.v);
|
||||
MTXMultVec(mtx.m, mQuat.v, mQuat.v);
|
||||
if (texObj == nullptr) {
|
||||
mTexObj = *mShadow_c::sTexObj;
|
||||
} else {
|
||||
@@ -591,7 +591,7 @@ void mShadowChild_c::draw() {
|
||||
GXSetTevColor(GX_TEVREG0, mShadowColor);
|
||||
Mtx mtx;
|
||||
C_MTXLightOrtho(mtx, field_0x13C, -field_0x13C, -field_0x13C, field_0x13C, 0.5f, -0.5f, 0.5f, 0.5f);
|
||||
PSMTXConcat(mtx, mFrustum.mView.m, mtx);
|
||||
MTXConcat(mtx, mFrustum.mView.m, mtx);
|
||||
GXLoadTexMtxImm(mtx, GX_TEXMTX0, GX_MTX3x4);
|
||||
mShadow_c::GetInstance()->draw(mFrustum.mView, field_0x154);
|
||||
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
|
||||
@@ -628,14 +628,14 @@ void mCustomShadow_c::calc(mMtx_c mtx, mMtx_c &mtx2) const {
|
||||
mVec3_c trans;
|
||||
mtx2.copyFrom(mMtx);
|
||||
mVec3_c offset(0.0f, field_0x48, 0.0f);
|
||||
PSMTXMultVec(mtx2, offset, trans);
|
||||
PSMTXMultVec(mtx, trans, trans);
|
||||
MTXMultVec(mtx2, offset, trans);
|
||||
MTXMultVec(mtx, trans, trans);
|
||||
|
||||
PSMTXTrans(mtx2, trans.x, trans.y, trans.z);
|
||||
MTXTrans(mtx2, trans.x, trans.y, trans.z);
|
||||
|
||||
mMtx_c scaleMtx;
|
||||
PSMTXScale(scaleMtx, field_0x4C, field_0x4C, field_0x4C);
|
||||
PSMTXConcat(mtx2, scaleMtx, mtx2);
|
||||
MTXScale(scaleMtx, field_0x4C, field_0x4C, field_0x4C);
|
||||
MTXConcat(mtx2, scaleMtx, mtx2);
|
||||
}
|
||||
|
||||
} // namespace m3d
|
||||
|
||||
@@ -54,7 +54,7 @@ void mColorFader_c::draw() {
|
||||
GXSetProjection(projMtx, GX_ORTHOGRAPHIC);
|
||||
|
||||
Mtx posMtx;
|
||||
PSMTXIdentity(posMtx);
|
||||
MTXIdentity(posMtx);
|
||||
GXLoadPosMtxImm(posMtx, 0);
|
||||
GXSetCurrentMtx(0);
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ void ResNode::CalcChrAnmResult(ChrAnmResult *pResult) const {
|
||||
}
|
||||
|
||||
if (r.flags & ResNodeData::FLAG_ROT_ZERO) {
|
||||
PSMTXIdentity(pResult->rt);
|
||||
MTXIdentity(pResult->rt);
|
||||
flags |= ChrAnmResult::FLAG_ROT_ZERO;
|
||||
} else {
|
||||
pResult->rawR = math::VEC3(r.rot);
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace lyt {
|
||||
// __ct__Q34nw4r3lyt8DrawInfoFv
|
||||
DrawInfo::DrawInfo() : mViewRect(), mScale(1.0f, 1.0f), mGlobalAlpha(1.0f) {
|
||||
memset(&mFlags, 0, 1);
|
||||
PSMTXIdentity(mViewMtx);
|
||||
MTXIdentity(mViewMtx);
|
||||
}
|
||||
|
||||
// __dt__Q34nw4r3lyt8DrawInfoFv
|
||||
|
||||
@@ -277,12 +277,12 @@ void Pane::CalculateMtx(const DrawInfo &drawInfo) {
|
||||
this->mMtx._13 = this->mTranslate.y;
|
||||
this->mMtx._23 = this->mTranslate.z;
|
||||
if (this->mpParent) {
|
||||
PSMTXConcat(this->mpParent->mGlbMtx, this->mMtx, this->mGlbMtx);
|
||||
MTXConcat(this->mpParent->mGlbMtx, this->mMtx, this->mGlbMtx);
|
||||
} else {
|
||||
if (drawInfo.IsMultipleViewMtxOnDraw()) {
|
||||
this->mGlbMtx = this->mMtx;
|
||||
} else {
|
||||
PSMTXConcat(drawInfo.GetViewMtx(), this->mMtx, this->mGlbMtx);
|
||||
MTXConcat(drawInfo.GetViewMtx(), this->mMtx, this->mGlbMtx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -446,7 +446,7 @@ void Pane::LoadMtx(const DrawInfo &drawInfo) {
|
||||
math::MTX34 mtx;
|
||||
math::MTX34 *mtxPtr;
|
||||
if (drawInfo.IsMultipleViewMtxOnDraw()) {
|
||||
PSMTXConcat(drawInfo.GetViewMtx(), this->mGlbMtx, mtx);
|
||||
MTXConcat(drawInfo.GetViewMtx(), this->mGlbMtx, mtx);
|
||||
mtxPtr = &mtx;
|
||||
} else {
|
||||
mtxPtr = &this->mGlbMtx;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user