Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
JPAFieldBlock.h
Go to the documentation of this file.
1#ifndef JPAFIELDBLOCK_H
2#define JPAFIELDBLOCK_H
3
4#include "JSystem/JGeometry.h"
5#include <dolphin/types.h>
6
7class JKRHeap;
10class JPAFieldBlock;
11
23
30
37
46
56
67
73
79
90
101
102// unknown name
104public:
105 /* 0x00 */ u8 mMagic[4];
106 /* 0x04 */ u32 mSize;
107 /* 0x08 */ u32 mFlags;
110 /* 0x24 */ f32 mMag;
111 /* 0x28 */ f32 mMagRndm;
112 /* 0x2C */ f32 mVal1;
113 /* 0x30 */ f32 mFadeInTime;
114 /* 0x34 */ f32 mFadeOutTime;
115 /* 0x38 */ f32 mEnTime;
116 /* 0x3C */ f32 mDisTime;
117 /* 0x40 */ u8 mCycle;
118};
119
121public:
122 JPAFieldBlock(u8 const*, JKRHeap*);
123 void init(JKRHeap*);
124
125 u32 getType() const { return mpData->mFlags & 0xF; }
126 u32 getAddType() const { return (mpData->mFlags >> 8) & 3; }
127 u32 getSttFlag() const { return mpData->mFlags >> 16; }
129 f32 getMagRndm() const { return mpData->mMagRndm; }
130 f32 getVal1() const { return mpData->mVal1; }
131 f32 getFadeInTime() const { return mpData->mFadeInTime; }
133 f32 getEnTime() const { return mpData->mEnTime; }
134 f32 getDisTime() const { return mpData->mDisTime; }
135 u8 getCycle() const { return mpData->mCycle; }
136 f32 getFadeInRate() const { return mFadeInRate; }
137 f32 getFadeOutRate() const { return mFadeOutRate; }
138 const JGeometry::TVec3<f32>& getPos() const { return mPos; }
139 const JGeometry::TVec3<f32>& getDir() const { return mDir; }
140 f32 getMag() const { return mMag; }
141 void getPosOrig(JGeometry::TVec3<f32>* pos) const { pos->set(mpData->mPos); }
142 void getDirOrig(JGeometry::TVec3<f32>* dir) const { dir->set(mpData->mDir); }
143 f32 getMagOrig() const { return mpData->mMag; }
144 void initOpParam() {
147 mMag = getMagOrig();
148 }
149 void prepare(JPAEmitterWorkData* work) { pFld->prepare(work, this); }
150 void calc(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { pFld->calc(work, this, ptcl); }
151
152private:
153 /* 0x00 */ const JPAFieldBlockData* mpData;
154 /* 0x04 */ JPAFieldBase* pFld;
155 /* 0x08 */ f32 mFadeInRate;
156 /* 0x0C */ f32 mFadeOutRate;
159 /* 0x28 */ f32 mMag;
160
161 enum Type {
162 /* 0x0 */ FIELD_GRAVITY,
163 /* 0x1 */ FIELD_AIR,
164 /* 0x2 */ FIELD_MAGNET,
165 /* 0x3 */ FIELD_NEWTON,
166 /* 0x4 */ FIELD_VORTEX,
167 /* 0x5 */ FIELD_RANDOM,
168 /* 0x6 */ FIELD_DRAG,
170 /* 0x8 */ FIELD_SPIN,
171 };
172};
173
174#endif /* JPAFIELDBLOCK_H */
static BOOL flag
Definition DEMOAVX.c:20
Definition JKRHeap.h:23
Definition JPAParticle.h:20
Definition JPAFieldBlock.h:31
void prepare(JPAEmitterWorkData *, JPAFieldBlock *)
Definition JPAFieldBlock.cpp:54
~JPAFieldAir()
Definition JPAFieldBlock.h:35
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:65
Definition JPAFieldBlock.h:12
void calcAffect(JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:8
virtual void prepare(JPAEmitterWorkData *, JPAFieldBlock *)
Definition JPAFieldBlock.h:18
virtual void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)=0
virtual ~JPAFieldBase()
Definition JPAFieldBlock.h:17
f32 calcFadeAffect(JPAFieldBlock *, f32) const
Definition JPAFieldBlock.cpp:27
JGeometry::TVec3< f32 > mAccel
Definition JPAFieldBlock.h:21
Definition JPAFieldBlock.h:103
f32 mEnTime
Definition JPAFieldBlock.h:115
JGeometry::TVec3< f32 > mPos
Definition JPAFieldBlock.h:108
JGeometry::TVec3< f32 > mDir
Definition JPAFieldBlock.h:109
f32 mMagRndm
Definition JPAFieldBlock.h:111
u8 mMagic[4]
Definition JPAFieldBlock.h:105
u8 mCycle
Definition JPAFieldBlock.h:117
f32 mDisTime
Definition JPAFieldBlock.h:116
f32 mFadeOutTime
Definition JPAFieldBlock.h:114
f32 mVal1
Definition JPAFieldBlock.h:112
u32 mSize
Definition JPAFieldBlock.h:106
u32 mFlags
Definition JPAFieldBlock.h:107
f32 mMag
Definition JPAFieldBlock.h:110
f32 mFadeInTime
Definition JPAFieldBlock.h:113
Definition JPAFieldBlock.h:120
f32 getFadeOutRate() const
Definition JPAFieldBlock.h:137
f32 getMagRndm() const
Definition JPAFieldBlock.h:129
f32 mFadeOutRate
Definition JPAFieldBlock.h:156
f32 mFadeInRate
Definition JPAFieldBlock.h:155
void prepare(JPAEmitterWorkData *work)
Definition JPAFieldBlock.h:149
JPAFieldBlock(u8 const *, JKRHeap *)
Definition JPAFieldBlock.cpp:201
f32 getDisTime() const
Definition JPAFieldBlock.h:134
f32 getVal1() const
Definition JPAFieldBlock.h:130
const JGeometry::TVec3< f32 > & getPos() const
Definition JPAFieldBlock.h:138
u32 checkStatus(u16 flag)
Definition JPAFieldBlock.h:128
void getPosOrig(JGeometry::TVec3< f32 > *pos) const
Definition JPAFieldBlock.h:141
f32 getFadeInTime() const
Definition JPAFieldBlock.h:131
const JGeometry::TVec3< f32 > & getDir() const
Definition JPAFieldBlock.h:139
f32 mMag
Definition JPAFieldBlock.h:159
f32 getMagOrig() const
Definition JPAFieldBlock.h:143
const JPAFieldBlockData * mpData
Definition JPAFieldBlock.h:153
f32 getFadeInRate() const
Definition JPAFieldBlock.h:136
f32 getMag() const
Definition JPAFieldBlock.h:140
void initOpParam()
Definition JPAFieldBlock.h:144
u32 getAddType() const
Definition JPAFieldBlock.h:126
JGeometry::TVec3< f32 > mPos
Definition JPAFieldBlock.h:157
f32 getEnTime() const
Definition JPAFieldBlock.h:133
void calc(JPAEmitterWorkData *work, JPABaseParticle *ptcl)
Definition JPAFieldBlock.h:150
u8 getCycle() const
Definition JPAFieldBlock.h:135
void getDirOrig(JGeometry::TVec3< f32 > *dir) const
Definition JPAFieldBlock.h:142
Type
Definition JPAFieldBlock.h:161
@ FIELD_DRAG
Definition JPAFieldBlock.h:168
@ FIELD_VORTEX
Definition JPAFieldBlock.h:166
@ FIELD_MAGNET
Definition JPAFieldBlock.h:164
@ FIELD_AIR
Definition JPAFieldBlock.h:163
@ FIELD_RANDOM
Definition JPAFieldBlock.h:167
@ FIELD_NEWTON
Definition JPAFieldBlock.h:165
@ FIELD_GRAVITY
Definition JPAFieldBlock.h:162
@ FIELD_CONVECTION
Definition JPAFieldBlock.h:169
@ FIELD_SPIN
Definition JPAFieldBlock.h:170
JGeometry::TVec3< f32 > mDir
Definition JPAFieldBlock.h:158
u32 getSttFlag() const
Definition JPAFieldBlock.h:127
u32 getType() const
Definition JPAFieldBlock.h:125
JPAFieldBase * pFld
Definition JPAFieldBlock.h:154
f32 getFadeOutTime() const
Definition JPAFieldBlock.h:132
Definition JPAFieldBlock.h:80
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:139
void prepare(JPAEmitterWorkData *, JPAFieldBlock *)
Definition JPAFieldBlock.cpp:127
~JPAFieldConvection()
Definition JPAFieldBlock.h:84
JGeometry::TVec3< f32 > field_0x10
Definition JPAFieldBlock.h:86
JGeometry::TVec3< f32 > field_0x28
Definition JPAFieldBlock.h:88
JGeometry::TVec3< f32 > field_0x1c
Definition JPAFieldBlock.h:87
Definition JPAFieldBlock.h:74
~JPAFieldDrag()
Definition JPAFieldBlock.h:77
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:162
Definition JPAFieldBlock.h:24
void prepare(JPAEmitterWorkData *, JPAFieldBlock *)
Definition JPAFieldBlock.cpp:41
~JPAFieldGravity()
Definition JPAFieldBlock.h:28
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:50
Definition JPAFieldBlock.h:38
JGeometry::TVec3< f32 > mDir
Definition JPAFieldBlock.h:44
~JPAFieldMagnet()
Definition JPAFieldBlock.h:42
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:80
void prepare(JPAEmitterWorkData *, JPAFieldBlock *)
Definition JPAFieldBlock.cpp:75
Definition JPAFieldBlock.h:47
JGeometry::TVec3< f32 > mDir
Definition JPAFieldBlock.h:53
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:92
~JPAFieldNewton()
Definition JPAFieldBlock.h:51
f32 mCutoff
Definition JPAFieldBlock.h:54
void prepare(JPAEmitterWorkData *, JPAFieldBlock *)
Definition JPAFieldBlock.cpp:86
Definition JPAFieldBlock.h:68
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:153
~JPAFieldRandom()
Definition JPAFieldBlock.h:71
Definition JPAFieldBlock.h:91
void prepare(JPAEmitterWorkData *, JPAFieldBlock *)
Definition JPAFieldBlock.cpp:171
JGeometry::TVec3< f32 > field_0x1c
Definition JPAFieldBlock.h:98
JGeometry::TVec3< f32 > field_0x10
Definition JPAFieldBlock.h:97
JGeometry::TVec3< f32 > field_0x28
Definition JPAFieldBlock.h:99
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:182
~JPAFieldSpin()
Definition JPAFieldBlock.h:95
Definition JPAFieldBlock.h:57
void prepare(JPAEmitterWorkData *, JPAFieldBlock *)
Definition JPAFieldBlock.cpp:103
f32 field_0x1c
Definition JPAFieldBlock.h:64
JGeometry::TVec3< f32 > field_0x10
Definition JPAFieldBlock.h:63
~JPAFieldVortex()
Definition JPAFieldBlock.h:61
f32 field_0x20
Definition JPAFieldBlock.h:65
void calc(JPAEmitterWorkData *, JPAFieldBlock *, JPABaseParticle *)
Definition JPAFieldBlock.cpp:110
static initFunc init[]
Definition d_menu_collect.cpp:39
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
Definition JGeometry.h:75
void set(const TVec3 &other)
Definition JGeometry.h:80
Definition JPAEmitter.h:22