@@ -16,7 +16,25 @@ extern TMarioParticleManager* gpMarioParticleManager;
1616class TMarioParticleManager : public JDrama ::TViewObj {
1717public:
1818 enum {
19- INFO_FLAG_UNK4 = 0x4 ,
19+ EFFECT_ONETIME_NORMAL = 0 ,
20+ EFFECT_LOOP_NORMAL = 1 ,
21+ EFFECT_ONETIME_INDIRECT = 2 ,
22+ EFFECT_LOOP_INDIRECT = 3 ,
23+ };
24+
25+ enum {
26+ ONETIME_NORMAL_FIRST = 0 ,
27+ ONETIME_NORMAL_COUNT = 253 ,
28+ LOOP_NORMAL_FIRST = 253 ,
29+ LOOP_NORMAL_COUNT = 214 ,
30+ ONETIME_INDIRECT_FIRST = 467 ,
31+ ONETIME_INDIRECT_COUNT = 19 ,
32+ LOOP_INDIRECT_FIRST = 486 ,
33+ LOOP_INDIRECT_COUNT = 19 ,
34+ };
35+
36+ enum {
37+ INFO_FLAG_KEEP_ALIVE = 0x4 ,
2038 INFO_FLAG_BIND_TO_POS = 0x8 ,
2139 INFO_FLAG_BIND_TO_RT_MTX = 0x10 ,
2240 INFO_FLAG_BIND_TO_SRT_MTX = 0x20 ,
@@ -29,8 +47,11 @@ class TMarioParticleManager : public JDrama::TViewObj {
2947 void onFlag (u16 flag) { mFlags |= flag; }
3048 void offFlag (u16 flag) { mFlags &= ~flag; }
3149
32- /* 0x0 */ const void * unk0;
33- /* 0x4 */ const void * unk4;
50+ /* 0x0 */ const void * mIdentity ;
51+ /* 0x4 */ union {
52+ const JGeometry::TVec3<f32 >* mBoundPos ;
53+ MtxPtr mBoundMtx ;
54+ };
3455 /* 0x8 */ u16 mPrevFrameFlags ;
3556 /* 0xA */ u16 mFlags ;
3657 /* 0xC */ JPABaseEmitter* mEmitter ;
@@ -39,36 +60,41 @@ class TMarioParticleManager : public JDrama::TViewObj {
3960 virtual void perform (u32 cue, JDrama::TGraphics* graphics);
4061
4162 TMarioParticleManager (const char * = " MarioParticleManager" );
42- void createEffectInfoAry (int );
43-
44- // TODO: figure out what the u8 parameters her mean conceptually
45-
46- JPABaseEmitter* emit (s32, const JGeometry::TVec3<f32 >*, u8 , const void *);
47- JPABaseEmitter* emitWithRotate (s32, const JGeometry::TVec3<f32 >*, s16, s16,
48- s16, u8 , const void *);
49- JPABaseEmitter* emitAndBindToPosPtr (s32, const JGeometry::TVec3<f32 >*, u8 ,
50- const void *);
51- JPABaseEmitter* emitAndBindToMtxPtr (s32, MtxPtr, u8 , const void *);
52- JPABaseEmitter* emitAndBindToSRTMtxPtr (s32, MtxPtr, u8 , const void *);
53- JPABaseEmitter* emitAndBindToMtx (s32, MtxPtr, u8 , const void *);
54-
55- JPABaseEmitter*
56- emitParticleCallBack (s32, const JGeometry::TVec3<f32 >*, u8 ,
57- JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>*,
58- const void *);
59- void emitTry (s32, TMarioParticleManager::TInfo*, u8 );
60- int getAvailableIdx (s32, u8 , const void *);
63+ void createEffectInfoAry (int max_simultaneous_loop_emitters);
64+
65+ JPABaseEmitter* emit (s32 id, const JGeometry::TVec3<f32 >* pos,
66+ u8 effect_type, const void * identity);
67+ JPABaseEmitter* emitWithRotate (s32 id, const JGeometry::TVec3<f32 >* pos,
68+ s16 rot_x, s16 rot_y, s16 rot_z,
69+ u8 effect_type, const void * identity);
70+ JPABaseEmitter* emitAndBindToPosPtr (s32 id,
71+ const JGeometry::TVec3<f32 >* pos,
72+ u8 effect_type, const void * identity);
73+ JPABaseEmitter* emitAndBindToMtxPtr (s32 id, MtxPtr mtx, u8 effect_type,
74+ const void * identity);
75+ JPABaseEmitter* emitAndBindToSRTMtxPtr (s32 id, MtxPtr mtx, u8 effect_type,
76+ const void * identity);
77+ JPABaseEmitter* emitAndBindToMtx (s32 id, MtxPtr mtx, u8 effect_type,
78+ const void * identity);
79+
80+ JPABaseEmitter* emitParticleCallBack (
81+ s32 id, const JGeometry::TVec3<f32 >* pos, u8 effect_type,
82+ JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* callback,
83+ const void * identity);
84+ void emitTry (s32 id, TMarioParticleManager::TInfo* info, u8 effect_type);
85+ int getAvailableIdx (s32 table_idx, u8 effect_type, const void * identity);
6186
6287public:
63- /* 0x10 */ TInfo* unk10[ 214 ];
64- /* 0x368 */ TInfo* unk368[ 19 ];
65- /* 0x3B4 */ int unk3B4 ;
66- /* 0x3B8 */ JPAEmitterManager* unk3B8 ;
88+ /* 0x10 */ TInfo* mLoopNormalInfo [ LOOP_NORMAL_COUNT ];
89+ /* 0x368 */ TInfo* mLoopIndirectInfo [ LOOP_INDIRECT_COUNT ];
90+ /* 0x3B4 */ int mMaxSimultaneousLoopEmitters ;
91+ /* 0x3B8 */ JPAEmitterManager* mEmitterManager ;
6792};
6893
6994class TEmitterViewObj : public JDrama ::TViewObj {
7095public:
71- TEmitterViewObj (JPAEmitterManager*, const char * = " <EmitterViewObj>" );
96+ TEmitterViewObj (JPAEmitterManager* emitter_manager,
97+ const char * name = " <EmitterViewObj>" );
7298 virtual void perform (u32 cue, JDrama::TGraphics* graphics);
7399
74100protected:
0 commit comments