mirror of https://github.com/zeldaret/tp.git
90 lines
3.1 KiB
C++
90 lines
3.1 KiB
C++
#ifndef JPACHILDSHAPE_H
|
|
#define JPACHILDSHAPE_H
|
|
|
|
#include <dolphin/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:
|
|
/* 8027B038 */ 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;
|
|
};
|
|
|
|
void JPARegistChildPrmEnv(JPAEmitterWorkData*);
|
|
|
|
void JPACalcChildAlphaOut(JPAEmitterWorkData*, JPABaseParticle*);
|
|
void JPACalcChildScaleOut(JPAEmitterWorkData*, JPABaseParticle*);
|
|
|
|
#endif /* JPACHILDSHAPE_H */
|