Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
JPAEmitter.h
Go to the documentation of this file.
1#ifndef JPAEMITTER_H
2#define JPAEMITTER_H
3
4#include <dolphin/gx.h>
5#include <stdint.h>
12
14class JPABaseEmitter;
17
28
30
32 /* 0x04 */ JPAResource* mpRes;
34 /* 0x0C */ JPARandom mRndm;
36 /* 0x34 */ f32 mVolumeSize;
37 /* 0x38 */ f32 mVolumeMinRad;
38 /* 0x3C */ f32 mVolumeSweep;
39 /* 0x40 */ s32 mEmitCount;
40 /* 0x44 */ s32 mVolumeEmitIdx;
41 /* 0x48 */ Mtx mDirectionMtx;
42 /* 0x78 */ Mtx mRotationMtx;
43 /* 0xA8 */ Mtx mGlobalRot;
44 /* 0xD8 */ Mtx mGlobalSR;
52 /* 0x154 */ Mtx mYBBCamMtx;
53 /* 0x184 */ Mtx mPosCamMtx;
54 /* 0x1B4 */ Mtx mPrjMtx;
57 /* 0x1EC */ s32 mVolumeAngleNum;
58 /* 0x1F0 */ s32 mVolumeAngleMax;
59 /* 0x1F4 */ s32 mVolumeX;
60 /* 0x1F8 */ s32 mDivNumber;
61 /* 0x1FC */ f32 mScaleAnm;
62 /* 0x200 */ u32 mDirType;
63 /* 0x204 */ u32 mRotType;
64 /* 0x208 */ u32 mPlaneType;
65 /* 0x20C */ u32 mDLType;
66 /* 0x210 */ u32 mPrjType;
67 /* 0x214 */ s16 mClrKeyFrame;
68 /* 0x216 */ u8 mDrawCount;
69};
70
76public:
77 virtual ~JPAEmitterCallBack() = 0;
78 virtual void execute(JPABaseEmitter*) {}
79 virtual void executeAfter(JPABaseEmitter*) {}
80 virtual void draw(JPABaseEmitter*) {}
81 virtual void drawAfter(JPABaseEmitter*) {}
82};
83
84enum {
93};
94
100public:
102 JPABaseEmitter() : mLink(this), mRndm(0) {}
105 bool processTermination();
107 void deleteAllParticle();
111 u8 getDrawCount() const;
113
116 void clearStatus(u32 status) { mStatus &= ~status; }
117 u32 checkStatus(u32 status) const { return (mStatus & status); }
118 u32 checkFlag(u32 flag) const { return pRes->getDyn()->getFlag() & flag; }
120 u8 getGroupID() const { return mGroupID; }
121 u8 getDrawTimes() const { return mDrawTimes; }
122 f32 getRate() const { return mRate; }
123 void setRate(f32 rate) { mRate = rate; }
124 void setDirectionalSpeed(f32 i_speed) { mDirSpeed = i_speed; }
125 void setRandomDirectionSpeed(f32 i_speed) { mRndmDirSpeed = i_speed; }
137 JPAGetXYZRotateMtx(rot.x, rot.y, rot.z, mGlobalRot);
138 }
141 void getGlobalDynamicsScale(JGeometry::TVec3<f32>* i_scale) const { i_scale->set(mGlobalScl); }
142 void setGlobalAlpha(u8 alpha) { mGlobalPrmClr.a = alpha; }
143 u8 getGlobalAlpha() const { return mGlobalPrmClr.a; }
144 void getGlobalPrmColor(GXColor& color) { color = mGlobalPrmClr; }
145 void getGlobalPrmColor(_GXColor* color) const { *color = mGlobalPrmClr; }
149 void setLifeTime(s16 lifetime) { mLifeTime = lifetime; }
151 void setAwayFromAxisSpeed(f32 i_speed) { mAwayFromAxisSpeed = i_speed; }
152 void setSpread(f32 i_spread) { mSpread = i_spread; }
153 void setLocalTranslation(const JGeometry::TVec3<f32>& i_trans) { mLocalTrs.set(i_trans); }
155 mLocalRot.set(i_rot.x * (360.0f / 0xffff), i_rot.y * (360.0f / 0xffff),
156 i_rot.z * (360.0f / 0xffff));
157 }
158 void setRateStep(u8 i_step) { mRateStep = i_step; }
159
161 mGlobalPScl.y = height;
162 }
164 mGlobalPScl.set((f32)scale.x, (f32)scale.y);
165 }
166 void setGlobalParticleScale(f32 scaleX, f32 scaleY) {
167 mGlobalPScl.set(scaleX, scaleY);
168 }
170 scale.set(mGlobalPScl.x, mGlobalPScl.y, 1.0f);
171 }
173 scale->set(mGlobalPScl.x, mGlobalPScl.y, 1.0f);
174 }
176 mGlobalScl.set(scale);
177 mGlobalPScl.set(scale.x ,scale.y);
178 }
179 void setDirection(const JGeometry::TVec3<f32>& direction) {
180 mLocalDir.set(direction);
181 }
182
184 mLocalScl.set(scale);
185 }
186
187 f32 get_r_f() { return mRndm.get_rndm_f(); }
191
199 mMaxFrame = 1;
200 }
201
207
208 uintptr_t getUserWork() const { return mpUserWork; }
209 void setUserWork(uintptr_t userWork) { mpUserWork = userWork; }
216 void setDrawTimes(u8 drawTimes) { mDrawTimes = drawTimes; }
220 u32 getAge() const { return mTick; }
221
222 void setVolumeMiniRadius(f32 param_1) {
223 mVolumeMinRad = param_1;
224 }
225
226 void setMaxFrame(s32 maxFrame) {
227 mMaxFrame = maxFrame;
228 }
229
230public:
234 /* 0x24 */ s32 mMaxFrame;
235 /* 0x28 */ f32 mRate;
236 /* 0x2C */ f32 mVolumeSweep;
237 /* 0x30 */ f32 mVolumeMinRad;
240 /* 0x3C */ f32 mDirSpeed;
241 /* 0x40 */ f32 mSpread;
242 /* 0x44 */ f32 mRndmDirSpeed;
243 /* 0x48 */ f32 mAirResist;
245 /* 0x52 */ s16 mLifeTime;
246 /* 0x54 */ u16 mVolumeSize;
247 /* 0x56 */ u8 mRateStep;
249 /* 0x68 */ Mtx mGlobalRot;
255 /* 0xC0 */ s32 mpUserWork;
256 /* 0xC4 */ JPARandom mRndm;
261 /* 0xE8 */ JPAResource* pRes;
264 /* 0xF4 */ u32 mStatus;
265 /* 0xF8 */ f32 mEmitCount;
266 /* 0xFC */ f32 mScaleOut;
267 /* 0x100 */ u32 mTick;
268 /* 0x104 */ s16 mWaitTime;
269 /* 0x106 */ s16 mRateStepTimer;
270 /* 0x108 */ GXColor mPrmClr;
271 /* 0x10C */ GXColor mEnvClr;
272 /* 0x110 */ u8 mDrawTimes;
273 /* 0x111 */ u8 mTexAnmIdx;
274 /* 0x112 */ u8 mGroupID;
275 /* 0x113 */ u8 mResMgrID;
276};
277
278enum {
280};
281
282#endif /* JPAEMITTER_H */
static BOOL flag
Definition DEMOAVX.c:20
@ JPAPtclStts_Invisible
Definition JPAEmitter.h:279
@ JPAEmtrStts_FirstEmit
Definition JPAEmitter.h:89
@ JPAEmtrStts_Immortal
Definition JPAEmitter.h:91
@ JPAEmtrStts_RateStepEmit
Definition JPAEmitter.h:90
@ JPAEmtrStts_StopDraw
Definition JPAEmitter.h:87
@ JPAEmtrStts_EnableDeleteEmitter
Definition JPAEmitter.h:88
@ JPAEmtrStts_StopEmit
Definition JPAEmitter.h:85
@ JPAEmtrStts_StopCalc
Definition JPAEmitter.h:86
@ JPAEmtrStts_Delete
Definition JPAEmitter.h:92
void JPAGetXYZRotateMtx(s16 x, s16 y, s16 z, Mtx mtx)
Definition JPAMath.cpp:56
void JPASetRMtxTVecfromMtx(f32 const (*param_0)[4], f32(*param_1)[4], JGeometry::TVec3< f32 > *param_2)
Definition JPAMath.cpp:79
void JPASetRMtxSTVecfromMtx(f32 const (*param_0)[4], f32(*param_1)[4], JGeometry::TVec3< f32 > *param_2, JGeometry::TVec3< f32 > *param_3)
Definition JPAMath.cpp:85
Definition JPAEmitter.h:99
void setLocalRotation(const JGeometry::TVec3< s16 > &i_rot)
Definition JPAEmitter.h:154
JPAEmitterCallBack * mpEmtrCallBack
Definition JPAEmitter.h:262
f32 mSpread
Definition JPAEmitter.h:241
void setDirection(const JGeometry::TVec3< f32 > &direction)
Definition JPAEmitter.h:179
u8 getGlobalAlpha() const
Definition JPAEmitter.h:143
f32 getRate() const
Definition JPAEmitter.h:122
void setStatus(u32 status)
Definition JPAEmitter.h:115
u32 mTick
Definition JPAEmitter.h:267
u8 mGroupID
Definition JPAEmitter.h:274
JGeometry::TVec3< f32 > mGlobalTrs
Definition JPAEmitter.h:251
s32 mpUserWork
Definition JPAEmitter.h:255
JGeometry::TVec3< f32 > mLocalScl
Definition JPAEmitter.h:231
u8 getDrawTimes() const
Definition JPAEmitter.h:121
void setLocalTranslation(const JGeometry::TVec3< f32 > &i_trans)
Definition JPAEmitter.h:153
JPABaseParticle * createParticle()
Definition JPAEmitter.cpp:53
void deleteAllParticle()
Definition JPAEmitter.cpp:80
GXColor mPrmClr
Definition JPAEmitter.h:270
void clearStatus(u32 status)
Definition JPAEmitter.h:116
void setGlobalEnvColor(u8 r, u8 g, u8 b)
Definition JPAEmitter.h:147
f32 mAwayFromCenterSpeed
Definition JPAEmitter.h:238
void getGlobalParticleScale(JGeometry::TVec3< f32 > &scale) const
Definition JPAEmitter.h:169
u8 getResourceManagerID() const
Definition JPAEmitter.h:119
void setUserWork(uintptr_t userWork)
Definition JPAEmitter.h:209
JPAResource * pRes
Definition JPAEmitter.h:261
void stopCreateParticle()
Definition JPAEmitter.h:192
void setMaxFrame(s32 maxFrame)
Definition JPAEmitter.h:226
JPARandom mRndm
Definition JPAEmitter.h:256
u32 checkStatus(u32 status) const
Definition JPAEmitter.h:117
void stopDrawParticle()
Definition JPAEmitter.h:205
u8 getGroupID() const
Definition JPAEmitter.h:120
void setGlobalScale(const JGeometry::TVec3< f32 > &scale)
Definition JPAEmitter.h:175
void setGlobalRotation(const JGeometry::TVec3< s16 > &rot)
Definition JPAEmitter.h:136
void getGlobalPrmColor(_GXColor *color) const
Definition JPAEmitter.h:145
s16 get_r_ss()
Definition JPAEmitter.h:190
f32 mAirResist
Definition JPAEmitter.h:243
bool isEnableDeleteEmitter() const
Definition JPAEmitter.h:213
s32 mMaxFrame
Definition JPAEmitter.h:234
u8 mRateStep
Definition JPAEmitter.h:247
void getGlobalParticleScale(JGeometry::TVec3< f32 > *scale) const
Definition JPAEmitter.h:172
void quitImmortalEmitter()
Definition JPAEmitter.h:202
~JPABaseEmitter()
Definition JPAEmitter.h:101
void setParticleCallBackPtr(JPAParticleCallBack *cb)
Definition JPAEmitter.h:217
bool processTillStartFrame()
Definition JPAEmitter.cpp:87
void playDrawParticle()
Definition JPAEmitter.h:206
JGeometry::TVec2< f32 > mGlobalPScl
Definition JPAEmitter.h:252
JPABaseParticle * createChild(JPABaseParticle *)
Definition JPAEmitter.cpp:67
void stopCalcEmitter()
Definition JPAEmitter.h:203
GXColor mGlobalEnvClr
Definition JPAEmitter.h:254
void setEmitterCallBackPtr(JPAEmitterCallBack *ptr)
Definition JPAEmitter.h:126
JPAList< JPABaseParticle > * mpPtclPool
Definition JPAEmitter.h:259
JGeometry::TVec3< f32 > mGlobalScl
Definition JPAEmitter.h:250
void setGlobalParticleScale(f32 scaleX, f32 scaleY)
Definition JPAEmitter.h:166
f32 mScaleOut
Definition JPAEmitter.h:266
void setAwayFromCenterSpeed(f32 i_speed)
Definition JPAEmitter.h:150
void setRandomDirectionSpeed(f32 i_speed)
Definition JPAEmitter.h:125
u8 mTexAnmIdx
Definition JPAEmitter.h:273
JSULink< JPABaseEmitter > mLink
Definition JPAEmitter.h:248
void getGlobalTranslation(JGeometry::TVec3< f32 > *out) const
Definition JPAEmitter.h:139
f32 get_r_zh()
Definition JPAEmitter.h:189
void setGlobalPrmColor(u8 r, u8 g, u8 b)
Definition JPAEmitter.h:146
JGeometry::TVec3< f32 > mLocalTrs
Definition JPAEmitter.h:232
f32 mVolumeSweep
Definition JPAEmitter.h:236
f32 mRndmDirSpeed
Definition JPAEmitter.h:242
void getGlobalPrmColor(GXColor &color)
Definition JPAEmitter.h:144
void becomeImmortalEmitter()
Definition JPAEmitter.h:194
JPAList< JPABaseParticle > mAlivePtclBase
Definition JPAEmitter.h:257
void playCalcEmitter()
Definition JPAEmitter.h:204
u8 getDrawCount() const
Definition JPAEmitter.cpp:134
void setVolumeMiniRadius(f32 param_1)
Definition JPAEmitter.h:222
u32 checkFlag(u32 flag) const
Definition JPAEmitter.h:118
u8 mDrawTimes
Definition JPAEmitter.h:272
void becomeContinuousParticle()
Definition JPAEmitter.h:195
f32 mRate
Definition JPAEmitter.h:235
JPAParticleCallBack * mpPtclCallBack
Definition JPAEmitter.h:263
f32 mDirSpeed
Definition JPAEmitter.h:240
JGeometry::TVec3< f32 > mLocalDir
Definition JPAEmitter.h:233
f32 mAwayFromAxisSpeed
Definition JPAEmitter.h:239
void setGlobalParticleHeightScale(f32 height)
Definition JPAEmitter.h:160
GXColor mGlobalPrmClr
Definition JPAEmitter.h:253
JGeometry::TVec3< s16 > mLocalRot
Definition JPAEmitter.h:244
void getLocalTranslation(JGeometry::TVec3< f32 > *vec) const
Definition JPAEmitter.h:135
GXColor mEnvClr
Definition JPAEmitter.h:271
JPAList< JPABaseParticle > mAlivePtclChld
Definition JPAEmitter.h:258
void getLocalTranslation(JGeometry::TVec3< f32 > &vec)
Definition JPAEmitter.h:134
void getGlobalDynamicsScale(JGeometry::TVec3< f32 > *i_scale) const
Definition JPAEmitter.h:141
void setGlobalAlpha(u8 alpha)
Definition JPAEmitter.h:142
JPAEmitterManager * mpEmtrMgr
Definition JPAEmitter.h:260
u32 getParticleNumber() const
Definition JPAEmitter.h:210
bool processTermination()
Definition JPAEmitter.cpp:98
void initStatus(u32 status)
Definition JPAEmitter.h:114
void setGlobalTranslation(const JGeometry::TVec3< f32 > &trs)
Definition JPAEmitter.h:133
u8 mResMgrID
Definition JPAEmitter.h:275
void setGlobalParticleScale(const JGeometry::TVec3< f32 > &scale)
Definition JPAEmitter.h:163
uintptr_t getUserWork() const
Definition JPAEmitter.h:208
void calcEmitterGlobalPosition(JGeometry::TVec3< f32 > *) const
Definition JPAEmitter.cpp:120
void setDirectionalSpeed(f32 i_speed)
Definition JPAEmitter.h:124
void setVolumeSize(u16 size)
Definition JPAEmitter.h:148
void setGlobalRTMatrix(const Mtx m)
Definition JPAEmitter.h:127
u16 mVolumeSize
Definition JPAEmitter.h:246
u32 mStatus
Definition JPAEmitter.h:264
void setRate(f32 rate)
Definition JPAEmitter.h:123
void setLifeTime(s16 lifetime)
Definition JPAEmitter.h:149
void becomeInvalidEmitter()
Definition JPAEmitter.h:197
void setSpread(f32 i_spread)
Definition JPAEmitter.h:152
s16 mRateStepTimer
Definition JPAEmitter.h:269
void playCreateParticle()
Definition JPAEmitter.h:193
void setDrawTimes(u8 drawTimes)
Definition JPAEmitter.h:216
f32 mVolumeMinRad
Definition JPAEmitter.h:237
JPAEmitterCallBack * getEmitterCallBackPtr() const
Definition JPAEmitter.h:219
s16 mWaitTime
Definition JPAEmitter.h:268
f32 get_r_f()
Definition JPAEmitter.h:187
void becomeDeleteEmitter()
Definition JPAEmitter.h:196
f32 mEmitCount
Definition JPAEmitter.h:265
void setRateStep(u8 i_step)
Definition JPAEmitter.h:158
Mtx mGlobalRot
Definition JPAEmitter.h:249
JPAParticleCallBack * getParticleCallBackPtr() const
Definition JPAEmitter.h:218
u32 getAge() const
Definition JPAEmitter.h:220
void setLocalScale(const JGeometry::TVec3< f32 > &scale)
Definition JPAEmitter.h:183
u32 getCurrentCreateNumber() const
Definition JPAEmitter.cpp:130
s16 mLifeTime
Definition JPAEmitter.h:245
f32 get_r_zp()
Definition JPAEmitter.h:188
void setGlobalDynamicsScale(const JGeometry::TVec3< f32 > &i_scale)
Definition JPAEmitter.h:140
void setAwayFromAxisSpeed(f32 i_speed)
Definition JPAEmitter.h:151
void setGlobalSRTMatrix(const Mtx m)
Definition JPAEmitter.h:128
void setGlobalTranslation(f32 x, f32 y, f32 z)
Definition JPAEmitter.h:132
JPABaseEmitter()
Definition JPAEmitter.h:102
bool loadTexture(u8, GXTexMapID)
Definition JPAEmitter.cpp:138
Definition JPAParticle.h:20
u32 getFlag() const
Definition JPADynamicsBlock.h:70
Definition JPAEmitter.h:75
virtual void drawAfter(JPABaseEmitter *)
Definition JPAEmitter.h:81
virtual void executeAfter(JPABaseEmitter *)
Definition JPAEmitter.h:79
virtual void execute(JPABaseEmitter *)
Definition JPAEmitter.h:78
virtual void draw(JPABaseEmitter *)
Definition JPAEmitter.h:80
virtual ~JPAEmitterCallBack()=0
Definition JPAEmitter.cpp:10
Definition JPAEmitterManager.h:23
Definition JPAParticle.h:82
Definition JPAResourceManager.h:14
Definition JPAResource.h:23
JPADynamicsBlock * getDyn() const
Definition JPAResource.h:44
static initFunc init[]
Definition d_menu_collect.cpp:39
enum _GXTexMapID GXTexMapID
f32 Mtx[3][4]
Definition mtx.h:25
unsigned int size
Definition __os.h:106
r
Definition e_acos.c:105
double x double x
Definition e_atan2.c:58
int m
Definition e_atan2.c:62
double x double y
Definition e_atan2.c:58
z
Definition e_log.c:139
static u32 status
Definition fstload.c:9
static void cb(s32 result, DVDCommandBlock *block)
Definition fstload.c:16
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
Definition JGeometry.h:415
void set(T v)
Definition JGeometry.h:422
T x
Definition JGeometry.h:483
T y
Definition JGeometry.h:484
void set(const TVec3< U > &other)
Definition JGeometry.h:199
void set(s16 x_, s16 y_, s16 z_)
Definition JGeometry.h:126
Definition JGeometry.h:75
T x
Definition JGeometry.h:76
void set(const TVec3 &other)
Definition JGeometry.h:80
T z
Definition JGeometry.h:78
T y
Definition JGeometry.h:77
Definition JPAEmitter.h:23
JGeometry::TVec3< f32 > mVelAxis
Definition JPAEmitter.h:26
JGeometry::TVec3< f32 > mVelOmni
Definition JPAEmitter.h:25
JGeometry::TVec3< f32 > mVolumePos
Definition JPAEmitter.h:24
Definition JPAEmitter.h:22
JGeometry::TVec2< f32 > mGlobalPtclScl
Definition JPAEmitter.h:50
JPAList< JPABaseParticle > * mpAlivePtcl
Definition JPAEmitter.h:55
s32 mDivNumber
Definition JPAEmitter.h:60
s32 mVolumeEmitIdx
Definition JPAEmitter.h:40
Mtx mGlobalSR
Definition JPAEmitter.h:44
JGeometry::TVec3< f32 > mPublicScale
Definition JPAEmitter.h:48
u32 mPrjType
Definition JPAEmitter.h:66
u32 mRotType
Definition JPAEmitter.h:63
JPANode< JPABaseParticle > * mpCurNode
Definition JPAEmitter.h:56
Mtx mGlobalRot
Definition JPAEmitter.h:43
JPAEmitterWorkData()
Definition JPAEmitter.h:29
f32 mVolumeMinRad
Definition JPAEmitter.h:37
JPABaseEmitter * mpEmtr
Definition JPAEmitter.h:31
JPARandom mRndm
Definition JPAEmitter.h:34
JGeometry::TVec3< f32 > mGlobalPos
Definition JPAEmitter.h:49
JGeometry::TVec3< f32 > mEmitterPos
Definition JPAEmitter.h:45
f32 mVolumeSize
Definition JPAEmitter.h:36
Mtx mPrjMtx
Definition JPAEmitter.h:54
Mtx mRotationMtx
Definition JPAEmitter.h:42
JGeometry::TVec2< f32 > mPivot
Definition JPAEmitter.h:51
f32 mScaleAnm
Definition JPAEmitter.h:61
s16 mClrKeyFrame
Definition JPAEmitter.h:67
f32 mVolumeSweep
Definition JPAEmitter.h:38
u32 mDLType
Definition JPAEmitter.h:65
u32 mDirType
Definition JPAEmitter.h:62
Mtx mDirectionMtx
Definition JPAEmitter.h:41
JPAResource * mpRes
Definition JPAEmitter.h:32
s32 mVolumeX
Definition JPAEmitter.h:59
Mtx mYBBCamMtx
Definition JPAEmitter.h:52
Mtx mPosCamMtx
Definition JPAEmitter.h:53
JPAResourceManager * mpResMgr
Definition JPAEmitter.h:33
JGeometry::TVec3< f32 > mGlobalScl
Definition JPAEmitter.h:46
s32 mVolumeAngleNum
Definition JPAEmitter.h:57
JGeometry::TVec3< f32 > mGlobalEmtrDir
Definition JPAEmitter.h:47
s32 mVolumeAngleMax
Definition JPAEmitter.h:58
u32 mPlaneType
Definition JPAEmitter.h:64
JPAVolumeCalcData mVolumeCalcData
Definition JPAEmitter.h:35
s32 mEmitCount
Definition JPAEmitter.h:39
u8 mDrawCount
Definition JPAEmitter.h:68
Definition JPAList.h:29
u32 getNum() const
Definition JPAList.h:40
Definition JPAList.h:11
Definition JPARandom.h:10
s16 get_rndm_ss()
Definition JPARandom.h:37
f32 get_rndm_f()
Definition JPARandom.h:19
f32 get_rndm_zh()
Definition JPARandom.h:33
f32 get_rndm_zp()
Definition JPARandom.h:28
f32 x
Definition mtx.h:14
f32 y
Definition mtx.h:14
Definition GXStruct.h:30
u8 g
Definition GXStruct.h:31
u8 b
Definition GXStruct.h:31
u8 a
Definition GXStruct.h:31
u8 r
Definition GXStruct.h:31