mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-31 01:15:27 -04:00
1026 lines
45 KiB
C++
1026 lines
45 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: JPADrawVisitor.cpp
|
|
//
|
|
|
|
#include "JSystem/JParticle/JPADrawVisitor.h"
|
|
#include "JSystem/JParticle/JPABaseShape.h"
|
|
#include "JSystem/JParticle/JPAEmitter.h"
|
|
#include "JSystem/JParticle/JPAExtraShape.h"
|
|
#include "JSystem/JParticle/JPAParticle.h"
|
|
#include "JSystem/JParticle/JPAResourceManager.h"
|
|
#include "JSystem/JParticle/JPASweepShape.h"
|
|
#include "JSystem/JMath/JMATrigonometric.h"
|
|
#include "JSystem/JGeometry.h"
|
|
#include "dolphin/gx/GX.h"
|
|
#include "dolphin/mtx/mtx.h"
|
|
#include "dolphin/mtx/mtxvec.h"
|
|
#include "JSystem/JUtility/JUTAssert.h"
|
|
#include "JSystem/JParticle/JPAExTexShape.h"
|
|
|
|
static inline u32 JPA_U8_THRE(u32 a, u32 b) {
|
|
return ((a * (b + 1)) * 0x10000) >> 24;
|
|
}
|
|
|
|
JPADrawClipBoard* JPADrawContext::pcb;
|
|
|
|
/* 8025F960-8025FBE4 .text exec__20JPADrawExecLoadExTexFPC14JPADrawContext */
|
|
void JPADrawExecLoadExTex::exec(const JPADrawContext* pDC) {
|
|
JUT_ASSERT(50, pDC->pTexIdx);
|
|
|
|
u16 texIdx;
|
|
GXTexCoordID coord = GX_TEXCOORD1;
|
|
switch (pDC->petx->getIndTexMode()) {
|
|
case 1:
|
|
GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
|
GXEnableTexOffsets(GX_TEXCOORD1, GX_TRUE, GX_TRUE);
|
|
texIdx = pDC->pTexIdx[pDC->petx->getIndTextureID()];
|
|
pDC->mpTextureResource->pTexResArray[texIdx]->load(GX_TEXMAP5);
|
|
coord = GX_TEXCOORD2;
|
|
break;
|
|
case 2:
|
|
GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
|
GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
|
GXEnableTexOffsets(GX_TEXCOORD1, GX_TRUE, GX_TRUE);
|
|
GXEnableTexOffsets(GX_TEXCOORD2, GX_TRUE, GX_TRUE);
|
|
texIdx = pDC->pTexIdx[pDC->petx->getIndTextureID()];
|
|
pDC->mpTextureResource->pTexResArray[texIdx]->load(GX_TEXMAP5);
|
|
texIdx = pDC->pTexIdx[pDC->petx->getSubTextureID()];
|
|
pDC->mpTextureResource->pTexResArray[texIdx]->load(GX_TEXMAP6);
|
|
coord = GX_TEXCOORD3;
|
|
break;
|
|
}
|
|
|
|
if (pDC->petx->isEnableSecondTex()) {
|
|
GXSetTexCoordGen2(coord, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
|
GXEnableTexOffsets(coord, GX_TRUE, GX_TRUE);
|
|
texIdx = pDC->pTexIdx[pDC->petx->getSecondTexIndex()];
|
|
pDC->mpTextureResource->pTexResArray[texIdx]->load(GX_TEXMAP7);
|
|
}
|
|
}
|
|
|
|
/* 8025FBE4-8025FC78 .text exec__20JPADrawExecGenPrjMtxFPC14JPADrawContext */
|
|
void JPADrawExecGenPrjMtx::exec(const JPADrawContext* pDC) {
|
|
Mtx mtx;
|
|
f32 aspect = JPABaseEmitter::getAspect();
|
|
f32 fovy = JPABaseEmitter::getFovy();
|
|
C_MTXLightPerspective(mtx, fovy, aspect, 0.5f, -0.5f, 0.5f, 0.5f);
|
|
MTXConcat(mtx, JPADrawContext::pcb->mDrawMtx, mtx);
|
|
GXLoadTexMtxImm(mtx, GX_TEXMTX0, GX_MTX3x4);
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY);
|
|
GXEnableTexOffsets(GX_TEXCOORD0, GX_TRUE, GX_TRUE);
|
|
}
|
|
|
|
/* 8025FC78-8025FF20 .text exec__23JPADrawExecGenPrjTexMtxFPC14JPADrawContext */
|
|
void JPADrawExecGenPrjTexMtx::exec(const JPADrawContext* pDC) {
|
|
Mtx projMtx;
|
|
f32 aspect = JPABaseEmitter::getAspect();
|
|
f32 fovy = JPABaseEmitter::getFovy();
|
|
C_MTXLightPerspective(projMtx, fovy, aspect, 0.5f, -0.5f, 0.5f, 0.5f);
|
|
|
|
f32 tick = pDC->pbe->mTick.getFrame();
|
|
f32 transX = tick * pDC->pbsp->getTexScrollTransX() + pDC->pbsp->getTexStaticTransX();
|
|
f32 transY = tick * pDC->pbsp->getTexScrollTransY() + pDC->pbsp->getTexStaticTransY();
|
|
f32 scaleX = tick * pDC->pbsp->getTexScrollScaleX() + pDC->pbsp->getTexStaticScaleX();
|
|
f32 scaleY = tick * pDC->pbsp->getTexScrollScaleY() + pDC->pbsp->getTexStaticScaleY();
|
|
s32 angle = DEG_TO_RAD(tick * pDC->pbsp->getTexScrollRotate());
|
|
f32 sin = JMASSin(angle);
|
|
f32 cos = JMASCos(angle);
|
|
|
|
Mtx mtx;
|
|
mtx[0][0] = scaleX * cos;
|
|
mtx[0][1] = -scaleX * sin;
|
|
mtx[0][2] = scaleX * (sin * (transY + 0.5f) - cos * (transX + 0.5f)) + 0.5f;
|
|
mtx[0][3] = 0.0f;
|
|
|
|
mtx[1][0] = scaleY * sin;
|
|
mtx[1][1] = scaleY * cos;
|
|
mtx[1][2] = -scaleY * (sin * (transX + 0.5f) + cos * (transY + 0.5f)) + 0.5f;
|
|
mtx[1][3] = 0.0f;
|
|
|
|
mtx[2][0] = 0.0f;
|
|
mtx[2][1] = 0.0f;
|
|
mtx[2][2] = 1.0f;
|
|
mtx[2][3] = 0.0f;
|
|
|
|
MTXConcat(mtx, projMtx, projMtx);
|
|
MTXConcat(projMtx, JPADrawContext::pcb->mDrawMtx, mtx);
|
|
GXLoadTexMtxImm(mtx, GX_TEXMTX0, GX_MTX3x4);
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY);
|
|
GXEnableTexOffsets(GX_TEXCOORD0, GX_TRUE, GX_TRUE);
|
|
}
|
|
|
|
/* 8025FF20-8025FF68 .text exec__21JPADrawExecGenTexMtx0FPC14JPADrawContext */
|
|
void JPADrawExecGenTexMtx0::exec(const JPADrawContext* pDC) {
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY);
|
|
GXEnableTexOffsets(GX_TEXCOORD0, GX_TRUE, GX_TRUE);
|
|
}
|
|
|
|
/* 8025FF68-8025FFB0 .text exec__20JPADrawExecGenIdtMtxFPC14JPADrawContext */
|
|
void JPADrawExecGenIdtMtx::exec(const JPADrawContext* pDC) {
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
|
GXEnableTexOffsets(GX_TEXCOORD0, GX_TRUE, GX_TRUE);
|
|
}
|
|
|
|
/* 8025FFB0-802602F0 .text exec__20JPADrawExecSetTexMtxFPC14JPADrawContext */
|
|
void JPADrawExecSetTexMtx::exec(const JPADrawContext* pDC) {
|
|
s32 tick = pDC->pbe->mTick.getFrame();
|
|
f32 tilingX = 0.5f * pDC->pbsp->getTilingX();
|
|
f32 tilingY = 0.5f * pDC->pbsp->getTilingY();
|
|
f32 transX = tick * pDC->pbsp->getTexScrollTransX() + pDC->pbsp->getTexStaticTransX();
|
|
f32 transY = tick * pDC->pbsp->getTexScrollTransY() + pDC->pbsp->getTexStaticTransY();
|
|
f32 scaleX = tick * pDC->pbsp->getTexScrollScaleX() + pDC->pbsp->getTexStaticScaleX();
|
|
f32 scaleY = tick * pDC->pbsp->getTexScrollScaleY() + pDC->pbsp->getTexStaticScaleY();
|
|
s32 angle = DEG_TO_RAD(tick * pDC->pbsp->getTexScrollRotate());
|
|
f32 sin = JMASSin(angle);
|
|
f32 cos = JMASCos(angle);
|
|
|
|
Mtx mtx;
|
|
mtx[0][0] = scaleX * cos;
|
|
mtx[0][1] = -scaleX * sin;
|
|
mtx[0][2] = 0.0f;
|
|
mtx[0][3] = tilingX + scaleX * (sin * (tilingY + transY) - cos * (tilingX + transX));
|
|
|
|
mtx[1][0] = scaleY * sin;
|
|
mtx[1][1] = scaleY * cos;
|
|
mtx[1][2] = 0.0f;
|
|
mtx[1][3] = tilingY + -scaleY * (sin * (tilingX + transX) + cos * (tilingY + transY));
|
|
|
|
mtx[2][0] = 0.0f;
|
|
mtx[2][1] = 0.0f;
|
|
mtx[2][2] = 1.0f;
|
|
mtx[2][3] = 0.0f;
|
|
|
|
GXLoadTexMtxImm(mtx, GX_TEXMTX0, GX_MTX2x4);
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY);
|
|
GXEnableTexOffsets(GX_TEXCOORD0, GX_TRUE, GX_TRUE);
|
|
}
|
|
|
|
/* 802602F0-8026031C .text exec__29JPADrawExecLoadDefaultTextureFPC14JPADrawContext */
|
|
void JPADrawExecLoadDefaultTexture::exec(const JPADrawContext* pDC) {
|
|
pDC->mpTextureResource->loadDefaultTexture(GX_TEXMAP0);
|
|
}
|
|
|
|
/* 8026031C-80260364 .text exec__22JPADrawExecLoadTextureFPC14JPADrawContext */
|
|
void JPADrawExecLoadTexture::exec(const JPADrawContext* pDC) {
|
|
pDC->mpTextureResource->load(pDC->mpDraw->mTexIdx, GX_TEXMAP0);
|
|
}
|
|
|
|
/* 80260364-802603A4 .text exec__23JPADrawExecSetPointSizeFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecSetPointSize::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
GXSetPointSize(JPADrawContext::pcb->mGlobalScaleX * ptcl->mScaleX, GX_TO_ONE);
|
|
}
|
|
|
|
/* 802603A4-802603E4 .text exec__23JPADrawExecSetLineWidthFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecSetLineWidth::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
GXSetLineWidth(JPADrawContext::pcb->mGlobalScaleX * ptcl->mScaleX, GX_TO_ONE);
|
|
}
|
|
|
|
/* 802603E4-802604AC .text exec__30JPADrawExecRegisterPrmColorAnmFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRegisterPrmColorAnm::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
GXColor prm = ptcl->mPrmColor;
|
|
prm.r = JPA_U8_THRE(prm.r, JPADrawContext::pcb->mPrmColor.r);
|
|
prm.g = JPA_U8_THRE(prm.g, JPADrawContext::pcb->mPrmColor.g);
|
|
prm.b = JPA_U8_THRE(prm.b, JPADrawContext::pcb->mPrmColor.b);
|
|
u8 a = JPA_U8_THRE(prm.a, JPADrawContext::pcb->mPrmColor.a);
|
|
prm.a = ptcl->mAlphaOut * a;
|
|
GXSetTevColor(GX_TEVREG0, prm);
|
|
}
|
|
|
|
/* 802604AC-80260578 .text exec__30JPADrawExecRegisterPrmAlphaAnmFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRegisterPrmAlphaAnm::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
GXColor prm = pDC->mpDraw->mPrmColor;
|
|
prm.r = JPA_U8_THRE(prm.r, JPADrawContext::pcb->mPrmColor.r);
|
|
prm.g = JPA_U8_THRE(prm.g, JPADrawContext::pcb->mPrmColor.g);
|
|
prm.b = JPA_U8_THRE(prm.b, JPADrawContext::pcb->mPrmColor.b);
|
|
u8 a = JPA_U8_THRE(prm.a, JPADrawContext::pcb->mPrmColor.a);
|
|
prm.a = ptcl->mAlphaOut * a;
|
|
GXSetTevColor(GX_TEVREG0, prm);
|
|
}
|
|
|
|
/* 80260578-802605FC .text exec__30JPADrawExecRegisterEnvColorAnmFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRegisterEnvColorAnm::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
GXColor env = ptcl->mEnvColor;
|
|
env.r = JPA_U8_THRE(env.r, JPADrawContext::pcb->mEnvColor.r);
|
|
env.g = JPA_U8_THRE(env.g, JPADrawContext::pcb->mEnvColor.g);
|
|
env.b = JPA_U8_THRE(env.b, JPADrawContext::pcb->mEnvColor.b);
|
|
GXSetTevColor(GX_TEVREG1, env);
|
|
}
|
|
|
|
/* 802605FC-80260728 .text exec__26JPADrawExecRegisterPrmCEnvFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRegisterPrmCEnv::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
GXColor prm = ptcl->mPrmColor;
|
|
GXColor env = ptcl->mEnvColor;
|
|
prm.r = JPA_U8_THRE(prm.r, JPADrawContext::pcb->mPrmColor.r);
|
|
prm.g = JPA_U8_THRE(prm.g, JPADrawContext::pcb->mPrmColor.g);
|
|
prm.b = JPA_U8_THRE(prm.b, JPADrawContext::pcb->mPrmColor.b);
|
|
u8 a = JPA_U8_THRE(prm.a, JPADrawContext::pcb->mPrmColor.a);
|
|
prm.a = ptcl->mAlphaOut * a;
|
|
env.r = JPA_U8_THRE(env.r, JPADrawContext::pcb->mEnvColor.r);
|
|
env.g = JPA_U8_THRE(env.g, JPADrawContext::pcb->mEnvColor.g);
|
|
env.b = JPA_U8_THRE(env.b, JPADrawContext::pcb->mEnvColor.b);
|
|
GXSetTevColor(GX_TEVREG0, prm);
|
|
GXSetTevColor(GX_TEVREG1, env);
|
|
}
|
|
|
|
/* 80260728-80260858 .text exec__26JPADrawExecRegisterPrmAEnvFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRegisterPrmAEnv::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
GXColor prm = pDC->mpDraw->mPrmColor;
|
|
GXColor env = ptcl->mEnvColor;
|
|
prm.r = JPA_U8_THRE(prm.r, JPADrawContext::pcb->mPrmColor.r);
|
|
prm.g = JPA_U8_THRE(prm.g, JPADrawContext::pcb->mPrmColor.g);
|
|
prm.b = JPA_U8_THRE(prm.b, JPADrawContext::pcb->mPrmColor.b);
|
|
u8 a = JPA_U8_THRE(prm.a, JPADrawContext::pcb->mPrmColor.a);
|
|
prm.a = ptcl->mAlphaOut * a;
|
|
env.r = JPA_U8_THRE(env.r, JPADrawContext::pcb->mEnvColor.r);
|
|
env.g = JPA_U8_THRE(env.g, JPADrawContext::pcb->mEnvColor.g);
|
|
env.b = JPA_U8_THRE(env.b, JPADrawContext::pcb->mEnvColor.b);
|
|
GXSetTevColor(GX_TEVREG0, prm);
|
|
GXSetTevColor(GX_TEVREG1, env);
|
|
}
|
|
|
|
/* 80260858-80260B68 .text exec__20JPADrawExecSetTexMtxFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecSetTexMtx::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
s32 tick = ptcl->mCurFrame;
|
|
f32 tilingX = 0.5f * pDC->pbsp->getTilingX();
|
|
f32 tilingY = 0.5f * pDC->pbsp->getTilingY();
|
|
f32 transX = tick * pDC->pbsp->getTexScrollTransX() + pDC->pbsp->getTexStaticTransX();
|
|
f32 transY = tick * pDC->pbsp->getTexScrollTransY() + pDC->pbsp->getTexStaticTransY();
|
|
f32 scaleX = tick * pDC->pbsp->getTexScrollScaleX() + pDC->pbsp->getTexStaticScaleX();
|
|
f32 scaleY = tick * pDC->pbsp->getTexScrollScaleY() + pDC->pbsp->getTexStaticScaleY();
|
|
s32 angle = DEG_TO_RAD(tick * pDC->pbsp->getTexScrollRotate());
|
|
f32 sin = JMASSin(angle);
|
|
f32 cos = JMASCos(angle);
|
|
|
|
Mtx mtx;
|
|
mtx[0][0] = scaleX * cos;
|
|
mtx[0][1] = -scaleX * sin;
|
|
mtx[0][2] = 0.0f;
|
|
mtx[0][3] = tilingX + (scaleX * ((sin * (tilingY + transY)) - (cos * (tilingX + transX))));
|
|
|
|
mtx[1][0] = scaleY * sin;
|
|
mtx[1][1] = scaleY * cos;
|
|
mtx[1][2] = 0.0f;
|
|
mtx[1][3] = tilingY + (-scaleY * ((sin * (tilingX + transX)) + (cos * (tilingY + transY))));
|
|
|
|
mtx[2][0] = 0.0f;
|
|
mtx[2][1] = 0.0f;
|
|
mtx[2][2] = 1.0f;
|
|
mtx[2][3] = 0.0f;
|
|
|
|
GXLoadTexMtxImm(mtx, GX_TEXMTX0, GX_MTX2x4);
|
|
}
|
|
|
|
/* 80260B68-80260BAC .text exec__22JPADrawExecLoadTextureFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecLoadTexture::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
pDC->mpTextureResource->load(ptcl->mTexIdx, GX_TEXMAP0);
|
|
}
|
|
|
|
/* 80260BAC-80260D24 .text exec__20JPADrawExecBillBoardFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecBillBoard::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
if (ptcl->isInvisibleParticle())
|
|
return;
|
|
|
|
f32 scaleX = ptcl->mScaleX;
|
|
f32 scaleY = ptcl->mScaleY;
|
|
|
|
f32 x0 = scaleX * (JPADrawContext::pcb->mGlobalScaleX - JPADrawContext::pcb->mPivotX);
|
|
f32 y0 = scaleY * (JPADrawContext::pcb->mGlobalScaleY - JPADrawContext::pcb->mPivotY);
|
|
scaleX *= (JPADrawContext::pcb->mGlobalScaleX + JPADrawContext::pcb->mPivotX);
|
|
scaleY *= (JPADrawContext::pcb->mGlobalScaleY + JPADrawContext::pcb->mPivotY);
|
|
|
|
JGeometry::TVec3<f32> pt;
|
|
pt.set(ptcl->mPosition);
|
|
MTXMultVec(JPADrawContext::pcb->mDrawMtxPtr, pt, &pt);
|
|
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
|
GXPosition3f32(-scaleX + pt.x, +scaleY + pt.y, pt.z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[0].x, JPADrawContext::pcb->mTexCoordPt[0].y);
|
|
GXPosition3f32(+x0 + pt.x, +scaleY + pt.y, pt.z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[1].x, JPADrawContext::pcb->mTexCoordPt[1].y);
|
|
GXPosition3f32(+x0 + pt.x, -y0 + pt.y, pt.z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[2].x, JPADrawContext::pcb->mTexCoordPt[2].y);
|
|
GXPosition3f32(-scaleX + pt.x, -y0 + pt.y, pt.z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[3].x, JPADrawContext::pcb->mTexCoordPt[3].y);
|
|
GXEnd();
|
|
}
|
|
|
|
/* 80260D24-80260F2C .text exec__23JPADrawExecRotBillBoardFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRotBillBoard::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
if (ptcl->isInvisibleParticle())
|
|
return;
|
|
|
|
f32 sin = JMASSin(ptcl->mRotateAngle);
|
|
f32 cos = JMASCos(ptcl->mRotateAngle);
|
|
|
|
f32 scaleX = ptcl->mScaleX;
|
|
f32 scaleY = ptcl->mScaleY;
|
|
|
|
f32 x0 = -ptcl->mScaleX * (JPADrawContext::pcb->mGlobalScaleX + JPADrawContext::pcb->mPivotX);
|
|
f32 y0 = +ptcl->mScaleY * (JPADrawContext::pcb->mGlobalScaleY + JPADrawContext::pcb->mPivotY);
|
|
f32 x1 = +ptcl->mScaleX * (JPADrawContext::pcb->mGlobalScaleX - JPADrawContext::pcb->mPivotX);
|
|
f32 y1 = -ptcl->mScaleY * (JPADrawContext::pcb->mGlobalScaleY - JPADrawContext::pcb->mPivotY);
|
|
|
|
JGeometry::TVec3<f32> pt;
|
|
pt.set(ptcl->mPosition);
|
|
MTXMultVec(JPADrawContext::pcb->mDrawMtxPtr, pt, &pt);
|
|
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
|
GXPosition3f32((x0 * cos - y0 * sin) + pt.x, (x0 * sin + y0 * cos) + pt.y, pt.z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[0].x, JPADrawContext::pcb->mTexCoordPt[0].y);
|
|
GXPosition3f32((x1 * cos - y0 * sin) + pt.x, (x1 * sin + y0 * cos) + pt.y, pt.z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[1].x, JPADrawContext::pcb->mTexCoordPt[1].y);
|
|
GXPosition3f32((x1 * cos - y1 * sin) + pt.x, (x1 * sin + y1 * cos) + pt.y, pt.z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[2].x, JPADrawContext::pcb->mTexCoordPt[2].y);
|
|
GXPosition3f32((x0 * cos - y1 * sin) + pt.x, (x0 * sin + y1 * cos) + pt.y, pt.z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[3].x, JPADrawContext::pcb->mTexCoordPt[3].y);
|
|
GXEnd();
|
|
}
|
|
|
|
/* 80260F2C-8026110C .text exec__21JPADrawExecYBillBoardFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecYBillBoard::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026110C-8026134C .text exec__24JPADrawExecRotYBillBoardFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRotYBillBoard::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026134C-80261368 .text dirTypeVel__FP15JPABaseParticleP14JPABaseEmitterRQ29JGeometry8TVec3<f> */
|
|
void dirTypeVel(JPABaseParticle* ptcl, JPABaseEmitter* emtr, JGeometry::TVec3<f32>& out) {
|
|
out.set(ptcl->mVelocity);
|
|
}
|
|
|
|
/* 80261368-80261384 .text dirTypePos__FP15JPABaseParticleP14JPABaseEmitterRQ29JGeometry8TVec3<f> */
|
|
void dirTypePos(JPABaseParticle* ptcl, JPABaseEmitter* emtr, JGeometry::TVec3<f32>& out) {
|
|
out.set(ptcl->mLocalPosition);
|
|
}
|
|
|
|
/* 80261384-802613C4 .text dirTypePosInv__FP15JPABaseParticleP14JPABaseEmitterRQ29JGeometry8TVec3<f> */
|
|
void dirTypePosInv(JPABaseParticle* ptcl, JPABaseEmitter* emtr, JGeometry::TVec3<f32>& out) {
|
|
out.set(ptcl->mLocalPosition);
|
|
out.negate();
|
|
}
|
|
|
|
/* 802613C4-802613E8 .text dirTypeEmtrDir__FP15JPABaseParticleP14JPABaseEmitterRQ29JGeometry8TVec3<f> */
|
|
void dirTypeEmtrDir(JPABaseParticle* ptcl, JPABaseEmitter* emtr, JGeometry::TVec3<f32>& out) {
|
|
out.set(JPABaseEmitter::emtrInfo.mgReRDir);
|
|
}
|
|
|
|
/* 802613E8-802614A8 .text dirTypePrevPtcl__FP15JPABaseParticleP14JPABaseEmitterRQ29JGeometry8TVec3<f> */
|
|
void dirTypePrevPtcl(JPABaseParticle* ptcl, JPABaseEmitter* emtr, JGeometry::TVec3<f32>& out) {
|
|
JGeometry::TVec3<f32> pos;
|
|
pos.set(ptcl->mPosition);
|
|
JSULink<JPABaseParticle>* prev = ptcl->getLinkBufferPtr()->getPrev();
|
|
if (prev != NULL) {
|
|
out.set(prev->getObject()->mPosition);
|
|
} else {
|
|
emtr->calcEmitterGlobalPosition(out);
|
|
}
|
|
out.x -= pos.x;
|
|
out.y -= pos.y;
|
|
out.z -= pos.z;
|
|
}
|
|
|
|
/* 802614A8-802614E8 .text rotTypeY__FffRA3_A4_f */
|
|
void rotTypeY(f32 sin, f32 cos, Mtx& out) {
|
|
out[0][0] = cos;
|
|
out[0][1] = 0.0f;
|
|
out[0][2] = -sin;
|
|
out[0][3] = 0.0f;
|
|
|
|
out[1][0] = 0.0f;
|
|
out[1][1] = 1.0f;
|
|
out[1][2] = 0.0f;
|
|
out[1][3] = 0.0f;
|
|
|
|
out[2][0] = sin;
|
|
out[2][1] = 0.0f;
|
|
out[2][2] = cos;
|
|
out[2][3] = 0.0f;
|
|
}
|
|
|
|
/* 802614E8-80261528 .text rotTypeX__FffRA3_A4_f */
|
|
void rotTypeX(f32 sin, f32 cos, Mtx& out) {
|
|
out[0][0] = 1.0f;
|
|
out[0][1] = 0.0f;
|
|
out[0][2] = 0.0f;
|
|
out[0][3] = 0.0f;
|
|
|
|
out[1][0] = 0.0f;
|
|
out[1][1] = cos;
|
|
out[1][2] = -sin;
|
|
out[1][3] = 0.0f;
|
|
|
|
out[2][0] = 0.0f;
|
|
out[2][1] = sin;
|
|
out[2][2] = cos;
|
|
out[2][3] = 0.0f;
|
|
}
|
|
|
|
/* 80261528-80261568 .text rotTypeZ__FffRA3_A4_f */
|
|
void rotTypeZ(f32 sin, f32 cos, Mtx& out) {
|
|
out[0][0] = cos;
|
|
out[0][1] = -sin;
|
|
out[0][2] = 0.0f;
|
|
out[0][3] = 0.0f;
|
|
|
|
out[1][0] = sin;
|
|
out[1][1] = cos;
|
|
out[1][2] = 0.0f;
|
|
out[1][3] = 0.0f;
|
|
|
|
out[2][0] = 0.0f;
|
|
out[2][1] = 0.0f;
|
|
out[2][2] = 1.0f;
|
|
out[2][3] = 0.0f;
|
|
}
|
|
|
|
/* 80261568-802615C4 .text rotTypeXYZ__FffRA3_A4_f */
|
|
void rotTypeXYZ(f32 sin, f32 cos, Mtx& out) {
|
|
f32 a, b, c;
|
|
a = (1.0f - cos) * (1.0f / 3.0f);
|
|
c = a + (0.57735f * sin);
|
|
b = a - (0.57735f * sin);
|
|
a = a + cos;
|
|
|
|
out[0][0] = a;
|
|
out[0][1] = b;
|
|
out[0][2] = c;
|
|
out[0][3] = 0.0f;
|
|
|
|
out[1][0] = c;
|
|
out[1][1] = a;
|
|
out[1][2] = b;
|
|
out[1][3] = 0.0f;
|
|
|
|
out[2][0] = b;
|
|
out[2][1] = c;
|
|
out[2][2] = a;
|
|
out[2][3] = 0.0f;
|
|
}
|
|
|
|
/* 802615C4-8026161C .text rotTypeYJiggle__FffRA3_A4_f */
|
|
void rotTypeYJiggle(f32 sin, f32 cos, Mtx& out) {
|
|
out[0][0] = cos;
|
|
out[0][1] = -sin * 0.207912f;
|
|
out[0][2] = -sin * 0.978148f;
|
|
out[0][3] = 0.0f;
|
|
|
|
out[1][0] = 0.0f;
|
|
out[1][1] = 0.978148f;
|
|
out[1][2] = -0.207912f;
|
|
out[1][3] = 0.0f;
|
|
|
|
out[2][0] = sin;
|
|
out[2][1] = cos * 0.207912f;
|
|
out[2][2] = cos * 0.978148f;
|
|
out[2][3] = 0.0f;
|
|
}
|
|
|
|
/* 8026161C-80261654 .text basePlaneTypeXY__FffffPQ29JGeometry8TVec3<f> */
|
|
void basePlaneTypeXY(f32 x0, f32 x1, f32 y0, f32 y1, JGeometry::TVec3<f32>* out) {
|
|
out[0].set(x0, y0, 0.0f);
|
|
out[1].set(x1, y0, 0.0f);
|
|
out[2].set(x1, y1, 0.0f);
|
|
out[3].set(x0, y1, 0.0f);
|
|
}
|
|
|
|
/* 80261654-8026168C .text basePlaneTypeXZ__FffffPQ29JGeometry8TVec3<f> */
|
|
void basePlaneTypeXZ(f32 x0, f32 x1, f32 y0, f32 y1, JGeometry::TVec3<f32>* out) {
|
|
out[0].set(x0, 0.0f, y1);
|
|
out[1].set(x1, 0.0f, y1);
|
|
out[2].set(x1, 0.0f, y0);
|
|
out[3].set(x0, 0.0f, y0);
|
|
}
|
|
|
|
/* 8026168C-80261AD0 .text exec__22JPADrawExecDirectionalFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecDirectional::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80261AD0-80261F60 .text exec__25JPADrawExecRotDirectionalFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRotDirectional::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80261F60-802624D4 .text exec__27JPADrawExecDirectionalCrossFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecDirectionalCross::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 802624D4-80262A98 .text exec__30JPADrawExecRotDirectionalCrossFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRotDirectionalCross::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80262A98-80262DC0 .text exec__23JPADrawExecDirBillBoardFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecDirBillBoard::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80262DC0-80262FBC .text exec__19JPADrawExecRotationFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRotation::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
if (ptcl->isInvisibleParticle())
|
|
return;
|
|
|
|
f32 sin = JMASSin(ptcl->mRotateAngle);
|
|
f32 cos = JMASCos(ptcl->mRotateAngle);
|
|
|
|
Mtx rotMtx;
|
|
JGeometry::TVec3<f32> pt[4];
|
|
JPADrawContext::pcb->mBasePlaneTypeFunc(
|
|
-ptcl->mScaleX * (JPADrawContext::pcb->mGlobalScaleX + JPADrawContext::pcb->mPivotX),
|
|
+ptcl->mScaleX * (JPADrawContext::pcb->mGlobalScaleX - JPADrawContext::pcb->mPivotX),
|
|
+ptcl->mScaleY * (JPADrawContext::pcb->mGlobalScaleY + JPADrawContext::pcb->mPivotY),
|
|
-ptcl->mScaleY * (JPADrawContext::pcb->mGlobalScaleY - JPADrawContext::pcb->mPivotY),
|
|
pt
|
|
);
|
|
JPADrawContext::pcb->mRotTypeFunc(sin, cos, rotMtx);
|
|
|
|
MTXMultVecArray(rotMtx, pt, pt, ARRAY_SIZE(pt));
|
|
f32 x = ptcl->mPosition.x;
|
|
f32 y = ptcl->mPosition.y;
|
|
f32 z = ptcl->mPosition.z;
|
|
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
|
GXPosition3f32(pt[0].x + x, pt[0].y + y, pt[0].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[0].x, JPADrawContext::pcb->mTexCoordPt[0].y);
|
|
GXPosition3f32(pt[1].x + x, pt[1].y + y, pt[1].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[1].x, JPADrawContext::pcb->mTexCoordPt[1].y);
|
|
GXPosition3f32(pt[2].x + x, pt[2].y + y, pt[2].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[2].x, JPADrawContext::pcb->mTexCoordPt[2].y);
|
|
GXPosition3f32(pt[3].x + x, pt[3].y + y, pt[3].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[3].x, JPADrawContext::pcb->mTexCoordPt[3].y);
|
|
GXEnd();
|
|
}
|
|
|
|
/* 80262FBC-802632EC .text exec__24JPADrawExecRotationCrossFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecRotationCross::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
if (ptcl->isInvisibleParticle())
|
|
return;
|
|
|
|
f32 sin = JMASSin(ptcl->mRotateAngle);
|
|
f32 cos = JMASCos(ptcl->mRotateAngle);
|
|
|
|
f32 x0 = -ptcl->mScaleX * (JPADrawContext::pcb->mGlobalScaleX + JPADrawContext::pcb->mPivotX);
|
|
f32 y0 = +ptcl->mScaleY * (JPADrawContext::pcb->mGlobalScaleY + JPADrawContext::pcb->mPivotY);
|
|
f32 x1 = +ptcl->mScaleX * (JPADrawContext::pcb->mGlobalScaleX - JPADrawContext::pcb->mPivotX);
|
|
f32 y1 = -ptcl->mScaleY * (JPADrawContext::pcb->mGlobalScaleY - JPADrawContext::pcb->mPivotY);
|
|
|
|
JGeometry::TVec3<f32> pt[8];
|
|
pt[0].set(x0, y0, 0.0f);
|
|
pt[1].set(x1, y0, 0.0f);
|
|
pt[2].set(x1, y1, 0.0f);
|
|
pt[3].set(x0, y1, 0.0f);
|
|
|
|
f32 x2 = (x1 + x0) / 2.0f;
|
|
f32 z0 = (x1 - x0) / 2.0f;
|
|
f32 z1 = (x0 - x1) / 2.0f;
|
|
pt[4].set(x2, y0, z0);
|
|
pt[5].set(x2, y0, z1);
|
|
pt[6].set(x2, y1, z1);
|
|
pt[7].set(x2, y1, z0);
|
|
|
|
Mtx rotMtx;
|
|
JPADrawContext::pcb->mRotTypeFunc(sin, cos, rotMtx);
|
|
|
|
MTXMultVecArray(rotMtx, pt, pt, ARRAY_SIZE(pt));
|
|
f32 x = ptcl->mPosition.x;
|
|
f32 y = ptcl->mPosition.y;
|
|
f32 z = ptcl->mPosition.z;
|
|
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, 8);
|
|
GXPosition3f32(pt[0].x + x, pt[0].y + y, pt[0].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[0].x, JPADrawContext::pcb->mTexCoordPt[0].y);
|
|
GXPosition3f32(pt[1].x + x, pt[1].y + y, pt[1].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[1].x, JPADrawContext::pcb->mTexCoordPt[1].y);
|
|
GXPosition3f32(pt[2].x + x, pt[2].y + y, pt[2].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[2].x, JPADrawContext::pcb->mTexCoordPt[2].y);
|
|
GXPosition3f32(pt[3].x + x, pt[3].y + y, pt[3].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[3].x, JPADrawContext::pcb->mTexCoordPt[3].y);
|
|
GXPosition3f32(pt[4].x + x, pt[4].y + y, pt[4].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[0].x, JPADrawContext::pcb->mTexCoordPt[0].y);
|
|
GXPosition3f32(pt[5].x + x, pt[5].y + y, pt[5].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[1].x, JPADrawContext::pcb->mTexCoordPt[1].y);
|
|
GXPosition3f32(pt[6].x + x, pt[6].y + y, pt[6].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[2].x, JPADrawContext::pcb->mTexCoordPt[2].y);
|
|
GXPosition3f32(pt[7].x + x, pt[7].y + y, pt[7].z + z);
|
|
GXTexCoord2f32(JPADrawContext::pcb->mTexCoordPt[3].x, JPADrawContext::pcb->mTexCoordPt[3].y);
|
|
GXEnd();
|
|
}
|
|
|
|
/* 802632EC-80263380 .text exec__16JPADrawExecPointFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecPoint::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
if (ptcl->isInvisibleParticle())
|
|
return;
|
|
|
|
JGeometry::TVec3<f32> pos;
|
|
pos.set(ptcl->mPosition);
|
|
GXBegin(GX_POINTS, GX_VTXFMT0, 1);
|
|
GXPosition3f32(pos.x, pos.y, pos.z);
|
|
GXTexCoord2f32(0.0f, 0.0f);
|
|
GXEnd();
|
|
}
|
|
|
|
/* 80263380-80263508 .text exec__15JPADrawExecLineFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecLine::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
if (ptcl->isInvisibleParticle())
|
|
return;
|
|
|
|
JGeometry::TVec3<f32> pt0;
|
|
JGeometry::TVec3<f32> vel;
|
|
|
|
pt0.set(ptcl->mPosition);
|
|
vel.set(ptcl->mVelocity);
|
|
if (!vel.isZero()) {
|
|
vel.normalize();
|
|
|
|
f32 size = JPADrawContext::pcb->mGlobalScaleY * ptcl->mScaleY;
|
|
vel.scale(size);
|
|
JGeometry::TVec3<f32> pt1;
|
|
pt1.sub(pt0, vel);
|
|
|
|
GXBegin(GX_LINES, GX_VTXFMT0, 2);
|
|
GXPosition3f32(pt0.x, pt0.y, pt0.z);
|
|
GXTexCoord2f32(0.0f, 0.0f);
|
|
GXPosition3f32(pt1.x, pt1.y, pt1.z);
|
|
GXTexCoord2f32(0.0f, 1.0f);
|
|
GXEnd();
|
|
}
|
|
}
|
|
|
|
/* 80263508-80263510 .text stripeGetNext__FP26JSULink<15JPABaseParticle> */
|
|
JSULink<JPABaseParticle>* stripeGetNext(JSULink<JPABaseParticle>* link) {
|
|
return link->getNext();
|
|
}
|
|
|
|
/* 80263510-80263518 .text stripeGetPrev__FP26JSULink<15JPABaseParticle> */
|
|
JSULink<JPABaseParticle>* stripeGetPrev(JSULink<JPABaseParticle>* link) {
|
|
return link->getPrev();
|
|
}
|
|
|
|
/* 80263518-80263A68 .text exec__17JPADrawExecStripeFPC14JPADrawContext */
|
|
void JPADrawExecStripe::exec(const JPADrawContext* pDC) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80263A68-802643B0 .text exec__22JPADrawExecStripeCrossFPC14JPADrawContext */
|
|
void JPADrawExecStripeCross::exec(const JPADrawContext* pDC) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 802643B0-802644B4 .text exec__33JPADrawExecRegisterColorEmitterPEFPC14JPADrawContext */
|
|
void JPADrawExecRegisterColorEmitterPE::exec(const JPADrawContext* pDC) {
|
|
GXColor prm = pDC->mpDraw->mPrmColor;
|
|
GXColor env = pDC->mpDraw->mEnvColor;
|
|
prm.r = JPA_U8_THRE(prm.r, JPADrawContext::pcb->mPrmColor.r);
|
|
prm.g = JPA_U8_THRE(prm.g, JPADrawContext::pcb->mPrmColor.g);
|
|
prm.b = JPA_U8_THRE(prm.b, JPADrawContext::pcb->mPrmColor.b);
|
|
prm.a = JPA_U8_THRE(prm.a, JPADrawContext::pcb->mPrmColor.a);
|
|
env.r = JPA_U8_THRE(env.r, JPADrawContext::pcb->mEnvColor.r);
|
|
env.g = JPA_U8_THRE(env.g, JPADrawContext::pcb->mEnvColor.g);
|
|
env.b = JPA_U8_THRE(env.b, JPADrawContext::pcb->mEnvColor.b);
|
|
GXSetTevColor(GX_TEVREG0, prm);
|
|
GXSetTevColor(GX_TEVREG1, env);
|
|
}
|
|
|
|
/* 802644B4-80264554 .text exec__32JPADrawExecRegisterColorEmitterPFPC14JPADrawContext */
|
|
void JPADrawExecRegisterColorEmitterP::exec(const JPADrawContext* pDC) {
|
|
GXColor prm = pDC->mpDraw->mPrmColor;
|
|
prm.r = JPA_U8_THRE(prm.r, JPADrawContext::pcb->mPrmColor.r);
|
|
prm.g = JPA_U8_THRE(prm.g, JPADrawContext::pcb->mPrmColor.g);
|
|
prm.b = JPA_U8_THRE(prm.b, JPADrawContext::pcb->mPrmColor.b);
|
|
prm.a = JPA_U8_THRE(prm.a, JPADrawContext::pcb->mPrmColor.a);
|
|
GXSetTevColor(GX_TEVREG0, prm);
|
|
}
|
|
|
|
/* 80264554-802645DC .text exec__32JPADrawExecRegisterColorEmitterEFPC14JPADrawContext */
|
|
void JPADrawExecRegisterColorEmitterE::exec(const JPADrawContext* pDC) {
|
|
GXColor env = pDC->mpDraw->mEnvColor;
|
|
env.r = JPA_U8_THRE(env.r, JPADrawContext::pcb->mEnvColor.r);
|
|
env.g = JPA_U8_THRE(env.g, JPADrawContext::pcb->mEnvColor.g);
|
|
env.b = JPA_U8_THRE(env.b, JPADrawContext::pcb->mEnvColor.b);
|
|
GXSetTevColor(GX_TEVREG1, env);
|
|
}
|
|
|
|
/* 802645DC-80264708 .text exec__31JPADrawExecRegisterColorChildPEFPC14JPADrawContext */
|
|
void JPADrawExecRegisterColorChildPE::exec(const JPADrawContext* pDC) {
|
|
GXColor prm = pDC->pssp->getPrm();
|
|
GXColor env = pDC->pssp->getEnv();
|
|
prm.r = JPA_U8_THRE(prm.r, JPADrawContext::pcb->mPrmColor.r);
|
|
prm.g = JPA_U8_THRE(prm.g, JPADrawContext::pcb->mPrmColor.g);
|
|
prm.b = JPA_U8_THRE(prm.b, JPADrawContext::pcb->mPrmColor.b);
|
|
prm.a = JPA_U8_THRE(prm.a, JPADrawContext::pcb->mPrmColor.a);
|
|
env.r = JPA_U8_THRE(env.r, JPADrawContext::pcb->mEnvColor.r);
|
|
env.g = JPA_U8_THRE(env.g, JPADrawContext::pcb->mEnvColor.g);
|
|
env.b = JPA_U8_THRE(env.b, JPADrawContext::pcb->mEnvColor.b);
|
|
GXSetTevColor(GX_TEVREG0, prm);
|
|
GXSetTevColor(GX_TEVREG1, env);
|
|
}
|
|
|
|
/* 80264708-80264774 .text calc__19JPADrawCalcColorPrmFPC14JPADrawContext */
|
|
void JPADrawCalcColorPrm::calc(const JPADrawContext* pDC) {
|
|
pDC->mpDraw->mPrmColor = pDC->pbsp->getPrmColor(JPADrawContext::pcb->mColorAnmFrame);
|
|
}
|
|
|
|
/* 80264774-802647E0 .text calc__19JPADrawCalcColorEnvFPC14JPADrawContext */
|
|
void JPADrawCalcColorEnv::calc(const JPADrawContext* pDC) {
|
|
pDC->mpDraw->mEnvColor = pDC->pbsp->getEnvColor(JPADrawContext::pcb->mColorAnmFrame);
|
|
}
|
|
|
|
/* 802647E0-8026486C .text calc__30JPADrawCalcColorAnmFrameNormalFPC14JPADrawContext */
|
|
void JPADrawCalcColorAnmFrameNormal::calc(const JPADrawContext* pDC) {
|
|
s32 tick = pDC->pbe->mTick.getFrame();
|
|
s32 frame = (tick < pDC->pbsp->getColorRegAnmMaxFrm()) ? tick : pDC->pbsp->getColorRegAnmMaxFrm();
|
|
JPADrawContext::pcb->mColorAnmFrame = frame;
|
|
}
|
|
|
|
/* 8026486C-802648E0 .text calc__30JPADrawCalcColorAnmFrameRepeatFPC14JPADrawContext */
|
|
void JPADrawCalcColorAnmFrameRepeat::calc(const JPADrawContext* pDC) {
|
|
f32 tick = pDC->pbe->mTick.getFrame();
|
|
s32 frame = ((u32)tick) % (pDC->pbsp->getColorRegAnmMaxFrm() + 1);
|
|
JPADrawContext::pcb->mColorAnmFrame = frame;
|
|
}
|
|
|
|
/* 802648E0-8026495C .text calc__31JPADrawCalcColorAnmFrameReverseFPC14JPADrawContext */
|
|
void JPADrawCalcColorAnmFrameReverse::calc(const JPADrawContext* pDC) {
|
|
/* Nonmatching */
|
|
s32 tick = pDC->pbe->mTick.getFrame();
|
|
s32 frame = tick / pDC->pbsp->getColorRegAnmMaxFrm();
|
|
JPADrawContext::pcb->mColorAnmFrame = frame;
|
|
}
|
|
|
|
/* 8026495C-8026496C .text calc__29JPADrawCalcColorAnmFrameMergeFPC14JPADrawContext */
|
|
void JPADrawCalcColorAnmFrameMerge::calc(const JPADrawContext* pDC) {
|
|
JPADrawContext::pcb->mColorAnmFrame = 0;
|
|
}
|
|
|
|
/* 8026496C-8026497C .text calc__30JPADrawCalcColorAnmFrameRandomFPC14JPADrawContext */
|
|
void JPADrawCalcColorAnmFrameRandom::calc(const JPADrawContext* pDC) {
|
|
JPADrawContext::pcb->mColorAnmFrame = 0;
|
|
}
|
|
|
|
/* 8026497C-80264A34 .text calc__32JPADrawCalcTextureAnmIndexNormalFPC14JPADrawContext */
|
|
void JPADrawCalcTextureAnmIndexNormal::calc(const JPADrawContext* pDC) {
|
|
s32 tick = pDC->pbe->mTick.getFrame();
|
|
s32 idx = ((pDC->pbsp->getTextureAnmKeyNum() - 1) < tick) ? pDC->pbsp->getTextureAnmKeyNum() - 1 : tick;
|
|
pDC->mpDraw->mTexIdx = pDC->pTexIdx[pDC->pbsp->getTextureIndex(idx)];
|
|
}
|
|
|
|
/* 80264A34-80264AD0 .text calc__32JPADrawCalcTextureAnmIndexRepeatFPC14JPADrawContext */
|
|
void JPADrawCalcTextureAnmIndexRepeat::calc(const JPADrawContext* pDC) {
|
|
/* Nonmatching */
|
|
f32 tick = pDC->pbe->mTick.getFrame();
|
|
s32 maxFrame = pDC->pbsp->getTextureAnmKeyNum();
|
|
s32 idx = pDC->pbsp->getTextureIndex((s32)tick % maxFrame);
|
|
pDC->mpDraw->mTexIdx = pDC->pTexIdx[idx];
|
|
}
|
|
|
|
/* 80264AD0-80264B80 .text calc__33JPADrawCalcTextureAnmIndexReverseFPC14JPADrawContext */
|
|
void JPADrawCalcTextureAnmIndexReverse::calc(const JPADrawContext* pDC) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80264B80-80264BC8 .text calc__31JPADrawCalcTextureAnmIndexMergeFPC14JPADrawContext */
|
|
void JPADrawCalcTextureAnmIndexMerge::calc(const JPADrawContext* pDC) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80264BC8-80264C10 .text calc__32JPADrawCalcTextureAnmIndexRandomFPC14JPADrawContext */
|
|
void JPADrawCalcTextureAnmIndexRandom::calc(const JPADrawContext* pDC) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80264C10-80264C4C .text exec__19JPADrawExecCallBackFPC14JPADrawContext */
|
|
void JPADrawExecCallBack::exec(const JPADrawContext* pDC) {
|
|
if (pDC->pbe->mpEmitterCallBack != NULL)
|
|
pDC->pbe->mpEmitterCallBack->draw(pDC->pbe);
|
|
}
|
|
|
|
/* 80264C4C-80264C88 .text exec__19JPADrawExecCallBackFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawExecCallBack::exec(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
JPABaseEmitter* pbe = pDC->pbe;
|
|
if (ptcl->mpCallBack2 != NULL)
|
|
ptcl->mpCallBack2->draw(pbe, ptcl);
|
|
}
|
|
|
|
/* 80264C88-80264DB8 .text calc__17JPADrawCalcScaleXFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleX::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
if (JPADrawContext::pcb->mScaleAnmTiming < pDC->pesp->getScaleInTiming()) {
|
|
ptcl->mScaleX = ptcl->mScaleOut * ((pDC->pesp->getIncreaseRateX() * JPADrawContext::pcb->mScaleAnmTiming) + pDC->pesp->getScaleInValueX());
|
|
} else if (JPADrawContext::pcb->mScaleAnmTiming > pDC->pesp->getScaleOutTiming()) {
|
|
ptcl->mScaleX = ptcl->mScaleOut * ((pDC->pesp->getDecreaseRateX() * (JPADrawContext::pcb->mScaleAnmTiming - pDC->pesp->getScaleOutTiming())) + 1.0f);
|
|
} else {
|
|
ptcl->mScaleX = ptcl->mScaleOut;
|
|
}
|
|
}
|
|
|
|
/* 80264DB8-80264EE8 .text calc__17JPADrawCalcScaleYFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleY::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
if (JPADrawContext::pcb->mScaleAnmTiming < pDC->pesp->getScaleInTiming()) {
|
|
ptcl->mScaleY = ptcl->mScaleOut * ((pDC->pesp->getIncreaseRateY() * JPADrawContext::pcb->mScaleAnmTiming) + pDC->pesp->getScaleInValueY());
|
|
} else if (JPADrawContext::pcb->mScaleAnmTiming > pDC->pesp->getScaleOutTiming()) {
|
|
ptcl->mScaleY = ptcl->mScaleOut * ((pDC->pesp->getDecreaseRateY() * (JPADrawContext::pcb->mScaleAnmTiming - pDC->pesp->getScaleOutTiming())) + 1.0f);
|
|
} else {
|
|
ptcl->mScaleY = ptcl->mScaleOut;
|
|
}
|
|
}
|
|
|
|
/* 80264EE8-802650B8 .text calc__24JPADrawCalcScaleXBySpeedFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleXBySpeed::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
JGeometry::TVec3<f32> vel;
|
|
vel.set(ptcl->mVelocity);
|
|
if (JPADrawContext::pcb->mScaleAnmTiming < pDC->pesp->getScaleInTiming()) {
|
|
ptcl->mScaleX = ptcl->mScaleOut * ((pDC->pesp->getIncreaseRateX() * JPADrawContext::pcb->mScaleAnmTiming) + pDC->pesp->getScaleInValueX());
|
|
} else if (JPADrawContext::pcb->mScaleAnmTiming > pDC->pesp->getScaleOutTiming()) {
|
|
ptcl->mScaleX = ptcl->mScaleOut * ((pDC->pesp->getDecreaseRateX() * (JPADrawContext::pcb->mScaleAnmTiming - pDC->pesp->getScaleOutTiming())) + 1.0f);
|
|
} else {
|
|
ptcl->mScaleX = ptcl->mScaleOut;
|
|
}
|
|
ptcl->mScaleX *= vel.length() * 0.01f;
|
|
}
|
|
|
|
/* 802650B8-80265288 .text calc__24JPADrawCalcScaleYBySpeedFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleYBySpeed::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
JGeometry::TVec3<f32> vel;
|
|
vel.set(ptcl->mVelocity);
|
|
if (JPADrawContext::pcb->mScaleAnmTiming < pDC->pesp->getScaleInTiming()) {
|
|
ptcl->mScaleY = ptcl->mScaleOut * ((pDC->pesp->getIncreaseRateY() * JPADrawContext::pcb->mScaleAnmTiming) + pDC->pesp->getScaleInValueY());
|
|
} else if (JPADrawContext::pcb->mScaleAnmTiming > pDC->pesp->getScaleOutTiming()) {
|
|
ptcl->mScaleY = ptcl->mScaleOut * ((pDC->pesp->getDecreaseRateY() * (JPADrawContext::pcb->mScaleAnmTiming - pDC->pesp->getScaleOutTiming())) + 1.0f);
|
|
} else {
|
|
ptcl->mScaleY = ptcl->mScaleOut;
|
|
}
|
|
ptcl->mScaleY *= vel.length() * 0.01f;
|
|
}
|
|
|
|
/* 80265288-80265294 .text calc__23JPADrawCalcScaleCopyX2YFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleCopyX2Y::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
ptcl->mScaleY = ptcl->mScaleX;
|
|
}
|
|
|
|
/* 80265294-802652A4 .text calc__31JPADrawCalcScaleAnmTimingNormalFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleAnmTimingNormal::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
JPADrawContext::pcb->mScaleAnmTiming = ptcl->mCurNormTime;
|
|
}
|
|
|
|
/* 802652A4-80265374 .text calc__32JPADrawCalcScaleAnmTimingRepeatXFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleAnmTimingRepeatX::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
s32 frame = ptcl->mCurFrame;
|
|
JPADrawContext::pcb->mScaleAnmTiming = (frame % pDC->pesp->getAnmCycleX()) / (f32)pDC->pesp->getAnmCycleX();
|
|
}
|
|
|
|
/* 80265374-80265444 .text calc__32JPADrawCalcScaleAnmTimingRepeatYFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleAnmTimingRepeatY::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
s32 frame = ptcl->mCurFrame;
|
|
JPADrawContext::pcb->mScaleAnmTiming = (frame % pDC->pesp->getAnmCycleY()) / (f32)pDC->pesp->getAnmCycleY();
|
|
}
|
|
|
|
/* 80265444-80265588 .text calc__33JPADrawCalcScaleAnmTimingReverseXFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleAnmTimingReverseX::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80265588-802656CC .text calc__33JPADrawCalcScaleAnmTimingReverseYFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcScaleAnmTimingReverseY::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 802656CC-80265734 .text calc__19JPADrawCalcColorPrmFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcColorPrm::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
ptcl->mPrmColor = pDC->pbsp->getPrmColor(JPADrawContext::pcb->mColorAnmFrame);
|
|
}
|
|
|
|
/* 80265734-8026579C .text calc__19JPADrawCalcColorEnvFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcColorEnv::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
ptcl->mEnvColor = pDC->pbsp->getEnvColor(JPADrawContext::pcb->mColorAnmFrame);
|
|
}
|
|
|
|
/* 8026579C-802657E8 .text calc__31JPADrawCalcColorCopyFromEmitterFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcColorCopyFromEmitter::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
ptcl->mPrmColor = pDC->mpDraw->mPrmColor;
|
|
ptcl->mEnvColor = pDC->mpDraw->mEnvColor;
|
|
}
|
|
|
|
/* 802657E8-80265880 .text calc__30JPADrawCalcColorAnmFrameNormalFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcColorAnmFrameNormal::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
s32 tick = ptcl->mCurFrame;
|
|
s32 frame = (tick < pDC->pbsp->getColorRegAnmMaxFrm()) ? (s32)ptcl->mCurFrame : pDC->pbsp->getColorRegAnmMaxFrm();
|
|
JPADrawContext::pcb->mColorAnmFrame = frame;
|
|
}
|
|
|
|
/* 80265880-80265918 .text calc__30JPADrawCalcColorAnmFrameRepeatFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcColorAnmFrameRepeat::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
s32 tick = ptcl->mCurFrame;
|
|
s32 frame = ((ptcl->mLoopOffset & pDC->pbsp->getColLoopOffset()) + tick) % (pDC->pbsp->getColorRegAnmMaxFrm() + 1);
|
|
JPADrawContext::pcb->mColorAnmFrame = frame;
|
|
}
|
|
|
|
/* 80265918-802659C4 .text calc__31JPADrawCalcColorAnmFrameReverseFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcColorAnmFrameReverse::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 802659C4-80265A90 .text calc__29JPADrawCalcColorAnmFrameMergeFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcColorAnmFrameMerge::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
s32 start = ptcl->mLoopOffset & pDC->pbsp->getColLoopOffset();
|
|
s32 maxFrame = pDC->pbsp->getColorRegAnmMaxFrm() + 1;
|
|
s32 frame = (s32)(start + maxFrame * ptcl->mCurNormTime) % maxFrame;
|
|
JPADrawContext::pcb->mColorAnmFrame = frame;
|
|
}
|
|
|
|
/* 80265A90-80265B14 .text calc__30JPADrawCalcColorAnmFrameRandomFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcColorAnmFrameRandom::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
s32 frame = (ptcl->mLoopOffset & pDC->pbsp->getColLoopOffset()) % (pDC->pbsp->getColorRegAnmMaxFrm() + 1);
|
|
JPADrawContext::pcb->mColorAnmFrame = frame;
|
|
}
|
|
|
|
/* 80265B14-80265C40 .text calc__16JPADrawCalcAlphaFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcAlpha::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
f32 time = ptcl->mCurNormTime;
|
|
f32 alpha;
|
|
if (time < pDC->pesp->getAlphaInTiming()) {
|
|
alpha = time * pDC->pesp->getAlphaIncreaseRate() + pDC->pesp->getAlphaInValue();
|
|
} else if (time > pDC->pesp->getAlphaOutTiming()) {
|
|
alpha = pDC->pesp->getAlphaBaseValue() + pDC->pesp->getAlphaDecreaseRate() * (time - pDC->pesp->getAlphaOutTiming());
|
|
} else {
|
|
alpha = pDC->pesp->getAlphaBaseValue();
|
|
}
|
|
ptcl->mAlphaOut = alpha;
|
|
}
|
|
|
|
/* 80265C40-80265D54 .text calc__27JPADrawCalcAlphaFlickNrmSinFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcAlphaFlickNrmSin::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
f32 sin = JMASSin((((s32)ptcl->mCurFrame) * 16384) * ptcl->mAlphaWaveRandom * (1.0f - pDC->pesp->getAlphaWaveParam1()));
|
|
ptcl->mAlphaOut *= ptcl->mAlphaWaveRandom * ((sin - 1.0f) * 0.5f) * pDC->pesp->getAlphaWaveParam3() + 1.0f;
|
|
if (ptcl->mAlphaOut < 0.0f)
|
|
ptcl->mAlphaOut = 0.0f;
|
|
}
|
|
|
|
/* 80265D54-80265EC4 .text calc__27JPADrawCalcAlphaFlickAddSinFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcAlphaFlickAddSin::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
f32 theta = (((s32)ptcl->mCurFrame) * 16384) * ptcl->mAlphaWaveRandom;
|
|
f32 sin2 = JMASSin(theta * (1.0f - pDC->pesp->getAlphaWaveParam2()));
|
|
f32 sin1 = JMASSin(theta * (1.0f - pDC->pesp->getAlphaWaveParam1()));
|
|
ptcl->mAlphaOut *= (ptcl->mAlphaWaveRandom * (pDC->pesp->getAlphaWaveParam3() * (sin2 + sin1) - 2.0f) * 0.5f + 2.0f) * 0.5f;
|
|
if (ptcl->mAlphaOut < 0.0f)
|
|
ptcl->mAlphaOut = 0.0f;
|
|
}
|
|
|
|
/* 80265EC4-80266048 .text calc__28JPADrawCalcAlphaFlickMultSinFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcAlphaFlickMultSin::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
f32 theta = (((s32)ptcl->mCurFrame) * 16384) * ptcl->mAlphaWaveRandom;
|
|
f32 mul3 = (pDC->pesp->getAlphaWaveParam3() * 0.5f) * ptcl->mAlphaWaveRandom;
|
|
f32 sin2 = JMASSin(theta * (1.0f - pDC->pesp->getAlphaWaveParam2()));
|
|
f32 sin1 = JMASSin(theta * (1.0f - pDC->pesp->getAlphaWaveParam1()));
|
|
ptcl->mAlphaOut *= ((mul3 * (sin1 - 1.0f)) + 1.0f) * ((mul3 * (sin2 - 1.0f)) + 1.0f);
|
|
if (ptcl->mAlphaOut < 0.0f)
|
|
ptcl->mAlphaOut = 0.0f;
|
|
}
|
|
|
|
/* 80266048-80266100 .text calc__32JPADrawCalcTextureAnmIndexNormalFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcTextureAnmIndexNormal::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
s32 idx = ((s32)ptcl->mCurFrame < (pDC->pbsp->getTextureAnmKeyNum() - 1)) ? (pDC->pbsp->getTextureAnmKeyNum() - 1) : (s32)ptcl->mCurFrame;
|
|
ptcl->mTexIdx = pDC->pTexIdx[pDC->pbsp->getTextureIndex(idx)];
|
|
}
|
|
|
|
/* 80266100-802661B4 .text calc__32JPADrawCalcTextureAnmIndexRepeatFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcTextureAnmIndexRepeat::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 802661B4-80266284 .text calc__33JPADrawCalcTextureAnmIndexReverseFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcTextureAnmIndexReverse::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80266284-8026636C .text calc__31JPADrawCalcTextureAnmIndexMergeFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcTextureAnmIndexMerge::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026636C-8026640C .text calc__32JPADrawCalcTextureAnmIndexRandomFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcTextureAnmIndexRandom::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026640C-80266420 .text calc__24JPADrawCalcChildAlphaOutFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcChildAlphaOut::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
ptcl->mAlphaOut = 1.0f - ptcl->mCurNormTime;
|
|
}
|
|
|
|
/* 80266420-80266450 .text calc__24JPADrawCalcChildScaleOutFPC14JPADrawContextP15JPABaseParticle */
|
|
void JPADrawCalcChildScaleOut::calc(const JPADrawContext* pDC, JPABaseParticle* ptcl) {
|
|
ptcl->mScaleX = ptcl->mScaleOut * (1.0f - ptcl->mCurNormTime);
|
|
ptcl->mScaleY = ptcl->mAlphaWaveRandom * (1.0f - ptcl->mCurNormTime);
|
|
}
|