mirror of
https://github.com/zeldaret/tp
synced 2026-08-22 06:44:53 -04:00
more simple J2D/J3D funcs (#166)
* more simple J2D/J3D funcs * JPABaseShape constructor * fmt Co-authored-by: lepelog <25211966+lepelog@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
f7916ebde1
commit
c15d8fcb3e
@@ -1,6 +1,61 @@
|
||||
#ifndef JPADYNAMICSBLOCK_H
|
||||
#define JPADYNAMICSBLOCK_H
|
||||
|
||||
#include "JSystem/JGeometry.h"
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class JPAEmitterWorkData;
|
||||
|
||||
struct JPADynamicsBlockData {
|
||||
// Common header.
|
||||
/* 0x00 */ u8 mMagic[4];
|
||||
/* 0x04 */ u32 mSize;
|
||||
|
||||
/* 0x08 */ u32 mFlags;
|
||||
/* 0x0C */ u32 mResUserWork;
|
||||
/* 0x10 */ JGeometry::TVec3<f32> mEmitterScl;
|
||||
/* 0x1C */ JGeometry::TVec3<f32> mEmitterTrs;
|
||||
/* 0x28 */ JGeometry::TVec3<f32> mEmitterDir;
|
||||
/* 0x34 */ f32 mInitialVelOmni;
|
||||
/* 0x38 */ f32 mInitialVelAxis;
|
||||
/* 0x3C */ f32 mInitialVelRndm;
|
||||
/* 0x40 */ f32 mInitialVelDir;
|
||||
/* 0x44 */ f32 mSpread;
|
||||
/* 0x48 */ f32 mInitialVelRatio;
|
||||
/* 0x4C */ f32 mRate;
|
||||
/* 0x50 */ f32 mRateRndm;
|
||||
/* 0x54 */ f32 mLifeTimeRndm;
|
||||
/* 0x58 */ f32 mVolumeSweep;
|
||||
/* 0x5C */ f32 mVolumeMinRad;
|
||||
/* 0x60 */ f32 mAirResist;
|
||||
/* 0x64 */ f32 mMoment;
|
||||
/* 0x68 */ JGeometry::TVec3<s16> mEmitterRot;
|
||||
/* 0x6E */ s16 mMaxFrame;
|
||||
/* 0x70 */ s16 mStartFrame;
|
||||
/* 0x72 */ s16 mLifeTime;
|
||||
/* 0x74 */ s16 mVolumeSize;
|
||||
/* 0x76 */ s16 mDivNumber;
|
||||
/* 0x78 */ u8 mRateStep;
|
||||
/* 0x7C */ u32 field_0x7c;
|
||||
};
|
||||
|
||||
typedef void (*JPADynamicsCalcVolumeFunc)(JPAEmitterWorkData*);
|
||||
|
||||
class JPADynamicsBlock {
|
||||
public:
|
||||
/* 8027BB18 */ JPADynamicsBlock(u8 const*);
|
||||
/* 8027BB4C */ void init();
|
||||
/* 8027BBE8 */ void create(JPAEmitterWorkData*);
|
||||
|
||||
void calc(JPAEmitterWorkData* work) { mpCalcVolumeFunc(work); }
|
||||
|
||||
s16 getStartFrame() const { return mpData->mStartFrame; }
|
||||
u32 getResUserWork() const { return mpData->mResUserWork; }
|
||||
|
||||
public:
|
||||
JPADynamicsBlockData* mpData;
|
||||
JPADynamicsCalcVolumeFunc mpCalcVolumeFunc;
|
||||
};
|
||||
|
||||
#endif /* JPADYNAMICSBLOCK_H */
|
||||
|
||||
@@ -3,4 +3,31 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct JPAExTexShapeData {
|
||||
// Common header.
|
||||
/* 0x00 */ u8 mMagic[4];
|
||||
/* 0x04 */ u32 mSize;
|
||||
|
||||
/* 0x08 */ u32 mFlags;
|
||||
/* 0x0C */ f32 mIndTexMtx[2][3];
|
||||
/* 0x24 */ s8 mExpScale;
|
||||
/* 0x25 */ s8 mIndTexIdx;
|
||||
/* 0x26 */ s8 mSecTexIdx;
|
||||
};
|
||||
|
||||
class JPAExTexShape {
|
||||
public:
|
||||
/* 8027B13C */ JPAExTexShape(u8 const*);
|
||||
|
||||
const f32* getIndTexMtx() const { return &mpData->mIndTexMtx[0][0]; }
|
||||
s32 getExpScale() const { return mpData->mExpScale; }
|
||||
u8 getIndTexIdx() const { return mpData->mIndTexIdx; }
|
||||
u8 getSecTexIdx() const { return mpData->mSecTexIdx; }
|
||||
bool isUseIndirect() const { return !!(mpData->mFlags & 0x01); }
|
||||
bool isUseSecTex() const { return !!(mpData->mFlags & 0x0100); }
|
||||
|
||||
public:
|
||||
const JPAExTexShapeData* mpData;
|
||||
};
|
||||
|
||||
#endif /* JPAEXTEXSHAPE_H */
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef JPAMATH_H
|
||||
#define JPAMATH_H
|
||||
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
void JPAGetXYZRotateMtx(s16 x, s16 y, s16 z, Mtx dst);
|
||||
|
||||
#endif /* JPAMATH_H */
|
||||
|
||||
@@ -4,15 +4,243 @@
|
||||
#include "dolphin/gx/GX.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class JPABaseParticle;
|
||||
#include "JSystem/JGeometry.h"
|
||||
#include "JSystem/JSupport/JSUList.h"
|
||||
|
||||
struct JPABaseEmitter {
|
||||
class JKRHeap;
|
||||
class JPABaseEmitter;
|
||||
class JPABaseParticle;
|
||||
class JPADrawInfo;
|
||||
class JPAEmitterCallBack;
|
||||
class JPAEmitterManager;
|
||||
class JPAParticleCallBack;
|
||||
class JPAResource;
|
||||
class JPAResourceManager;
|
||||
|
||||
class JPADrawInfo {
|
||||
public:
|
||||
Mtx mCamMtx;
|
||||
Mtx mPrjMtx;
|
||||
|
||||
void getCamMtx(Mtx* dst) const { PSMTXCopy(mCamMtx, *dst); }
|
||||
void getPrjMtx(Mtx* dst) const { PSMTXCopy(mPrjMtx, *dst); }
|
||||
};
|
||||
|
||||
struct JPARandom {
|
||||
public:
|
||||
JPARandom() { mSeed = 0; }
|
||||
void set_seed(u32 seed) { mSeed = seed; }
|
||||
|
||||
public:
|
||||
u32 mSeed;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct JPANode {
|
||||
JPANode<T>* mpPrev;
|
||||
JPANode<T>* mpNext;
|
||||
T mData;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct JPAList {
|
||||
JPANode<T>* mpFirst;
|
||||
JPANode<T>* mpLast;
|
||||
u32 mNum;
|
||||
|
||||
JPAList() : mpFirst(NULL), mpLast(NULL), mNum() {}
|
||||
|
||||
JPANode<T>* getFirst() const { return mpFirst; }
|
||||
JPANode<T>* getLast() const { return mpLast; }
|
||||
u32 getNum() const { return mNum; }
|
||||
|
||||
void push_front(JPANode<T>* node) {
|
||||
if (mpFirst != NULL) {
|
||||
node->mpPrev = NULL;
|
||||
node->mpNext = mpFirst;
|
||||
mpFirst->mpPrev = node;
|
||||
mpFirst = node;
|
||||
} else {
|
||||
mpLast = node;
|
||||
mpFirst = node;
|
||||
node->mpPrev = NULL;
|
||||
node->mpNext = NULL;
|
||||
}
|
||||
|
||||
mNum++;
|
||||
}
|
||||
|
||||
void push_back(JPANode<T>* node) {
|
||||
if (mpLast != NULL) {
|
||||
node->mpPrev = mpLast;
|
||||
node->mpNext = NULL;
|
||||
mpLast->mpNext = node;
|
||||
mpLast = node;
|
||||
} else {
|
||||
mpFirst = node;
|
||||
mpLast = node;
|
||||
node->mpPrev = NULL;
|
||||
node->mpNext = NULL;
|
||||
}
|
||||
|
||||
mNum++;
|
||||
}
|
||||
|
||||
JPANode<T>* pop_front() {
|
||||
JPANode<T>* ret = NULL;
|
||||
|
||||
if (mNum == 1) {
|
||||
ret = mpFirst;
|
||||
mpLast = NULL;
|
||||
mpFirst = NULL;
|
||||
mNum--;
|
||||
} else if (mNum) {
|
||||
ret = mpFirst;
|
||||
ret->mpNext->mpPrev = NULL;
|
||||
mpFirst = ret->mpNext;
|
||||
mNum--;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
JPANode<T>* pop_back() {
|
||||
JPANode<T>* ret = NULL;
|
||||
|
||||
if (mNum == 1) {
|
||||
ret = mpLast;
|
||||
mpLast = NULL;
|
||||
mpFirst = NULL;
|
||||
mNum--;
|
||||
} else if (mNum) {
|
||||
ret = mpLast;
|
||||
ret->mpPrev->mpNext = NULL;
|
||||
mpLast = ret->mpPrev;
|
||||
mNum--;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
struct JPAEmitterWorkData {
|
||||
/* 0x00 */ JPABaseEmitter* mpEmtr;
|
||||
/* 0x04 */ JPAResource* mpRes;
|
||||
/* 0x08 */ JPAResourceManager* mpResMgr;
|
||||
/* 0x0C */ JPARandom mRndm;
|
||||
/* 0x10 */ JGeometry::TVec3<f32> mVolumePos;
|
||||
/* 0x1C */ JGeometry::TVec3<f32> mVelOmni;
|
||||
/* 0x28 */ JGeometry::TVec3<f32> mVelAxis;
|
||||
/* 0x34 */ f32 mVolumeSize;
|
||||
/* 0x38 */ f32 mVolumeMinRad;
|
||||
/* 0x3C */ f32 mVolumeSweep;
|
||||
/* 0x40 */ u32 mEmitCount;
|
||||
/* 0x44 */ u32 mVolumeEmitIdx;
|
||||
/* 0x48 */ Mtx mDirectionMtx;
|
||||
/* 0x78 */ Mtx mRotationMtx;
|
||||
/* 0xA8 */ Mtx mGlobalRot;
|
||||
/* 0xD8 */ Mtx mGlobalSR;
|
||||
/* 0x108 */ JGeometry::TVec3<f32> mEmitterPos;
|
||||
/* 0x114 */ JGeometry::TVec3<f32> mGlobalScl;
|
||||
/* 0x120 */ JGeometry::TVec3<f32> mGlobalEmtrDir;
|
||||
/* 0x12C */ JGeometry::TVec3<f32> mPublicScale;
|
||||
/* 0x138 */ JGeometry::TVec3<f32> mGlobalPos;
|
||||
/* 0x144 */ JGeometry::TVec2<f32> mGlobalPtclScl;
|
||||
/* 0x14C */ JGeometry::TVec2<f32> mPivot;
|
||||
/* 0x154 */ Mtx mYBBCamMtx;
|
||||
/* 0x184 */ Mtx mPosCamMtx;
|
||||
/* 0x1B4 */ Mtx mPrjMtx;
|
||||
/* 0x1E4 */ JPAList<JPABaseParticle>* mpAlivePtcl;
|
||||
/* 0x1E8 */ JPANode<JPABaseParticle>* mpCurNode;
|
||||
/* 0x1EC */ u32 mVolumeAngleNum;
|
||||
/* 0x1F0 */ u32 mVolumeAngleMax;
|
||||
/* 0x1F4 */ u32 mVolumeX;
|
||||
/* 0x1F8 */ u32 mDivNumber;
|
||||
/* 0x1FC */ f32 mScaleAnm;
|
||||
/* 0x200 */ u32 mDirType;
|
||||
/* 0x204 */ u32 mRotType;
|
||||
/* 0x208 */ u32 mPlaneType;
|
||||
/* 0x20C */ u32 mDLType;
|
||||
/* 0x210 */ u32 mPrjType;
|
||||
/* 0x214 */ s16 mClrKeyFrame;
|
||||
/* 0x216 */ u8 mDrawCount;
|
||||
};
|
||||
|
||||
class JPAEmitterCallBack {
|
||||
public:
|
||||
/* 80050368 */ void execute(JPABaseEmitter*);
|
||||
/* 8005036C */ void draw(JPABaseEmitter*);
|
||||
/* 80050370 */ void drawAfter(JPABaseEmitter*);
|
||||
/* 80050374 */ void executeAfter(JPABaseEmitter*);
|
||||
/* 8027E6A4 */ ~JPAEmitterCallBack();
|
||||
};
|
||||
|
||||
class JPABaseEmitter {
|
||||
public:
|
||||
/* 8027E5EC */ ~JPABaseEmitter();
|
||||
/* 8027E64C */ JPABaseEmitter();
|
||||
/* 8027E6EC */ void init(JPAEmitterManager*, JPAResource*);
|
||||
/* 8027EDD4 */ bool processTillStartFrame();
|
||||
/* 8027EE14 */ void processTermination();
|
||||
/* 8027EEB0 */ void calcEmitterGlobalPosition(JGeometry::TVec3<f32>*) const;
|
||||
/* 8027EC60 */ void deleteAllParticle();
|
||||
/* 8027EB60 */ void createChild(JPABaseParticle*);
|
||||
/* 8027EA40 */ void createParticle();
|
||||
/* 8027EF30 */ void getCurrentCreateNumber() const;
|
||||
/* 8027EF40 */ void getDrawCount() const;
|
||||
/* 8027EF50 */ void loadTexture(u8, _GXTexMapID);
|
||||
/* 8027EB60 */ JPABaseParticle* createChild(JPABaseParticle*);
|
||||
/* 8027EA40 */ JPABaseParticle* createParticle();
|
||||
/* 8027EF30 */ u32 getCurrentCreateNumber() const;
|
||||
/* 8027EF40 */ u8 getDrawCount() const;
|
||||
/* 8027EF50 */ bool loadTexture(u8, GXTexMapID);
|
||||
|
||||
void setStatus(u32 status) { mStatus |= status; }
|
||||
bool checkStatus(u32 status) { return !!(mStatus & status); }
|
||||
u8 getResourceManagerID() const { return mResMgrID; }
|
||||
u8 getGroupID() const { return mGroupID; }
|
||||
|
||||
public:
|
||||
/* 0x00 */ Vec mLocalScl;
|
||||
/* 0x0C */ Vec mLocalTrs;
|
||||
/* 0x18 */ Vec mLocalDir;
|
||||
/* 0x24 */ s32 mMaxFrame;
|
||||
/* 0x28 */ f32 mRate;
|
||||
/* 0x2C */ f32 mVolumeSweep;
|
||||
/* 0x30 */ f32 mVolumeMinRad;
|
||||
/* 0x34 */ f32 mAwayFromCenterSpeed;
|
||||
/* 0x38 */ f32 mAwayFromAxisSpeed;
|
||||
/* 0x3C */ f32 mDirSpeed;
|
||||
/* 0x40 */ f32 mSpread;
|
||||
/* 0x44 */ f32 mRndmDirSpeed;
|
||||
/* 0x48 */ f32 mAirResist;
|
||||
/* 0x4C */ JGeometry::TVec3<s16> mLocalRot;
|
||||
/* 0x52 */ u16 mLifeTime;
|
||||
/* 0x54 */ u16 mVolumeSize;
|
||||
/* 0x56 */ u8 mRateStep;
|
||||
/* 0x58 */ JSULink<JPABaseEmitter> mLink;
|
||||
/* 0x68 */ Mtx mGlobalRot;
|
||||
/* 0x98 */ Vec mGlobalScl;
|
||||
/* 0xA4 */ JGeometry::TVec3<f32> mGlobalTrs;
|
||||
/* 0xB0 */ JGeometry::TVec2<f32> mGlobalPScl;
|
||||
/* 0xB8 */ GXColor mGlobalPrmClr;
|
||||
/* 0xBC */ GXColor mGlobalEnvClr;
|
||||
/* 0xC0 */ void* mpUserWork;
|
||||
/* 0xC4 */ JPARandom mRndm;
|
||||
/* 0xC8 */ JPAList<JPABaseParticle> mAlivePtclBase;
|
||||
/* 0xD4 */ JPAList<JPABaseParticle> mAlivePtclChld;
|
||||
/* 0xE0 */ JPAList<JPABaseParticle>* mpPtclPool;
|
||||
/* 0xE4 */ JPAEmitterManager* mpEmtrMgr;
|
||||
/* 0xE8 */ JPAResource* mpRes;
|
||||
/* 0xEC */ JPAEmitterCallBack* mpEmtrCallBack;
|
||||
/* 0xF0 */ JPAParticleCallBack* mpPtclCallBack;
|
||||
/* 0xF4 */ u32 mStatus;
|
||||
/* 0xF8 */ f32 mEmitCount;
|
||||
/* 0xFC */ f32 mScaleOut;
|
||||
/* 0x100 */ u32 mTick;
|
||||
/* 0x104 */ s16 mWaitTime;
|
||||
/* 0x106 */ u16 mRateStepTimer;
|
||||
/* 0x108 */ GXColor mPrmClr;
|
||||
/* 0x10C */ GXColor mEnvClr;
|
||||
/* 0x110 */ u8 mDrawTimes;
|
||||
/* 0x111 */ u8 mTexAnmIdx;
|
||||
/* 0x112 */ u8 mGroupID;
|
||||
/* 0x113 */ u8 mResMgrID;
|
||||
};
|
||||
|
||||
class JPAParticleCallBack {
|
||||
@@ -22,4 +250,69 @@ public:
|
||||
virtual void draw(JPABaseEmitter*, JPABaseParticle*);
|
||||
};
|
||||
|
||||
class JPABaseParticle {
|
||||
public:
|
||||
/* 8027EFEC */ void init_p(JPAEmitterWorkData*);
|
||||
/* 8027F8C8 */ void init_c(JPAEmitterWorkData*, JPABaseParticle*);
|
||||
/* 8027FFD0 */ void calc_p(JPAEmitterWorkData*);
|
||||
/* 80280260 */ void calc_c(JPAEmitterWorkData*);
|
||||
/* 802804C8 */ void canCreateChild(JPAEmitterWorkData*);
|
||||
/* 80280548 */ f32 getWidth(JPABaseEmitter const*) const;
|
||||
/* 80280568 */ f32 getHeight(JPABaseEmitter const*) const;
|
||||
|
||||
public:
|
||||
/* 0x00 */ Vec mPosition;
|
||||
/* 0x0C */ Vec mLocalPosition;
|
||||
/* 0x18 */ Vec mOffsetPosition;
|
||||
/* 0x24 */ Vec mVelocity;
|
||||
/* 0x30 */ Vec mVelType1;
|
||||
/* 0x3C */ Vec mVelType0;
|
||||
/* 0x48 */ Vec mVelType2;
|
||||
/* 0x54 */ Vec mBaseAxis;
|
||||
/* 0x60 */ f32 mParticleScaleX;
|
||||
/* 0x64 */ f32 mParticleScaleY;
|
||||
/* 0x68 */ f32 mScaleOut;
|
||||
/* 0x6C */ f32 mAlphaWaveRandom;
|
||||
/* 0x70 */ f32 mMoment;
|
||||
/* 0x74 */ f32 mDrag;
|
||||
/* 0x78 */ u32 field_0x78;
|
||||
/* 0x7C */ u32 mStatus;
|
||||
/* 0x80 */ u16 mAge;
|
||||
/* 0x82 */ u16 mLifeTime;
|
||||
/* 0x84 */ f32 mTime;
|
||||
/* 0x88 */ u16 mRotateAngle;
|
||||
/* 0x8A */ u16 mRotateSpeed;
|
||||
/* 0x8C */ GXColor mPrmClr;
|
||||
/* 0x90 */ GXColor mEnvClr;
|
||||
/* 0x94 */ u8 mTexAnmIdx;
|
||||
/* 0x95 */ u8 mAnmRandom;
|
||||
/* 0x96 */ u8 mPrmColorAlphaAnm;
|
||||
};
|
||||
|
||||
class JPAEmitterManager {
|
||||
public:
|
||||
/* 8027DCA0 */ JPAEmitterManager(u32, u32, JKRHeap*, u8, u8);
|
||||
/* 8027DEBC */ JPABaseEmitter* createSimpleEmitterID(JGeometry::TVec3<f32> const&, u16, u8, u8,
|
||||
JPAEmitterCallBack*, JPAParticleCallBack*);
|
||||
/* 8027DFA0 */ void calc(u8);
|
||||
/* 8027E028 */ void draw(JPADrawInfo const*, u8);
|
||||
/* 8027E220 */ void forceDeleteAllEmitter();
|
||||
/* 8027E278 */ void forceDeleteGroupEmitter(u8);
|
||||
/* 8027E2D8 */ void forceDeleteEmitter(JPABaseEmitter*);
|
||||
/* 8027E344 */ void entryResourceManager(JPAResourceManager*, u8);
|
||||
/* 8027E354 */ void clearResourceManager(u8);
|
||||
/* 8027E3F4 */ void calcYBBCam();
|
||||
|
||||
public:
|
||||
/* 0x00 */ JSUList<JPABaseEmitter>* mpGrpEmtr;
|
||||
/* 0x04 */ JSUList<JPABaseEmitter> mFreeEmtrList;
|
||||
/* 0x10 */ JPAList<JPABaseParticle> mPtclPool;
|
||||
/* 0x1C */ JPAResourceManager** mpResMgrAry;
|
||||
/* 0x20 */ JPAEmitterWorkData* mpWorkData;
|
||||
/* 0x24 */ u32 mEmtrMax;
|
||||
/* 0x28 */ u32 mPtclMax;
|
||||
/* 0x2C */ u8 mGrpMax;
|
||||
/* 0x2D */ u8 mResMax;
|
||||
};
|
||||
|
||||
#endif /* JPAPARTICLE_H */
|
||||
|
||||
@@ -3,4 +3,73 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class JKRHeap;
|
||||
class JPAEmitterWorkData;
|
||||
class JPABaseEmitter;
|
||||
class JPABaseParticle;
|
||||
|
||||
class JPABaseShape;
|
||||
class JPAExtraShape;
|
||||
class JPAChildShape;
|
||||
class JPAExTexShape;
|
||||
class JPADynamicsBlock;
|
||||
class JPAFieldBlock;
|
||||
class JPAKeyBlock;
|
||||
|
||||
class JPAResource {
|
||||
public:
|
||||
/* 80274010 */ JPAResource();
|
||||
/* 80274080 */ void init(JKRHeap*);
|
||||
/* 802755E8 */ void calc(JPAEmitterWorkData*, JPABaseEmitter*);
|
||||
/* 80275A94 */ void draw(JPAEmitterWorkData*, JPABaseEmitter*);
|
||||
/* 80275B74 */ void drawP(JPAEmitterWorkData*);
|
||||
/* 80275EB0 */ void drawC(JPAEmitterWorkData*);
|
||||
/* 802761A8 */ void setPTev();
|
||||
/* 8027642C */ void setCTev(JPAEmitterWorkData*);
|
||||
/* 8027658C */ void calc_p(JPAEmitterWorkData*, JPABaseParticle*);
|
||||
/* 80276608 */ void calc_c(JPAEmitterWorkData*, JPABaseParticle*);
|
||||
/* 80276684 */ void calcField(JPAEmitterWorkData*, JPABaseParticle*);
|
||||
/* 80276700 */ void calcKey(JPAEmitterWorkData*);
|
||||
/* 80276840 */ void calcWorkData_c(JPAEmitterWorkData*);
|
||||
/* 80276A0C */ 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; }
|
||||
|
||||
u32 getTexIdx(u32 idx) const { return mpTDB1[idx]; }
|
||||
u16 getUsrIdx() const { return mUsrIdx; }
|
||||
|
||||
public:
|
||||
/* 0x00 */ void** mpCalcEmitterFuncList;
|
||||
/* 0x04 */ void** mpDrawEmitterFuncList;
|
||||
/* 0x08 */ void** mpDrawEmitterChildFuncList;
|
||||
/* 0x0C */ void** mpCalcParticleFuncList;
|
||||
/* 0x10 */ void** mpDrawParticleFuncList;
|
||||
/* 0x14 */ void** mpCalcParticleChildFuncList;
|
||||
/* 0x18 */ void** mpDrawParticleChildFuncList;
|
||||
|
||||
/* 0x1C */ JPABaseShape* mpBaseShape;
|
||||
/* 0x20 */ JPAExtraShape* mpExtraShape;
|
||||
/* 0x24 */ JPAChildShape* mpChildShape;
|
||||
/* 0x28 */ JPAExTexShape* mpExTexShape;
|
||||
/* 0x2C */ JPADynamicsBlock* mpDynamicsBlock;
|
||||
/* 0x30 */ JPAFieldBlock** mpFieldBlocks;
|
||||
/* 0x34 */ JPAKeyBlock** mpKeyBlocks;
|
||||
/* 0x38 */ u16 const* mpTDB1;
|
||||
/* 0x3C */ u16 mUsrIdx;
|
||||
/* 0x3E */ u8 mFieldBlockNum;
|
||||
/* 0x3F */ u8 mKeyBlockNum;
|
||||
/* 0x40 */ u8 mTDB1Num;
|
||||
/* 0x41 */ u8 mpCalcEmitterFuncListNum;
|
||||
/* 0x42 */ u8 mpDrawEmitterFuncListNum;
|
||||
/* 0x43 */ u8 mpDrawEmitterChildFuncListNum;
|
||||
/* 0x44 */ u8 mpCalcParticleFuncListNum;
|
||||
/* 0x45 */ u8 mpDrawParticleFuncListNum;
|
||||
/* 0x46 */ u8 mpCalcParticleChildFuncListNum;
|
||||
/* 0x47 */ u8 mpDrawParticleChildFuncListNum;
|
||||
};
|
||||
|
||||
#endif /* JPARESOURCE_H */
|
||||
|
||||
@@ -1,6 +1,34 @@
|
||||
#ifndef JPARESOURCEMANAGER_H
|
||||
#define JPARESOURCEMANAGER_H
|
||||
|
||||
#include "JSystem/JParticle/JPATexture.h"
|
||||
#include "dolphin/gx/GX.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class JKRHeap;
|
||||
class ResTIMG;
|
||||
class JPAResource;
|
||||
|
||||
class JPAResourceManager {
|
||||
public:
|
||||
/* 80273E10 */ JPAResourceManager(void const*, JKRHeap*);
|
||||
/* 80273E68 */ JPAResource* getResource(u16) const;
|
||||
/* 80273EA8 */ bool checkUserIndexDuplication(u16) const;
|
||||
/* 80273EEC */ const ResTIMG* swapTexture(ResTIMG const*, char const*);
|
||||
/* 80273F8C */ void registRes(JPAResource*);
|
||||
/* 80273FAC */ void registTex(JPATexture*);
|
||||
/* 80273FCC */ u32 getResUserWork(u16) const;
|
||||
|
||||
void load(u16 idx, GXTexMapID texMapID) { mpTexArr[idx]->load(texMapID); }
|
||||
|
||||
public:
|
||||
/* 0x00 */ JKRHeap* mpHeap;
|
||||
/* 0x04 */ JPAResource** mpResArr;
|
||||
/* 0x08 */ JPATexture** mpTexArr;
|
||||
/* 0x0C */ u16 mResMax;
|
||||
/* 0x0E */ u16 mResNum;
|
||||
/* 0x10 */ u16 mTexMax;
|
||||
/* 0x12 */ u16 mTexNum;
|
||||
};
|
||||
|
||||
#endif /* JPARESOURCEMANAGER_H */
|
||||
|
||||
@@ -1,6 +1,29 @@
|
||||
#ifndef JPATEXTURE_H
|
||||
#define JPATEXTURE_H
|
||||
|
||||
#include "JSystem/JUtility/JUTTexture.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct JPATextureData {
|
||||
// Probably magic / size / flags up top here, but they're unused.
|
||||
/* 0x00 */ char field_0x00[0x0C];
|
||||
/* 0x0C */ char mName[0x14];
|
||||
/* 0x20 */ ResTIMG mResTIMG;
|
||||
};
|
||||
|
||||
class JPATexture {
|
||||
public:
|
||||
JPATexture(u8 const*);
|
||||
virtual ~JPATexture();
|
||||
|
||||
void load(GXTexMapID texMapID) { mTexture.load(texMapID); }
|
||||
|
||||
JUTTexture* getJUTTexture() { return &mTexture; }
|
||||
const char* getName() const { return mpData->mName; }
|
||||
|
||||
public:
|
||||
JUTTexture mTexture;
|
||||
const JPATextureData* mpData;
|
||||
};
|
||||
|
||||
#endif /* JPATEXTURE_H */
|
||||
|
||||
Reference in New Issue
Block a user