mirror of https://github.com/zeldaret/tp.git
113 lines
4.6 KiB
C++
113 lines
4.6 KiB
C++
#ifndef JPAEXTRASHAPE_H
|
|
#define JPAEXTRASHAPE_H
|
|
|
|
#include "dolphin/types.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:
|
|
/* 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; }
|
|
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 */
|