From 2dced07761c17ee0eff709173e78420d392058ff Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Tue, 26 May 2026 21:56:55 -0400 Subject: [PATCH] Add missing inlines for JPADraw --- include/JSystem/JParticle/JPADrawSetupTev.h | 1 + include/JSystem/JParticle/JPAEmitter.h | 13 ++++--- src/JSystem/JParticle/JPADraw.cpp | 41 +++++++++------------ 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/include/JSystem/JParticle/JPADrawSetupTev.h b/include/JSystem/JParticle/JPADrawSetupTev.h index eb99d552f..fa779f1fb 100644 --- a/include/JSystem/JParticle/JPADrawSetupTev.h +++ b/include/JSystem/JParticle/JPADrawSetupTev.h @@ -8,6 +8,7 @@ class JPAExTexShape; class JPADrawSetupTev { public: + JPADrawSetupTev() {} ~JPADrawSetupTev() {} void setupTev(JPABaseShape* param_1, JPAExTexShape* param_2); diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index 82523a52d..530363bb1 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -237,6 +237,8 @@ public: void setGlobalParticleScale(f32 scaleX, f32 scaleY) { mGlobalParticleScale.set(scaleX, scaleY, 1.0f); } + void setGlobalParticleWidthScale(f32 x) { mGlobalParticleScale.x = x; } + void setGlobalParticleHeightScale(f32 y) { mGlobalParticleScale.y = y; } void setGlobalDynamicsScale(const JGeometry::TVec3& scale) { mGlobalDynamicsScale.set(scale); } @@ -260,6 +262,8 @@ public: mGlobalEnvColor.g = g; mGlobalEnvColor.b = b; } + void getBaseEnvColor(GXColor& color) { color = mGlobalEnvColor; } + void getBasePrmColor(GXColor& color) { color = mGlobalPrmColor; } void setVolumeSweep(f32 i_volSweep) { mVolumeSweep = i_volSweep; } void setVolumeSize(u16 size) { mVolumeSize = size; } @@ -316,17 +320,12 @@ public: void calcEmitterGlobalTranslation(JGeometry::TVec3&) {} void drawCB() {} void drawEmitterCallBack() {} - void getAxisYVec(JGeometry::TVec3&) const {} - void getBaseEnvColor(GXColor&) {} - void getBasePrmColor(GXColor&) {} void getCurrentCreateNumber() const {} f32 getFrame() { return mTick.getFrame(); } void getgReRDirection(JGeometry::TVec3&) {} void isContinuousParticle() {} void loadTexture(u8, GXTexMapID) {} void setEmitterRotation(const JGeometry::TVec3&) {} - void setGlobalParticleHeightScale(f32 y) { mGlobalParticleScale.y = y; } - void setGlobalParticleWidthScale(f32 x) { mGlobalParticleScale.x = x; } static JPAEmitterInfo emtrInfo; @@ -338,6 +337,10 @@ public: vec1.set(emtrInfo.mEmitterGlobalRot[0][1], emtrInfo.mEmitterGlobalRot[1][1], emtrInfo.mEmitterGlobalRot[2][1]); vec2.set(emtrInfo.mEmitterGlobalRot[0][2], emtrInfo.mEmitterGlobalRot[1][2], emtrInfo.mEmitterGlobalRot[2][2]); } + void getAxisYVec(JGeometry::TVec3& vec) const { + // Same as above comment, this implementation could be fake. + vec.set(emtrInfo.mEmitterGlobalRot[0][1], emtrInfo.mEmitterGlobalRot[1][1], emtrInfo.mEmitterGlobalRot[2][1]); + } static f32 getAspect() { return emtrInfo.mAspect; } static f32 getFovy() { return emtrInfo.mFovy; } diff --git a/src/JSystem/JParticle/JPADraw.cpp b/src/JSystem/JParticle/JPADraw.cpp index 9bab8798f..c7f1e45fc 100644 --- a/src/JSystem/JParticle/JPADraw.cpp +++ b/src/JSystem/JParticle/JPADraw.cpp @@ -119,8 +119,8 @@ void JPADraw::draw(MtxP drawMtx) { GXSetChanCtrl(GX_COLOR0A0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); GXSetChanCtrl(GX_COLOR1A1, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); GXSetBlendMode(dc.pbsp->getBlendMode1(), dc.pbsp->getSrcBlendFactor1(), dc.pbsp->getDstBlendFactor1(), dc.pbsp->getBlendOp1()); - cb.mPrmColor = dc.pbe->mGlobalPrmColor; - cb.mEnvColor = dc.pbe->mGlobalEnvColor; + dc.pbe->getBasePrmColor(cb.mPrmColor); + dc.pbe->getBaseEnvColor(cb.mEnvColor); cb.mDrawMtxPtr = drawMtx; cb.mSetupTev.setupTev(dc.pbsp, dc.petx); for (int i = 0; i < execEmtrVisNum; i++) { @@ -165,7 +165,7 @@ void JPADraw::calcChild(JPABaseParticle* ptcl) { /* 80268A48-80268F28 .text initParticle__7JPADrawFP15JPABaseParticle */ void JPADraw::initParticle(JPABaseParticle* ptcl) { JPADrawParams* params = ptcl->getDrawParamPPtr(); - params->mAxis.set(JPABaseEmitter::emtrInfo.mEmitterGlobalRot[0][1], JPABaseEmitter::emtrInfo.mEmitterGlobalRot[1][1], JPABaseEmitter::emtrInfo.mEmitterGlobalRot[2][1]); + dc.pbe->getAxisYVec(params->mAxis); params->mPrmColor = mPrmColor; params->mEnvColor = mEnvColor; params->mAlphaOut = 1.0f; @@ -665,12 +665,11 @@ void JPADraw::setParticleClipBoard() { GXLoadPosMtxImm(cb.mDrawMtx, GX_PNMTX0); - JPABaseEmitter* emtr = dc.pbe; - f32 scaleX = emtr->mGlobalParticleScale.x; - f32 scaleY = emtr->mGlobalParticleScale.y; + JGeometry::TVec3 scale; + dc.pbe->getGlobalParticleScale(scale); - cb.mGlobalScaleX = 25.0f * dc.pbsp->getBaseSizeX() * scaleX; - cb.mGlobalScaleY = 25.0f * dc.pbsp->getBaseSizeY() * scaleY; + cb.mGlobalScaleX = 25.0f * dc.pbsp->getBaseSizeX() * scale.x; + cb.mGlobalScaleY = 25.0f * dc.pbsp->getBaseSizeY() * scale.y; if (dc.pbsp->getType() == JPABaseShape::JPAType_Point) { cb.mGlobalScaleX *= 1.02f; @@ -751,16 +750,15 @@ void JPADraw::setChildClipBoard() { GXLoadPosMtxImm(cb.mDrawMtx, GX_PNMTX0); - JPABaseEmitter* emtr = dc.pbe; - f32 scaleX = emtr->mGlobalParticleScale.x; - f32 scaleY = emtr->mGlobalParticleScale.y; + JGeometry::TVec3 scale; + dc.pbe->getGlobalParticleScale(scale); if (!dc.pssp->isInheritedScale()) { - cb.mGlobalScaleX = 25.0f * dc.pssp->getScaleX() * scaleX; - cb.mGlobalScaleY = 25.0f * dc.pssp->getScaleY() * scaleY; + cb.mGlobalScaleX = 25.0f * dc.pssp->getScaleX() * scale.x; + cb.mGlobalScaleY = 25.0f * dc.pssp->getScaleY() * scale.y; } else { - cb.mGlobalScaleX = 25.0f * dc.pbsp->getBaseSizeX() * scaleX; - cb.mGlobalScaleY = 25.0f * dc.pbsp->getBaseSizeY() * scaleY; + cb.mGlobalScaleX = 25.0f * dc.pbsp->getBaseSizeX() * scale.x; + cb.mGlobalScaleY = 25.0f * dc.pbsp->getBaseSizeY() * scale.y; } if (dc.pssp->getType() == JPABaseShape::JPAType_Point) { @@ -859,7 +857,7 @@ void JPADraw::drawParticle() { void JPADraw::drawChild() { field_0xc2 |= 0x02; setChildClipBoard(); - dc.mpActiveParticles = &dc.pbe->mChildParticles; + dc.mpActiveParticles = dc.pbe->getChildParticleList(); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXEnableTexOffsets(GX_TEXCOORD0, GX_TRUE, GX_TRUE); @@ -923,7 +921,7 @@ void JPADraw::zDrawParticle() { GXSetLineWidth(cb.mGlobalScaleX, GX_TO_ONE); GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); GXSetZCompLoc(GX_FALSE); - GXSetAlphaCompare(GX_GEQUAL, dc.pbe->mGlobalPrmColor.a, GX_AOP_OR, GX_GEQUAL, dc.pbe->mGlobalPrmColor.a); + GXSetAlphaCompare(GX_GEQUAL, dc.pbe->getGlobalAlpha(), GX_AOP_OR, GX_GEQUAL, dc.pbe->getGlobalAlpha()); GXSetAlphaUpdate(GX_FALSE); GXSetColorUpdate(GX_FALSE); GXSetCullMode(GX_CULL_NONE); @@ -959,7 +957,7 @@ void JPADraw::zDrawParticle() { void JPADraw::zDrawChild() { field_0xc2 |= 0x02; setChildClipBoard(); - dc.mpActiveParticles = &dc.pbe->mChildParticles; + dc.mpActiveParticles = dc.pbe->getChildParticleList(); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXEnableTexOffsets(GX_TEXCOORD0, GX_TRUE, GX_TRUE); @@ -971,7 +969,7 @@ void JPADraw::zDrawChild() { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); GXSetZCompLoc(GX_FALSE); - GXSetAlphaCompare(GX_GEQUAL, dc.pbe->mGlobalPrmColor.a, GX_AOP_OR, GX_GEQUAL, dc.pbe->mGlobalPrmColor.a); + GXSetAlphaCompare(GX_GEQUAL, dc.pbe->getGlobalAlpha(), GX_AOP_OR, GX_GEQUAL, dc.pbe->getGlobalAlpha()); GXSetAlphaUpdate(GX_FALSE); GXSetColorUpdate(GX_FALSE); GXSetCullMode(GX_CULL_NONE); @@ -1006,10 +1004,7 @@ void JPADraw::zDrawChild() { /* 8026C4DC-8026C640 .text loadYBBMtx__7JPADrawFPA4_f */ void JPADraw::loadYBBMtx(MtxP mtx) { - JGeometry::TVec3 v; - v.x = 0.0f; - v.y = mtx[1][1]; - v.z = mtx[2][1]; + JGeometry::TVec3 v(0.0f, mtx[1][1], mtx[2][1]); JUT_ASSERT(0x596, !v.isZero()); v.normalize();