summaryrefslogtreecommitdiff
path: root/include/JSystem/JParticle
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2023-12-19 20:50:36 -0800
committerJasper St. Pierre <jstpierre@mecheye.net>2023-12-19 20:50:36 -0800
commit3b2fcca7d42e2f3f5f0b783bbda446c377055dbf (patch)
treea8d3e6fa39d5f61a2d2556bb2b180ebb265a7cfe /include/JSystem/JParticle
parent5a7da09265c99740a5f1a0b87f783d8a79ad9168 (diff)
JPADraw more work
Diffstat (limited to 'include/JSystem/JParticle')
-rw-r--r--include/JSystem/JParticle/JPADraw.h14
-rw-r--r--include/JSystem/JParticle/JPADrawVisitor.h16
-rw-r--r--include/JSystem/JParticle/JPAExtraShape.h8
-rw-r--r--include/JSystem/JParticle/JPAResourceManager.h4
-rw-r--r--include/JSystem/JParticle/JPASweepShape.h12
-rw-r--r--include/JSystem/JParticle/JPATexture.h15
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 */