mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-03 20:20:14 -04:00
JPA small cleanup
This commit is contained in:
@@ -131,7 +131,7 @@ struct JPABaseShapeData {
|
||||
/* 0x48 */ f32 mTexScrollScaleX;
|
||||
/* 0x4c */ f32 mTexScrollScaleY;
|
||||
/* 0x50 */ f32 mTexScrollRotate;
|
||||
};
|
||||
}; // Size: 0x54
|
||||
|
||||
class JPABaseShapeArc : public JPABaseShape {
|
||||
public:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "JSystem/JGeometry.h"
|
||||
|
||||
struct JPADynamicsBlockData {
|
||||
/* 0x00 */ u32 mFlag;
|
||||
/* 0x00 */ u32 mFlags;
|
||||
/* 0x04 */ f32 mVolumeSweep;
|
||||
/* 0x08 */ f32 mVolumeMinRad;
|
||||
/* 0x0C */ u16 mVolumeSize;
|
||||
@@ -33,6 +33,14 @@ struct JPADynamicsBlockData {
|
||||
/* 0x60 */ JGeometry::TVec3<f32> mEmitterTrs;
|
||||
/* 0x6C */ JGeometry::TVec3<f32> mEmitterDir;
|
||||
/* 0x78 */ JGeometry::TVec3<s16> mEmitterRot;
|
||||
}; // Size: 0x80
|
||||
|
||||
enum {
|
||||
JPADynFlag_FixedDensity = 0x01,
|
||||
JPADynFlag_FixedInterval = 0x02,
|
||||
JPADynFlag_InheritScale = 0x04,
|
||||
JPADynFlag_FollowEmtr = 0x08,
|
||||
JPADynFlag_FollowEmtrChld = 0x10,
|
||||
};
|
||||
|
||||
class JPADynamicsBlock {
|
||||
@@ -74,13 +82,13 @@ class JPADynamicsBlockArc : public JPADynamicsBlock {
|
||||
public:
|
||||
JPADynamicsBlockArc(const u8*);
|
||||
virtual ~JPADynamicsBlockArc() {}
|
||||
virtual u32 getDataFlag() { return mpData->mFlag; }
|
||||
virtual u32 getDataFlag() { return mpData->mFlags; }
|
||||
virtual u32 getUseKeyFlag() { return 0; }
|
||||
virtual void getEmitterScl(JGeometry::TVec3<f32>& out) { out.set(mpData->mEmitterScl.x, mpData->mEmitterScl.y, mpData->mEmitterScl.z); }
|
||||
virtual void getEmitterRot(JGeometry::TVec3<s16>& out) { out.set(mpData->mEmitterRot.x, mpData->mEmitterRot.y, mpData->mEmitterRot.z); }
|
||||
virtual void getEmitterTrs(JGeometry::TVec3<f32>& out) { out.set(mpData->mEmitterTrs.x, mpData->mEmitterTrs.y, mpData->mEmitterTrs.z); }
|
||||
virtual void getEmitterDir(JGeometry::TVec3<f32>& out) { out.set(mpData->mEmitterDir.x, mpData->mEmitterDir.y, mpData->mEmitterDir.z); }
|
||||
virtual u32 getVolumeType() { return (mpData->mFlag >> 8) & 0x07; }
|
||||
virtual u32 getVolumeType() { return (mpData->mFlags >> 8) & 0x07; }
|
||||
virtual u32 getVolumeSize() { return mpData->mVolumeSize; }
|
||||
virtual f32 getVolumeSweep() { return mpData->mVolumeSweep; }
|
||||
virtual f32 getVolumeMinRad() { return mpData->mVolumeMinRad; }
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
#include "dolphin/gx/GX.h"
|
||||
|
||||
struct JPAExTexShapeData {
|
||||
/* 0x00 */ u32 mFlag;
|
||||
/* 0x00 */ u32 mFlags;
|
||||
/* 0x04 */ Mtx23 mIndTexMtx;
|
||||
/* 0x1C */ s8 mExpScale;
|
||||
/* 0x1D */ u8 field_0x1d[3];
|
||||
/* 0x20 */ u8 mIndTextureID;
|
||||
/* 0x21 */ u8 mSubTextureID;
|
||||
/* 0x22 */ u8 mSecondTextureID;
|
||||
};
|
||||
}; // Size: 0x24
|
||||
|
||||
class JPAExTexShape {
|
||||
public:
|
||||
@@ -30,13 +30,13 @@ class JPAExTexShapeArc : public JPAExTexShape {
|
||||
public:
|
||||
JPAExTexShapeArc(const u8*);
|
||||
virtual ~JPAExTexShapeArc() {}
|
||||
virtual u32 getIndTexMode() { return (mpData->mFlag >> 0) & 0x03; }
|
||||
virtual GXIndTexMtxID getIndTexMtxID() { return indMtxID[(mpData->mFlag >> 2) & 0x03]; }
|
||||
virtual u32 getIndTexMode() { return (mpData->mFlags >> 0) & 0x03; }
|
||||
virtual GXIndTexMtxID getIndTexMtxID() { return indMtxID[(mpData->mFlags >> 2) & 0x03]; }
|
||||
virtual const Mtx23* getIndTexMtx() { return &mpData->mIndTexMtx; }
|
||||
virtual s8 getExpScale() { return mpData->mExpScale; }
|
||||
virtual u8 getIndTextureID() { return mpData->mIndTextureID; }
|
||||
virtual u8 getSubTextureID() { return mpData->mSubTextureID; }
|
||||
virtual BOOL isEnableSecondTex() { return (mpData->mFlag & 0x100); }
|
||||
virtual BOOL isEnableSecondTex() { return (mpData->mFlags & 0x100); }
|
||||
virtual u8 getSecondTexIndex() { return mpData->mSecondTextureID; }
|
||||
|
||||
public:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
|
||||
struct JPAExtraShapeData {
|
||||
/* 0x00 */ u32 mFlag;
|
||||
/* 0x00 */ u32 mFlags;
|
||||
/* 0x04 */ u32 field_0x04;
|
||||
/* 0x08 */ f32 mAlphaInTiming;
|
||||
/* 0x0C */ f32 mAlphaOutTiming;
|
||||
@@ -29,7 +29,7 @@ struct JPAExtraShapeData {
|
||||
/* 0x54 */ f32 mRotateRandomAngle;
|
||||
/* 0x58 */ f32 mRotateRandomSpeed;
|
||||
/* 0x5C */ f32 mRotateDirection;
|
||||
};
|
||||
}; // Size: 0x60
|
||||
|
||||
class JPAExtraShape {
|
||||
public:
|
||||
@@ -80,41 +80,41 @@ class JPAExtraShapeArc : public JPAExtraShape {
|
||||
public:
|
||||
JPAExtraShapeArc(const u8*);
|
||||
virtual ~JPAExtraShapeArc() {}
|
||||
virtual BOOL isEnableScale() { return (mpData->mFlag & 0x100); }
|
||||
virtual BOOL isDiffXY() { return (mpData->mFlag & 0x200); }
|
||||
virtual BOOL isEnableScaleAnmX() { return (mpData->mFlag & 0x800); }
|
||||
virtual BOOL isEnableScaleAnmY() { return (mpData->mFlag & 0x400); }
|
||||
virtual BOOL isEnableScaleBySpeedX() { return (mpData->mFlag & 0x2000); }
|
||||
virtual BOOL isEnableScaleBySpeedY() { return (mpData->mFlag & 0x1000); }
|
||||
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->mFlag >> 18) & 0x01; }
|
||||
virtual u8 getAnmTypeY() { return (mpData->mFlag >> 19) & 0x01; }
|
||||
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->mFlag >> 14) & 0x03; }
|
||||
virtual u8 getPivotY() { return (mpData->mFlag >> 16) & 0x03; }
|
||||
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->mFlag & 0x01); }
|
||||
virtual BOOL isEnableSinWave() { return (mpData->mFlag & 0x02); }
|
||||
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->mFlag >> 2) & 0x03; }
|
||||
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->mFlag & 0x01000000); }
|
||||
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; }
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "JSystem/JGeometry.h"
|
||||
|
||||
struct JPAFieldBlockData {
|
||||
/* 0x00 */ u32 mFlag;
|
||||
/* 0x00 */ u32 mFlags;
|
||||
/* 0x04 */ f32 mMag;
|
||||
/* 0x08 */ f32 mMagRndm;
|
||||
/* 0x0C */ f32 mMaxDist;
|
||||
@@ -47,9 +47,9 @@ public:
|
||||
JPAFieldBlockArc(const u8*);
|
||||
virtual ~JPAFieldBlockArc() {}
|
||||
|
||||
virtual u8 getType() { return (mpData->mFlag >> 0) & 0x0F; }
|
||||
virtual u32 getVelType() { return (mpData->mFlag >> 8) & 0x03; }
|
||||
virtual u32 getSttFlag() { return (mpData->mFlag >> 16) & 0xFFFF; }
|
||||
virtual u8 getType() { return (mpData->mFlags >> 0) & 0x0F; }
|
||||
virtual u32 getVelType() { return (mpData->mFlags >> 8) & 0x03; }
|
||||
virtual u32 getSttFlag() { return (mpData->mFlags >> 16) & 0xFFFF; }
|
||||
virtual u32 getCycle() { return mpData->mCycle; }
|
||||
virtual u32 getID() { return 0; }
|
||||
virtual void getPos(JGeometry::TVec3<float>& out) { out = mpData->mPos; };
|
||||
|
||||
@@ -23,8 +23,13 @@ class JPACallBackBase2;
|
||||
|
||||
enum JPAParticleStatus {
|
||||
JPAPtclStts_FirstFrame = 0x01,
|
||||
JPAPtclStts_Delete = 0x02,
|
||||
JPAPtlcStts_Child = 0x04,
|
||||
JPAPtclStts_Invisible = 0x08,
|
||||
JPAPtclStts_UNK_10 = 0x10,
|
||||
JPAPtclStts_UNK_20 = 0x20,
|
||||
JPAPtclStts_UNK_40 = 0x40,
|
||||
JPAPtclStts_UNK_80 = 0x80,
|
||||
};
|
||||
|
||||
// fake name
|
||||
@@ -72,6 +77,7 @@ public:
|
||||
void initStatus(u32 flag) { mStatus = flag; }
|
||||
void setStatus(u32 flag) { mStatus |= flag; }
|
||||
void clearStatus(u32 flag) { mStatus &= ~flag; }
|
||||
void setDeleteParticleFlag() { setStatus(JPAPtclStts_Delete); }
|
||||
bool isInvisibleParticle() { return checkStatus(JPAPtclStts_Invisible); }
|
||||
void setInvisibleParticleFlag() { setStatus(JPAPtclStts_Invisible); }
|
||||
|
||||
@@ -81,7 +87,6 @@ public:
|
||||
void getWidth() {}
|
||||
void getHeight() {}
|
||||
void getLifeTime() const {}
|
||||
void setDeleteParticleFlag() {}
|
||||
|
||||
public:
|
||||
/* 0x00 */ JSULink<JPABaseParticle> mLink;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "JSystem/JUtility/TColor.h"
|
||||
|
||||
struct JPASweepShapeData {
|
||||
/* 0x00 */ u32 mFlag;
|
||||
/* 0x00 */ u32 mFlags;
|
||||
/* 0x04 */ f32 mPosRndm;
|
||||
/* 0x08 */ f32 mBaseVel;
|
||||
/* 0x0C */ f32 mBaseVelRndm;
|
||||
@@ -24,7 +24,7 @@ struct JPASweepShapeData {
|
||||
/* 0x3C */ JUtility::TColor mPrm;
|
||||
/* 0x40 */ JUtility::TColor mEnv;
|
||||
/* 0x44 */ u8 mTextureIndex;
|
||||
};
|
||||
}; // Size: 0x48
|
||||
|
||||
class JPASweepShape {
|
||||
public:
|
||||
@@ -68,10 +68,10 @@ class JPASweepShapeArc : public JPASweepShape {
|
||||
public:
|
||||
JPASweepShapeArc(const u8*);
|
||||
virtual ~JPASweepShapeArc() {};
|
||||
virtual u8 getType() { return (mpData->mFlag >> 0) & 0x0F; }
|
||||
virtual u8 getDirType() { return (mpData->mFlag >> 4) & 0x07; }
|
||||
virtual u8 getRotType() { return (mpData->mFlag >> 7) & 0x07; }
|
||||
virtual u8 getBasePlaneType() { return (mpData->mFlag >> 10) & 0x01; }
|
||||
virtual u8 getType() { return (mpData->mFlags >> 0) & 0x0F; }
|
||||
virtual u8 getDirType() { return (mpData->mFlags >> 4) & 0x07; }
|
||||
virtual u8 getRotType() { return (mpData->mFlags >> 7) & 0x07; }
|
||||
virtual u8 getBasePlaneType() { return (mpData->mFlags >> 10) & 0x01; }
|
||||
virtual s16 getLife() { return mpData->mLife; }
|
||||
virtual s16 getRate() { return mpData->mRate; }
|
||||
virtual f32 getTiming() { return mpData->mTiming; }
|
||||
@@ -81,15 +81,15 @@ public:
|
||||
virtual f32 getBaseVel() { return mpData->mBaseVel; }
|
||||
virtual f32 getBaseVelRndm() { return mpData->mBaseVelRndm; }
|
||||
virtual f32 getGravity() { return mpData->mGravity; }
|
||||
virtual BOOL isEnableField() { return (mpData->mFlag & 0x00200000); }
|
||||
virtual BOOL isEnableDrawParent() { return (mpData->mFlag & 0x00080000); }
|
||||
virtual BOOL isClipOn() { return (mpData->mFlag & 0x00100000); }
|
||||
virtual BOOL isEnableScaleOut() { return (mpData->mFlag & 0x00400000); }
|
||||
virtual BOOL isEnableAlphaOut() { return (mpData->mFlag & 0x00800000); }
|
||||
virtual BOOL isEnableRotate() { return (mpData->mFlag & 0x01000000); }
|
||||
virtual BOOL isInheritedScale() { return (mpData->mFlag & 0x00010000); }
|
||||
virtual BOOL isInheritedAlpha() { return (mpData->mFlag & 0x00020000); }
|
||||
virtual BOOL isInheritedRGB() { return (mpData->mFlag & 0x00040000); }
|
||||
virtual BOOL isEnableField() { return (mpData->mFlags & 0x00200000); }
|
||||
virtual BOOL isEnableDrawParent() { return (mpData->mFlags & 0x00080000); }
|
||||
virtual BOOL isClipOn() { return (mpData->mFlags & 0x00100000); }
|
||||
virtual BOOL isEnableScaleOut() { return (mpData->mFlags & 0x00400000); }
|
||||
virtual BOOL isEnableAlphaOut() { return (mpData->mFlags & 0x00800000); }
|
||||
virtual BOOL isEnableRotate() { return (mpData->mFlags & 0x01000000); }
|
||||
virtual BOOL isInheritedScale() { return (mpData->mFlags & 0x00010000); }
|
||||
virtual BOOL isInheritedAlpha() { return (mpData->mFlags & 0x00020000); }
|
||||
virtual BOOL isInheritedRGB() { return (mpData->mFlags & 0x00040000); }
|
||||
virtual u8 getTextureIndex() { return mpData->mTextureIndex; }
|
||||
virtual f32 getScaleX() { return mpData->mScaleX; }
|
||||
virtual f32 getScaleY() { return mpData->mScaleY; }
|
||||
|
||||
@@ -23,7 +23,7 @@ void JPABaseEmitter::calcVolumePoint() {
|
||||
|
||||
/* 8025C254-8025C394 .text calcVolumeLine__14JPABaseEmitterFv */
|
||||
void JPABaseEmitter::calcVolumeLine() {
|
||||
if (checkEmDataFlag(0x02)) {
|
||||
if (checkEmDataFlag(JPADynFlag_FixedInterval)) {
|
||||
emtrInfo.mVolumePos.set(0.0f, 0.0f, emtrInfo.mVolumeSize * ((f32)emtrInfo.mVolumeEmitIdx / ((f32)emtrInfo.mVolumeEmitCount - 1.0f) - 0.5f));
|
||||
emtrInfo.mVolumeEmitIdx++;
|
||||
} else {
|
||||
@@ -37,7 +37,7 @@ void JPABaseEmitter::calcVolumeLine() {
|
||||
/* 8025C394-8025C538 .text calcVolumeCircle__14JPABaseEmitterFv */
|
||||
void JPABaseEmitter::calcVolumeCircle() {
|
||||
s16 angle;
|
||||
if (checkEmDataFlag(0x02)) {
|
||||
if (checkEmDataFlag(JPADynFlag_FixedInterval)) {
|
||||
s16 idx = (0x10000 * emtrInfo.mVolumeEmitIdx / emtrInfo.mVolumeEmitCount);
|
||||
angle = idx * mVolumeSweep;
|
||||
emtrInfo.mVolumeEmitIdx++;
|
||||
@@ -46,7 +46,7 @@ void JPABaseEmitter::calcVolumeCircle() {
|
||||
}
|
||||
|
||||
f32 rad = getRandomF();
|
||||
if (checkEmDataFlag(0x01))
|
||||
if (checkEmDataFlag(JPADynFlag_FixedDensity))
|
||||
rad = 1.0f - rad * rad;
|
||||
rad = emtrInfo.mVolumeSize * (mVolumeMinRad + rad * (1.0f - mVolumeMinRad));
|
||||
|
||||
@@ -66,7 +66,7 @@ void JPABaseEmitter::calcVolumeCube() {
|
||||
void JPABaseEmitter::calcVolumeSphere() {
|
||||
s16 x;
|
||||
s16 angle;
|
||||
if (checkEmDataFlag(0x02)) {
|
||||
if (checkEmDataFlag(JPADynFlag_FixedInterval)) {
|
||||
u16 angleNo = (emtrInfo.mVolumeEmitAngleCount * 0x10000) / emtrInfo.mVolumeEmitAngleMax;
|
||||
x = (u16)((emtrInfo.mVolumeEmitXCount * 0x8000) / (emtrInfo.mDivNumber - 1) + 0x4000);
|
||||
angle = (f32)angleNo * mVolumeSweep + 32768.0f;
|
||||
@@ -86,7 +86,7 @@ void JPABaseEmitter::calcVolumeSphere() {
|
||||
}
|
||||
|
||||
f32 rad = getRandomF();
|
||||
if (checkEmDataFlag(0x01)) {
|
||||
if (checkEmDataFlag(JPADynFlag_FixedDensity)) {
|
||||
rad = 1.0f - rad * rad * rad;
|
||||
}
|
||||
rad = emtrInfo.mVolumeSize * (mVolumeMinRad + rad * (1.0f - mVolumeMinRad));
|
||||
@@ -104,7 +104,7 @@ void JPABaseEmitter::calcVolumeSphere() {
|
||||
void JPABaseEmitter::calcVolumeCylinder() {
|
||||
s16 angle = mVolumeSweep * getRandomSS();
|
||||
f32 rad = getRandomF();
|
||||
if (checkEmDataFlag(0x01))
|
||||
if (checkEmDataFlag(JPADynFlag_FixedDensity))
|
||||
rad = 1.0f - rad * rad;
|
||||
rad = emtrInfo.mVolumeSize * (mVolumeMinRad + rad * (1.0f - mVolumeMinRad));
|
||||
|
||||
@@ -249,7 +249,7 @@ void JPABaseEmitter::calc() {
|
||||
void JPABaseEmitter::calcCreatePtcls() {
|
||||
if (checkStatus(JPAEmtrStts_RateStepEmit)) {
|
||||
s32 emitCount = 0;
|
||||
if (checkEmDataFlag(0x02)) { // Fixed interval
|
||||
if (checkEmDataFlag(JPADynFlag_FixedInterval)) {
|
||||
emitCount = (mVolumeType == 1) ?
|
||||
(mDivNumber + 1) * (mDivNumber - 1) * 4 + 6 : // Sphere
|
||||
mDivNumber;
|
||||
@@ -319,20 +319,20 @@ void JPABaseEmitter::calcParticle() {
|
||||
JSULink<JPABaseParticle> * next = link->getNext();
|
||||
JPABaseParticle * ptcl = (JPABaseParticle *) link->getObjectPtr();
|
||||
ptcl->incFrame();
|
||||
if (!ptcl->checkStatus(0x80)) {
|
||||
if (!ptcl->checkStatus(JPAPtclStts_UNK_80)) {
|
||||
ptcl->calcVelocity();
|
||||
ptcl->calcCB(this);
|
||||
if (!ptcl->checkStatus(0x02)) {
|
||||
if (!ptcl->checkStatus(JPAPtclStts_Delete)) {
|
||||
mDraw.calcParticle(ptcl);
|
||||
if (getEmitterDataBlockInfoPtr()->getSweepShape() != NULL && ptcl->checkCreateChild())
|
||||
createChildren(ptcl);
|
||||
ptcl->calcPosition();
|
||||
}
|
||||
} else {
|
||||
ptcl->setStatus(0x02);
|
||||
ptcl->setStatus(JPAPtclStts_Delete);
|
||||
}
|
||||
|
||||
if (ptcl->checkStatus(0x02))
|
||||
if (ptcl->checkStatus(JPAPtclStts_Delete))
|
||||
deleteParticle(ptcl, &mActiveParticles);
|
||||
|
||||
link = next;
|
||||
@@ -345,19 +345,19 @@ void JPABaseEmitter::calcChild() {
|
||||
JSULink<JPABaseParticle> * next = link->getNext();
|
||||
JPABaseParticle * ptcl = (JPABaseParticle *) link->getObjectPtr();
|
||||
ptcl->incFrame();
|
||||
if (!ptcl->checkStatus(0x80)) {
|
||||
if (!ptcl->checkStatus(JPAPtclStts_UNK_80)) {
|
||||
if (ptcl->getAge() != 0)
|
||||
ptcl->calcVelocity();
|
||||
ptcl->calcCB(this);
|
||||
if (!ptcl->checkStatus(0x02)) {
|
||||
if (!ptcl->checkStatus(JPAPtclStts_Delete)) {
|
||||
mDraw.calcChild(ptcl);
|
||||
ptcl->calcPosition();
|
||||
}
|
||||
} else {
|
||||
ptcl->setStatus(0x02);
|
||||
ptcl->setStatus(JPAPtclStts_Delete);
|
||||
}
|
||||
|
||||
if (ptcl->checkStatus(0x02))
|
||||
if (ptcl->checkStatus(JPAPtclStts_Delete))
|
||||
deleteParticle(ptcl, &mChildParticles);
|
||||
|
||||
link = next;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JParticle/JPADynamicsBlock.h"
|
||||
#include "JSystem/JParticle/JPAEmitter.h"
|
||||
#include "JSystem/JParticle/JPASweepShape.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
@@ -23,8 +24,8 @@ void JPABaseParticle::initParticle() {
|
||||
mFieldDrag = 1.0f;
|
||||
mDrag = 1.0f;
|
||||
MTXMultVec(emtrInfo.mEmitterGlobalSR, emtrInfo.mVolumePos, mLocalPosition);
|
||||
if ((emtr->mDataFlag & 0x08) != 0)
|
||||
setStatus(0x20);
|
||||
if ((emtr->mDataFlag & JPADynFlag_FollowEmtr) != 0)
|
||||
setStatus(JPAPtclStts_UNK_20);
|
||||
|
||||
mOffsetPosition.set(emtrInfo.mEmitterGlobalCenter);
|
||||
|
||||
@@ -69,7 +70,7 @@ void JPABaseParticle::initParticle() {
|
||||
velRatio * (velOmni.z + velAxis.z + velDir.z + velRndm.z)
|
||||
);
|
||||
|
||||
if (emtr->checkEmDataFlag(0x04))
|
||||
if (emtr->checkEmDataFlag(JPADynFlag_InheritScale))
|
||||
mBaseVel.mul(emtr->mEmitterScale);
|
||||
|
||||
MTXMultVec(emtrInfo.mEmitterGlobalRot, mBaseVel, mBaseVel);
|
||||
@@ -106,7 +107,7 @@ void JPABaseParticle::initChild(JPABaseParticle* parent) {
|
||||
initStatus(JPAPtclStts_FirstFrame | JPAPtlcStts_Child);
|
||||
|
||||
if (!sweep->isEnableField()) {
|
||||
setStatus(0x40);
|
||||
setStatus(JPAPtclStts_UNK_40);
|
||||
mFieldDrag = 1.0f;
|
||||
mDrag = 1.0f;
|
||||
} else {
|
||||
@@ -139,8 +140,8 @@ void JPABaseParticle::initChild(JPABaseParticle* parent) {
|
||||
vel.z = (mBaseVel.z + mFieldVel.z) * velScale;
|
||||
mVelocity = vel;
|
||||
|
||||
if (emtr->checkEmDataFlag(0x10))
|
||||
setStatus(0x20);
|
||||
if (emtr->checkEmDataFlag(JPADynFlag_FollowEmtrChld))
|
||||
setStatus(JPAPtclStts_UNK_20);
|
||||
|
||||
mOffsetPosition.set(parent->mOffsetPosition);
|
||||
mLocalPosition.set(parent->mLocalPosition);
|
||||
@@ -167,7 +168,7 @@ void JPABaseParticle::incFrame() {
|
||||
|
||||
if (mCurFrame >= mLifeTime) {
|
||||
mCurNormTime = 1.0f;
|
||||
setStatus(0x02); // setDeleteParticleFlag?
|
||||
setStatus(JPAPtclStts_Delete);
|
||||
} else {
|
||||
mCurNormTime = mCurFrame / mLifeTime;
|
||||
}
|
||||
@@ -176,10 +177,10 @@ void JPABaseParticle::incFrame() {
|
||||
/* 8025EB90-8025ECE8 .text calcVelocity__15JPABaseParticleFv */
|
||||
void JPABaseParticle::calcVelocity() {
|
||||
mFieldVel.zero();
|
||||
if (checkStatus(0x20))
|
||||
if (checkStatus(JPAPtclStts_UNK_20))
|
||||
mOffsetPosition.set(JPABaseEmitter::emtrInfo.mEmitterGlobalCenter);
|
||||
mBaseVel.add(mAccel);
|
||||
if (!checkStatus(0x40))
|
||||
if (!checkStatus(JPAPtclStts_UNK_40))
|
||||
JPABaseEmitter::emtrInfo.mpCurEmitter->mFieldManager.calc(this);
|
||||
mFieldVel.add(mFieldAccel);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user