blob: 9930218770ac69359a4db112226cf97c895b0963 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#ifndef JPACHILDSHAPE_H
#define JPACHILDSHAPE_H
#include "common.h"
#include "rvl/GX.h"
class JPAEmitterWorkData;
class JPABaseParticle;
/**
* @ingroup jsystem-jparticle
*
*/
struct JPAChildShapeData {
// Common header.
/* 0x00 */ u8 mMagic[4];
/* 0x04 */ u32 mSize;
/* 0x08 */ u32 mFlags;
/* 0x0C */ f32 mPosRndm;
/* 0x10 */ f32 mBaseVel;
/* 0x14 */ f32 mBaseVelRndm;
/* 0x18 */ f32 mVelInfRate;
/* 0x1C */ f32 mGravity;
/* 0x20 */ f32 mScaleX;
/* 0x24 */ f32 mScaleY;
/* 0x28 */ f32 mInheritScale;
/* 0x2C */ f32 mInheritAlpha;
/* 0x30 */ f32 mInheritRGB;
/* 0x34 */ GXColor mPrmClr;
/* 0x38 */ GXColor mEnvClr;
/* 0x3C */ f32 mTiming;
/* 0x40 */ s16 mLife;
/* 0x42 */ s16 mRate;
/* 0x44 */ u8 mStep;
/* 0x45 */ u8 mTexIdx;
/* 0x46 */ s16 mRotSpeed;
};
/**
* @ingroup jsystem-jparticle
*
*/
class JPAChildShape {
public:
JPAChildShape(u8 const*);
f32 getPosRndm() const { return mpData->mPosRndm; }
f32 getBaseVel() const { return mpData->mBaseVel; }
f32 getBaseVelRndm() const { return mpData->mBaseVelRndm; }
f32 getVelInhRate() const { return mpData->mVelInfRate; }
f32 getGravity() const { return mpData->mGravity; }
f32 getScaleX() const { return mpData->mScaleX; }
f32 getScaleY() const { return mpData->mScaleY; }
f32 getScaleInhRate() const { return mpData->mInheritScale; }
f32 getAlphaInhRate() const { return mpData->mInheritAlpha; }
f32 getColorInhRate() const { return mpData->mInheritRGB; }
void getPrmClr(GXColor* dst) const { *dst = mpData->mPrmClr; }
u8 getPrmAlpha() const { return mpData->mPrmClr.a; }
void getEnvClr(GXColor* dst) const { *dst = mpData->mEnvClr; }
f32 getTiming() const { return mpData->mTiming; }
s16 getLife() const { return mpData->mLife; }
s16 getRate() const { return mpData->mRate; }
u8 getStep() const { return mpData->mStep; }
u8 getTexIdx() const { return mpData->mTexIdx; }
s16 getRotInitSpeed() const { return mpData->mRotSpeed; }
u32 getType() const { return mpData->mFlags & 0xF; }
u32 getDirType() const { return (mpData->mFlags >> 4) & 7; }
u32 getRotType() const { return (mpData->mFlags >> 7) & 7; }
u32 getBasePlaneType() const { return (mpData->mFlags >> 10) & 1; }
BOOL isScaleInherited() const { return mpData->mFlags & 0x10000; }
BOOL isAlphaInherited() const { return mpData->mFlags & 0x20000; }
BOOL isColorInherited() const { return mpData->mFlags & 0x40000; }
BOOL isClipOn() const { return mpData->mFlags & 0x100000; }
BOOL isFieldAffected() const { return mpData->mFlags & 0x200000; }
BOOL isScaleOutOn() const { return mpData->mFlags & 0x400000; }
BOOL isAlphaOutOn() const { return mpData->mFlags & 0x800000; }
BOOL isRotateOn() const { return mpData->mFlags & 0x1000000; }
public:
/* 0x00 */ const JPAChildShapeData* mpData;
};
// SS addition
void fn_8031DBA0(JPAEmitterWorkData*);
void JPARegistChildPrmEnv(JPAEmitterWorkData*);
void JPACalcChildAlphaOut(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcChildScaleOut(JPAEmitterWorkData*, JPABaseParticle*);
#endif /* JPACHILDSHAPE_H */
|