blob: a567d7683d98fb309e087659e9f91d2d72d6c150 (
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#ifndef JPAEXTRASHAPE_H
#define JPAEXTRASHAPE_H
#include "common.h"
class JPAEmitterWorkData;
class JPABaseParticle;
/**
* @ingroup jsystem-jparticle
*
*/
struct JPAExtraShapeData {
// Common header.
/* 0x00 */ u8 mMagic[4];
/* 0x04 */ u32 mSize;
/* 0x08 */ u32 mFlags;
/* 0x0C */ f32 mScaleInTiming;
/* 0x10 */ f32 mScaleOutTiming;
/* 0x14 */ f32 mScaleInValueX;
/* 0x18 */ f32 mScaleOutValueX;
/* 0x1C */ f32 mScaleInValueY;
/* 0x20 */ f32 mScaleOutValueY;
/* 0x24 */ f32 mScaleOutRandom;
/* 0x28 */ s16 mScaleAnmCycleX;
/* 0x2A */ s16 mScaleAnmCycleY;
/* 0x2C */ f32 mAlphaInTiming;
/* 0x30 */ f32 mAlphaOutTiming;
/* 0x34 */ f32 mAlphaInValue;
/* 0x38 */ f32 mAlphaBaseValue;
/* 0x3C */ f32 mAlphaOutValue;
/* 0x40 */ f32 mAlphaWaveFrequency;
/* 0x44 */ f32 mAlphaWaveRandom;
/* 0x48 */ f32 mAlphaWaveAmplitude;
/* 0x4C */ f32 mRotateAngle;
/* 0x50 */ f32 mRotateAngleRandom;
/* 0x54 */ f32 mRotateSpeed;
/* 0x58 */ f32 mRotateSpeedRandom;
/* 0x5C */ f32 mRotateDirection;
};
/**
* @ingroup jsystem-jparticle
*
*/
class JPAExtraShape {
public:
JPAExtraShape(u8 const*);
void init();
f32 getScaleInTiming() const { return mpData->mScaleInTiming; }
f32 getScaleOutTiming() const { return mpData->mScaleOutTiming; }
f32 getScaleInValueX() const { return mpData->mScaleInValueX; }
f32 getScaleInValueY() const { return mpData->mScaleInValueY; }
f32 getScaleOutValueX() const { return mpData->mScaleOutValueX; }
f32 getScaleOutValueY() const { return mpData->mScaleOutValueY; }
f32 getScaleRndm() const { return mpData->mScaleOutRandom; }
s16 getScaleAnmCycleX() const { return mpData->mScaleAnmCycleX; }
s16 getScaleAnmCycleY() const { return mpData->mScaleAnmCycleY; }
f32 getAlphaInTiming() const { return mpData->mAlphaInTiming; }
f32 getAlphaOutTiming() const { return mpData->mAlphaOutTiming; }
f32 getAlphaInValue() const { return mpData->mAlphaInValue; }
f32 getAlphaOutValue() const { return mpData->mAlphaOutValue; }
f32 getAlphaBaseValue() const { return mpData->mAlphaBaseValue; }
f32 getAlphaFreq() const { return mpData->mAlphaWaveFrequency; }
f32 getAlphaFreqRndm() const { return mpData->mAlphaWaveRandom; }
f32 getAlphaAmp() const { return mpData->mAlphaWaveAmplitude; }
f32 getRotateInitAngle() const { return mpData->mRotateAngle; }
f32 getRotateRndmAngle() const { return mpData->mRotateAngleRandom; }
f32 getRotateInitSpeed() const { return mpData->mRotateSpeed; }
f32 getRotateRndmSpeed() const { return mpData->mRotateSpeedRandom; }
f32 getRotateDirection() const { return mpData->mRotateDirection; }
f32 getScaleIncRateX() const { return mScaleIncRateX; }
f32 getScaleDecRateX() const { return mScaleDecRateX; }
f32 getScaleIncRateY() const { return mScaleIncRateY; }
f32 getScaleDecRateY() const { return mScaleDecRateY; }
f32 getAlphaIncRate() const { return mAlphaIncRate; }
f32 getAlphaDecRate() const { return mAlphaDecRate; }
BOOL isEnableScaleAnm() const { return mpData->mFlags & 1; }
BOOL isScaleXYDiff() const { return mpData->mFlags & 2; }
u32 getScaleAnmTypeX() const { return (mpData->mFlags >> 8) & 3; }
u32 getScaleAnmTypeY() const { return (mpData->mFlags >> 10) & 3; }
u32 getScaleCenterX() const { return (mpData->mFlags >> 12) & 3; }
u32 getScaleCenterY() const { return (mpData->mFlags >> 14) & 3; }
BOOL isEnableAlphaAnm() const { return mpData->mFlags & 0x10000; }
BOOL isEnableAlphaFlick() const { return mpData->mFlags & 0x20000; }
BOOL isEnableRotateAnm() const { return mpData->mFlags & 0x1000000; }
private:
/* 0x00 */ const JPAExtraShapeData* mpData;
/* 0x04 */ f32 mAlphaIncRate;
/* 0x08 */ f32 mAlphaDecRate;
/* 0x0C */ f32 mScaleIncRateX;
/* 0x10 */ f32 mScaleIncRateY;
/* 0x14 */ f32 mScaleDecRateX;
/* 0x18 */ f32 mScaleDecRateY;
};
void JPACalcAlphaFlickAnm(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcAlphaAnm(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcScaleX(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcScaleY(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcScaleCopy(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcScaleAnmNormal(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcScaleAnmRepeatX(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcScaleAnmReverseX(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcScaleAnmRepeatY(JPAEmitterWorkData*, JPABaseParticle*);
void JPACalcScaleAnmReverseY(JPAEmitterWorkData*, JPABaseParticle*);
#endif /* JPAEXTRASHAPE_H */
|