summaryrefslogtreecommitdiff
path: root/include/JSystem/JParticle/JPAExtraShape.h
blob: f831fb862dbae2a12b65aab67c812d334ad76a3e (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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#ifndef JPAEXTRASHAPE_H
#define JPAEXTRASHAPE_H

#include "JSystem/JParticle/JPAParticle.h"

struct JPAExtraShapeData {
    /* 0x00 */ u32 mFlags;
    /* 0x04 */ u32 field_0x04;
    /* 0x08 */ f32 mAlphaInTiming;
    /* 0x0C */ f32 mAlphaOutTiming;
    /* 0x10 */ f32 mAlphaInValue;
    /* 0x14 */ f32 mAlphaBaseValue;
    /* 0x18 */ f32 mAlphaOutValue;
    /* 0x1C */ f32 mAlphaWaveParam1;
    /* 0x20 */ f32 mAlphaWaveParam2;
    /* 0x24 */ f32 mAlphaWaveParam3;
    /* 0x28 */ f32 mAlphaWaveRandom;
    /* 0x2C */ f32 mScaleInTiming;
    /* 0x30 */ f32 mScaleOutTiming;
    /* 0x34 */ f32 mScaleInValueX;
    /* 0x38 */ f32 mScaleOutValueX;
    /* 0x3C */ f32 mScaleInValueY;
    /* 0x40 */ f32 mScaleOutValueY;
    /* 0x44 */ f32 mRandomScale;
    /* 0x48 */ s16 mAnmCycleX;
    /* 0x4A */ s16 mAnmCycleY;
    /* 0x4C */ f32 mRotateAngle;
    /* 0x50 */ f32 mRotateSpeed;
    /* 0x54 */ f32 mRotateRandomAngle;
    /* 0x58 */ f32 mRotateRandomSpeed;
    /* 0x5C */ f32 mRotateDirection;
};  // Size: 0x60

class JPAExtraShape {
public:
    virtual ~JPAExtraShape() {}
    virtual BOOL isEnableScale() = 0;
    virtual BOOL isDiffXY() = 0;
    virtual BOOL isEnableScaleAnmX() = 0;
    virtual BOOL isEnableScaleAnmY() = 0;
    virtual BOOL isEnableScaleBySpeedX() = 0;
    virtual BOOL isEnableScaleBySpeedY() = 0;
    virtual f32 getScaleInTiming() = 0;
    virtual f32 getScaleOutTiming() = 0;
    virtual f32 getScaleInValueX() = 0;
    virtual f32 getScaleInValueY() = 0;
    virtual u8 getAnmTypeX() = 0;
    virtual u8 getAnmTypeY() = 0;
    virtual s16 getAnmCycleX() = 0;
    virtual s16 getAnmCycleY() = 0;
    virtual f32 getIncreaseRateX() = 0;
    virtual f32 getIncreaseRateY() = 0;
    virtual f32 getDecreaseRateX() = 0;
    virtual f32 getDecreaseRateY() = 0;
    virtual u8 getPivotX() = 0;
    virtual u8 getPivotY() = 0;
    virtual f32 getRandomScale() = 0;
    virtual BOOL isEnableAlpha() = 0;
    virtual BOOL isEnableSinWave() = 0;
    virtual f32 getAlphaInTiming() = 0;
    virtual f32 getAlphaOutTiming() = 0;
    virtual f32 getAlphaInValue() = 0;
    virtual f32 getAlphaBaseValue() = 0;
    virtual u8 getAlphaWaveType() = 0;
    virtual f32 getAlphaWaveParam1() = 0;
    virtual f32 getAlphaWaveParam2() = 0;
    virtual f32 getAlphaWaveParam3() = 0;
    virtual f32 getAlphaWaveRandom() = 0;
    virtual f32 getAlphaIncreaseRate() = 0;
    virtual f32 getAlphaDecreaseRate() = 0;
    virtual BOOL isEnableRotate() = 0;
    virtual f32 getRotateAngle() = 0;
    virtual f32 getRotateSpeed() = 0;
    virtual f32 getRotateRandomAngle() = 0;
    virtual f32 getRotateRandomSpeed() = 0;
    virtual f32 getRotateDirection() = 0;
};

class JPAExtraShapeArc : public JPAExtraShape {
public:
    JPAExtraShapeArc(const u8*);
    virtual ~JPAExtraShapeArc() {}
    virtual BOOL isEnableScale() { return (mpData->mFlags & 0x100); }
    virtual BOOL isDiffXY() { return (mpData->mFlags & 0x200); }
    virtual BOOL isEnableScaleAnmX() { return (mpData->mFlags & 0x800); }
    virtual BOOL isEnableScaleAnmY() { return (mpData->mFlags & 0x400); }
    virtual BOOL isEnableScaleBySpeedX() { return (mpData->mFlags & 0x2000); }
    virtual BOOL isEnableScaleBySpeedY() { return (mpData->mFlags & 0x1000); }
    virtual f32 getScaleInTiming() { return mpData->mScaleInTiming; }
    virtual f32 getScaleOutTiming() { return mpData->mScaleOutTiming; }
    virtual f32 getScaleInValueX() { return mpData->mScaleInValueX; }
    virtual f32 getScaleInValueY() { return mpData->mScaleInValueY; }
    virtual u8 getAnmTypeX() { return (mpData->mFlags >> 18) & 0x01; }
    virtual u8 getAnmTypeY() { return (mpData->mFlags >> 19) & 0x01; }
    virtual s16 getAnmCycleX() { return mpData->mAnmCycleX; }
    virtual s16 getAnmCycleY() { return mpData->mAnmCycleY; }
    virtual f32 getIncreaseRateX() { return mIncreaseRateX; }
    virtual f32 getIncreaseRateY() { return mIncreaseRateY; }
    virtual f32 getDecreaseRateX() { return mDecreaseRateX; }
    virtual f32 getDecreaseRateY() { return mDecreaseRateY; }
    virtual u8 getPivotX() { return (mpData->mFlags >> 14) & 0x03; }
    virtual u8 getPivotY() { return (mpData->mFlags >> 16) & 0x03; }
    virtual f32 getRandomScale() { return mpData->mRandomScale; }
    virtual BOOL isEnableAlpha() { return (mpData->mFlags & 0x01); }
    virtual BOOL isEnableSinWave() { return (mpData->mFlags & 0x02); }
    virtual f32 getAlphaInTiming() { return mpData->mAlphaInTiming; }
    virtual f32 getAlphaOutTiming() { return mpData->mAlphaOutTiming; }
    virtual f32 getAlphaInValue() { return mpData->mAlphaInValue; }
    virtual f32 getAlphaBaseValue() { return mpData->mAlphaBaseValue; }
    virtual u8 getAlphaWaveType() { return (mpData->mFlags >> 2) & 0x03; }
    virtual f32 getAlphaWaveParam1() { return mpData->mAlphaWaveParam1; }
    virtual f32 getAlphaWaveParam2() { return mpData->mAlphaWaveParam2; }
    virtual f32 getAlphaWaveParam3() { return mpData->mAlphaWaveParam3; }
    virtual f32 getAlphaWaveRandom() { return mpData->mAlphaWaveRandom; }
    virtual f32 getAlphaIncreaseRate() { return mAlphaIncreaseRate; }
    virtual f32 getAlphaDecreaseRate() { return mAlphaDecreaseRate; }
    virtual BOOL isEnableRotate() { return (mpData->mFlags & 0x01000000); }
    virtual f32 getRotateAngle() { return mpData->mRotateAngle; }
    virtual f32 getRotateSpeed() { return mpData->mRotateSpeed; }
    virtual f32 getRotateRandomAngle() { return mpData->mRotateRandomAngle; }
    virtual f32 getRotateRandomSpeed() { return mpData->mRotateRandomSpeed; }
    virtual f32 getRotateDirection() { return mpData->mRotateDirection; }

public:
    /* 0x04 */ const JPAExtraShapeData * mpData;
    /* 0x08 */ f32 mAlphaIncreaseRate;
    /* 0x0C */ f32 mAlphaDecreaseRate;
    /* 0x10 */ f32 mIncreaseRateX;
    /* 0x14 */ f32 mDecreaseRateX;
    /* 0x18 */ f32 mIncreaseRateY;
    /* 0x1C */ f32 mDecreaseRateY;
};

#endif /* JPAEXTRASHAPE_H */