summaryrefslogtreecommitdiff
path: root/include/JSystem/JParticle/JPAExtraShape.h
blob: 5a231348d9a466a6e27e8dd4a03fe94b0cdf94f4 (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
#ifndef JPAEXTRASHAPE_H
#define JPAEXTRASHAPE_H

#include "dolphin/types.h"

/**
 * @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:
    /* 8027AD88 */ JPAExtraShape(u8 const*);
    /* 8027ADBC */ 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; }
    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 getAlphaAmp() const { return mpData->mAlphaWaveAmplitude; }
    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; }

private:
    /* 0x00 */ const JPAExtraShapeData* mpData;
    /* 0x04 */ f32 mAlphaIncRate;
    /* 0x08 */ f32 mAlphaDecRate;
    /* 0x0C */ f32 mScaleIncRateX;
    /* 0x10 */ f32 mScaleIncRateY;
    /* 0x14 */ f32 mScaleDecRateX;
    /* 0x18 */ f32 mScaleDecRateY;
};

#endif /* JPAEXTRASHAPE_H */