diff options
| author | Jasper St. Pierre <jstpierre@mecheye.net> | 2023-12-19 20:50:36 -0800 |
|---|---|---|
| committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2023-12-19 20:50:36 -0800 |
| commit | 3b2fcca7d42e2f3f5f0b783bbda446c377055dbf (patch) | |
| tree | a8d3e6fa39d5f61a2d2556bb2b180ebb265a7cfe /include/JSystem/JParticle | |
| parent | 5a7da09265c99740a5f1a0b87f783d8a79ad9168 (diff) | |
JPADraw more work
Diffstat (limited to 'include/JSystem/JParticle')
| -rw-r--r-- | include/JSystem/JParticle/JPADraw.h | 14 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPADrawVisitor.h | 16 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAExtraShape.h | 8 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAResourceManager.h | 4 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPASweepShape.h | 12 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPATexture.h | 15 |
6 files changed, 51 insertions, 18 deletions
diff --git a/include/JSystem/JParticle/JPADraw.h b/include/JSystem/JParticle/JPADraw.h index bbf7b66f..c7319a53 100644 --- a/include/JSystem/JParticle/JPADraw.h +++ b/include/JSystem/JParticle/JPADraw.h @@ -14,13 +14,17 @@ public: JPADrawClipBoard() {} ~JPADrawClipBoard() {} + typedef void(*DirTypeFunc)(JPABaseParticle*, JPABaseEmitter*, JGeometry::TVec3<f32>&); + typedef void(*RotTypeFunc)(f32, f32, Mtx&); + typedef void(*BasePlaneTypeFunc)(f32, f32, f32, f32, JGeometry::TVec3<f32>*); + /* 0x00 */ JPADrawSetupTev mSetupTev; /* 0x04 */ f32 mGlobalScaleX; /* 0x08 */ f32 mGlobalScaleY; /* 0x0C */ f32 mPivotX; /* 0x10 */ f32 mPivotY; /* 0x14 */ JGeometry::TVec2<f32> field_0x14[4]; - /* 0x34 */ MtxP mDrawMtx; + /* 0x34 */ MtxP mDrawMtxPtr; /* 0x38 */ f32 field_0x38; /* 0x3C */ f32 field_0x3c; /* 0x40 */ f32 field_0x40; @@ -33,11 +37,13 @@ public: /* 0x5C */ f32 field_0x5c; /* 0x60 */ f32 field_0x60; /* 0x64 */ f32 field_0x64; - /* 0x68 */ Mtx field_0x68; + /* 0x68 */ Mtx mDrawMtx; /* 0x98 */ GXColor mPrmColor; /* 0x9C */ GXColor mEnvColor; - /* 0xA0 */ void* field_0xa0; - /* 0xA4 */ u8 field_0xa4[0xb4 - 0xa4]; + /* 0xA0 */ DirTypeFunc mDirTypeFunc; + /* 0xA4 */ RotTypeFunc mRotTypeFunc; + /* 0xA8 */ BasePlaneTypeFunc mBasePlaneTypeFunc; + /* 0xAC */ u8 field_0xa4[0xb4 - 0xac]; }; class JPADraw { diff --git a/include/JSystem/JParticle/JPADrawVisitor.h b/include/JSystem/JParticle/JPADrawVisitor.h index 8ac0d733..aabb63d4 100644 --- a/include/JSystem/JParticle/JPADrawVisitor.h +++ b/include/JSystem/JParticle/JPADrawVisitor.h @@ -2,6 +2,7 @@ #define JPADRAWVISITOR_H #include "JSystem/JSupport/JSUList.h" +#include "dolphin/mtx/mtx.h" #include "dolphin/types.h" class JPABaseEmitter; @@ -520,4 +521,19 @@ public: /* 0x138 */ JPADrawCalcChildScaleOut mCalcChildScaleOut; }; +void dirTypeVel(JPABaseParticle*, JPABaseEmitter*, JGeometry::TVec3<f32>&); +void dirTypePos(JPABaseParticle*, JPABaseEmitter*, JGeometry::TVec3<f32>&); +void dirTypePosInv(JPABaseParticle*, JPABaseEmitter*, JGeometry::TVec3<f32>&); +void dirTypeEmtrDir(JPABaseParticle*, JPABaseEmitter*, JGeometry::TVec3<f32>&); +void dirTypePrevPtcl(JPABaseParticle*, JPABaseEmitter*, JGeometry::TVec3<f32>&); + +void rotTypeY(f32, f32, Mtx&); +void rotTypeX(f32, f32, Mtx&); +void rotTypeZ(f32, f32, Mtx&); +void rotTypeXYZ(f32, f32, Mtx&); +void rotTypeYJiggle(f32, f32, Mtx&); + +void basePlaneTypeXY(f32, f32, f32, f32, JGeometry::TVec3<f32>*); +void basePlaneTypeXZ(f32, f32, f32, f32, JGeometry::TVec3<f32>*); + #endif /* JPADRAWVISITOR_H */ diff --git a/include/JSystem/JParticle/JPAExtraShape.h b/include/JSystem/JParticle/JPAExtraShape.h index 093a97c7..31d553ba 100644 --- a/include/JSystem/JParticle/JPAExtraShape.h +++ b/include/JSystem/JParticle/JPAExtraShape.h @@ -52,8 +52,8 @@ public: virtual f32 getIncreaseRateY() = 0; virtual f32 getDecreaseRateX() = 0; virtual f32 getDecreaseRateY() = 0; - virtual u32 getPivotX() = 0; - virtual u32 getPivotY() = 0; + virtual u8 getPivotX() = 0; + virtual u8 getPivotY() = 0; virtual f32 getRandomScale() = 0; virtual BOOL isEnableAlpha() = 0; virtual BOOL isEnableSinWave() = 0; @@ -98,8 +98,8 @@ public: virtual f32 getIncreaseRateY() { return mIncreaseRateY; } virtual f32 getDecreaseRateX() { return mDecreaseRateX; } virtual f32 getDecreaseRateY() { return mDecreaseRateY; } - virtual u32 getPivotX() { return (mpData->mFlag >> 14) & 0x03; } - virtual u32 getPivotY() { return (mpData->mFlag >> 16) & 0x03; } + virtual u8 getPivotX() { return (mpData->mFlag >> 14) & 0x03; } + virtual u8 getPivotY() { return (mpData->mFlag >> 16) & 0x03; } virtual f32 getRandomScale() { return mpData->mRandomScale; } virtual BOOL isEnableAlpha() { return (mpData->mFlag & 0x01); } virtual BOOL isEnableSinWave() { return (mpData->mFlag & 0x02); } diff --git a/include/JSystem/JParticle/JPAResourceManager.h b/include/JSystem/JParticle/JPAResourceManager.h index 52091a00..74351251 100644 --- a/include/JSystem/JParticle/JPAResourceManager.h +++ b/include/JSystem/JParticle/JPAResourceManager.h @@ -18,6 +18,10 @@ public: pTexResArray[id]->load(texMap); } + inline void loadDefaultTexture(GXTexMapID texMap) { + defaultTex.load(texMap); + } + public: /* 0x00 */ JPADefaultTexture defaultTex; /* 0x24 */ u32 registNum; diff --git a/include/JSystem/JParticle/JPASweepShape.h b/include/JSystem/JParticle/JPASweepShape.h index 6d223a99..4b2de54e 100644 --- a/include/JSystem/JParticle/JPASweepShape.h +++ b/include/JSystem/JParticle/JPASweepShape.h @@ -30,9 +30,9 @@ class JPASweepShape { public: virtual ~JPASweepShape() {}; virtual u8 getType() = 0; - virtual u32 getDirType() = 0; - virtual u32 getRotType() = 0; - virtual u32 getBasePlaneType() = 0; + virtual u8 getDirType() = 0; + virtual u8 getRotType() = 0; + virtual u8 getBasePlaneType() = 0; virtual s16 getLife() = 0; virtual s16 getRate() = 0; virtual f32 getTiming() = 0; @@ -69,9 +69,9 @@ public: JPASweepShapeArc(const u8*); virtual ~JPASweepShapeArc() {}; virtual u8 getType() { return (mpData->mFlag >> 0) & 0x0F; } - virtual u32 getDirType() { return (mpData->mFlag >> 4) & 0x07; } - virtual u32 getRotType() { return (mpData->mFlag >> 7) & 0x07; } - virtual u32 getBasePlaneType() { return (mpData->mFlag >> 10) & 0x01; } + virtual u8 getDirType() { return (mpData->mFlag >> 4) & 0x07; } + virtual u8 getRotType() { return (mpData->mFlag >> 7) & 0x07; } + virtual u8 getBasePlaneType() { return (mpData->mFlag >> 10) & 0x01; } virtual s16 getLife() { return mpData->mLife; } virtual s16 getRate() { return mpData->mRate; } virtual f32 getTiming() { return mpData->mTiming; } diff --git a/include/JSystem/JParticle/JPATexture.h b/include/JSystem/JParticle/JPATexture.h index 16719258..0e0d2874 100644 --- a/include/JSystem/JParticle/JPATexture.h +++ b/include/JSystem/JParticle/JPATexture.h @@ -32,15 +32,22 @@ public: virtual JUTTexture* getJUTTexture() { return &mTexture; } public: - JUTTexture mTexture; - const JPATextureData* mpData; + /* 0x00 */ JUTTexture mTexture; + /* 0x40 */ const JPATextureData* mpData; }; struct JPADefaultTexture { +public: JPADefaultTexture() : imgBuf(NULL) {} void initialize(JKRHeap *); - u8 * imgBuf; - GXTexObj mTexObj; + + inline void load(GXTexMapID texMap) { + GXLoadTexObj(&mTexObj, texMap); + } + +public: + /* 0x00 */ u8 * imgBuf; + /* 0x04 */ GXTexObj mTexObj; }; #endif /* JPATEXTURE_H */ |
