mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-09 10:52:25 -04:00
597 lines
21 KiB
C++
597 lines
21 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: JPADraw.cpp
|
|
//
|
|
|
|
#include "JSystem/JParticle/JPADraw.h"
|
|
#include "JSystem/JParticle/JPABaseShape.h"
|
|
#include "JSystem/JParticle/JPAExtraShape.h"
|
|
#include "JSystem/JParticle/JPASweepShape.h"
|
|
#include "JSystem/JParticle/JPAResourceManager.h"
|
|
#include "JSystem/JUtility/JUTAssert.h"
|
|
#include "dolphin/types.h"
|
|
|
|
JPADrawVisitorContainer JPADraw::vc;
|
|
JPADrawClipBoard JPADraw::cb;
|
|
|
|
/* 80267F40-80268634 .text initialize__7JPADrawFP14JPABaseEmitterP18JPATextureResource */
|
|
bool JPADraw::initialize(JPABaseEmitter* emtr, JPATextureResource* texRes) {
|
|
JPADrawContext::pcb = &cb;
|
|
dc.pbe = emtr;
|
|
dc.pbsp = dc.pbe->getEmitterDataBlockInfoPtr()->getBaseShape();
|
|
dc.pesp = dc.pbe->getEmitterDataBlockInfoPtr()->getExtraShape();
|
|
dc.pssp = dc.pbe->getEmitterDataBlockInfoPtr()->getSweepShape();
|
|
dc.petx = dc.pbe->getEmitterDataBlockInfoPtr()->getExTexShape();
|
|
dc.mpDraw = this;
|
|
dc.mpTextureResource = texRes;
|
|
dc.pTexIdx = dc.pbe->getEmitterDataBlockInfoPtr()->getTextureDataBase();
|
|
dc.mpActiveParticles = &dc.pbe->mActiveParticles;
|
|
field_0xc2 = 0;
|
|
mScaleOut = 1.0f;
|
|
|
|
GXColor white = { 0xFF, 0xFF, 0xFF, 0xFF };
|
|
if (dc.pbsp->isEnablePrm()) {
|
|
if (!dc.pbsp->isEnablePrmAnm()) {
|
|
mPrmColor = dc.pbsp->getPrmColor();
|
|
}
|
|
} else {
|
|
mPrmColor = white;
|
|
}
|
|
|
|
if (dc.pbsp->isEnableEnv()) {
|
|
if (!dc.pbsp->isEnableEnvAnm()) {
|
|
mEnvColor = dc.pbsp->getEnvColor();
|
|
}
|
|
} else {
|
|
mEnvColor = white;
|
|
}
|
|
|
|
calcChldVisNum = 0;
|
|
calcPtclVisNum = 0;
|
|
execChldVisNum = 0;
|
|
execPtclVisNum = 0;
|
|
calcEmtrVisNum = 0;
|
|
execEmtrCVisNum = 0;
|
|
execEmtrPVisNum = 0;
|
|
execEmtrVisNum = 0;
|
|
|
|
for (u32 i = 0; i < ARRAY_SIZE(mpExecEmtrVis); i++)
|
|
mpExecEmtrVis[i] = NULL;
|
|
for (u32 i = 0; i < ARRAY_SIZE(mpExecEmtrPVis); i++)
|
|
mpExecEmtrPVis[i] = NULL;
|
|
for (u32 i = 0; i < ARRAY_SIZE(mpExecEmtrCVis); i++)
|
|
mpExecEmtrCVis[i] = NULL;
|
|
for (u32 i = 0; i < ARRAY_SIZE(mpCalcEmtrVis); i++)
|
|
mpCalcEmtrVis[i] = NULL;
|
|
for (u32 i = 0; i < ARRAY_SIZE(mpExecPtclVis); i++)
|
|
mpExecPtclVis[i] = NULL;
|
|
for (u32 i = 0; i < ARRAY_SIZE(mpExecChldVis); i++)
|
|
mpExecChldVis[i] = NULL;
|
|
for (u32 i = 0; i < ARRAY_SIZE(mpCalcPtclVis); i++)
|
|
mpCalcPtclVis[i] = NULL;
|
|
for (u32 i = 0; i < ARRAY_SIZE(mpCalcChldVis); i++)
|
|
mpCalcChldVis[i] = NULL;
|
|
|
|
JPADrawVisitorDefFlags flags;
|
|
flags.mbIsEnableDrawParent = dc.pssp == NULL || dc.pssp->isEnableDrawParent();
|
|
flags.mbHasPrmAnm = dc.pbsp->isEnablePrm() && dc.pbsp->isEnablePrmAnm();
|
|
flags.mbHasEnvAnm = dc.pbsp->isEnableEnv() && dc.pbsp->isEnableEnvAnm();
|
|
flags.mbIsStripe = dc.pbsp->getType() == JPABaseShape::JPAType_Stripe || dc.pbsp->getType() == JPABaseShape::JPAType_StripeCross;
|
|
flags.mbIsPointOrLine = dc.pbsp->getType() == JPABaseShape::JPAType_Point || dc.pbsp->getType() == JPABaseShape::JPAType_Line;
|
|
flags.mbIsEnableAlpha = dc.pesp != NULL && dc.pesp->isEnableAlpha();
|
|
|
|
setDrawExecVisitorsBeforeCB(flags);
|
|
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x90;
|
|
mpExecEmtrCVis[execEmtrCVisNum++] = &vc.field_0x90;
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x90;
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x90;
|
|
|
|
setDrawExecVisitorsAfterCB(flags);
|
|
setDrawCalcVisitors(flags);
|
|
|
|
JUT_ASSERT(0x65, execEmtrVisNum <= 1);
|
|
JUT_ASSERT(0x66, execEmtrPVisNum <= 5);
|
|
JUT_ASSERT(0x67, execEmtrCVisNum <= 3);
|
|
JUT_ASSERT(0x68, calcEmtrVisNum <= 4);
|
|
JUT_ASSERT(0x69, execPtclVisNum <= 5);
|
|
JUT_ASSERT(0x6a, execChldVisNum <= 4);
|
|
JUT_ASSERT(0x6b, calcPtclVisNum <= 10);
|
|
JUT_ASSERT(0x6c, calcChldVisNum <= 2);
|
|
return true;
|
|
}
|
|
|
|
/* 80268634-802688D4 .text draw__7JPADrawFPA4_f */
|
|
void JPADraw::draw(MtxP param_1) {
|
|
GXClearVtxDesc();
|
|
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
|
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
|
|
GXSetCurrentMtx(0);
|
|
GXSetNumChans(0);
|
|
GXSetTevDirect(GX_TEVSTAGE0);
|
|
GXSetTevDirect(GX_TEVSTAGE1);
|
|
GXSetTevDirect(GX_TEVSTAGE2);
|
|
GXSetCoPlanar(GX_DISABLE);
|
|
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.field_0x98 = dc.pbe->mGlobalPrmColor;
|
|
cb.field_0x9c = dc.pbe->mGlobalEnvColor;
|
|
cb.field_0x34 = param_1;
|
|
cb.field_0x0.setupTev(dc.pbsp, dc.petx);
|
|
for (int i = 0; i < execEmtrVisNum; i++) {
|
|
mpExecEmtrVis[i]->exec(&dc);
|
|
}
|
|
if (dc.pbsp->isEnableAnmTone()) {
|
|
zDraw();
|
|
}
|
|
field_0xc2 &= 0xfe;
|
|
if (dc.pbsp->getChildOrder() && dc.pssp) {
|
|
drawChild();
|
|
}
|
|
drawParticle();
|
|
if (!dc.pbsp->getChildOrder() && dc.pssp) {
|
|
drawChild();
|
|
}
|
|
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
|
|
}
|
|
|
|
/* 802688D4-80268940 .text calc__7JPADrawFv */
|
|
void JPADraw::calc() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80268940-802689C4 .text calcParticle__7JPADrawFP15JPABaseParticle */
|
|
void JPADraw::calcParticle(JPABaseParticle*) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 802689C4-80268A48 .text calcChild__7JPADrawFP15JPABaseParticle */
|
|
void JPADraw::calcChild(JPABaseParticle*) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80268A48-80268F28 .text initParticle__7JPADrawFP15JPABaseParticle */
|
|
void JPADraw::initParticle(JPABaseParticle*) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 80268F28-802692A4 .text initChild__7JPADrawFP15JPABaseParticleP15JPABaseParticle */
|
|
void JPADraw::initChild(JPABaseParticle*, JPABaseParticle*) {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 802692A4-80269358 .text loadTexture__7JPADrawFUc11_GXTexMapID */
|
|
bool JPADraw::loadTexture(u8 tex_no, GXTexMapID texMap) {
|
|
JUT_ASSERT(0x17e, dc.pbe->getEmitterDataBlockInfoPtr()->getTextureNum() > tex_no);
|
|
JPATexture * tex = dc.mpTextureResource->pTexResArray[dc.pTexIdx[tex_no]];
|
|
tex->load(texMap);
|
|
return TRUE;
|
|
}
|
|
|
|
/* 80269358-80269C08 .text setDrawExecVisitorsBeforeCB__7JPADrawFRCQ27JPADraw22JPADrawVisitorDefFlags */
|
|
void JPADraw::setDrawExecVisitorsBeforeCB(const JPADraw::JPADrawVisitorDefFlags& param_1) {
|
|
/* Nonmatching */
|
|
if (dc.petx) {
|
|
mpExecEmtrVis[execEmtrVisNum++] = &vc.field_0x50;
|
|
}
|
|
if (param_1.mbIsPointOrLine) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0xc;
|
|
} else if (dc.pbsp->isEnableProjection()) {
|
|
if (dc.pbsp->isEnableTexScrollAnm()) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x4;
|
|
} else {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x0;
|
|
}
|
|
} else if (dc.pbsp->isEnableTexScrollAnm()) {
|
|
if (param_1.mbIsStripe) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x10;
|
|
} else {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x8;
|
|
}
|
|
} else {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0xc;
|
|
}
|
|
|
|
if (dc.pbsp->isEnableGlobalColAnm()) {
|
|
if (param_1.mbIsStripe || param_1.mbIsEnableAlpha == 0) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x20;
|
|
} else if (param_1.mbIsEnableAlpha) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x28;
|
|
}
|
|
} else if ((!dc.pbsp->isEnablePrm() || !dc.pbsp->isEnablePrmAnm()) && param_1.mbIsEnableAlpha == 0) {
|
|
if (!dc.pbsp->isEnableEnv() || !dc.pbsp->isEnableEnvAnm()) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x20;
|
|
} else {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x24;
|
|
}
|
|
} else if (!dc.pbsp->isEnableEnv() || !dc.pbsp->isEnableEnvAnm()) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x28;
|
|
}
|
|
if (!dc.pbsp->textureIsEmpty() && (!dc.pbsp->isEnableTextureAnm() || dc.pbsp->isEnableGlobalTexAnm())) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x48;
|
|
} else if (dc.pbsp->textureIsEmpty()) {
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x44;
|
|
}
|
|
if (dc.pssp && !dc.pssp->isEnableAlphaOut() && !dc.pssp->isInheritedAlpha() && !dc.pssp->isInheritedRGB()) {
|
|
mpExecEmtrCVis[execEmtrCVisNum++] = &vc.field_0x2c;
|
|
}
|
|
if (!dc.pbsp->isEnableGlobalColAnm()) {
|
|
if (param_1.mbHasPrmAnm) {
|
|
if (param_1.mbHasEnvAnm) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x3c;
|
|
} else {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x30;
|
|
}
|
|
} else if (param_1.mbIsEnableAlpha) {
|
|
if (param_1.mbHasEnvAnm) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x40;
|
|
} else {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x34;
|
|
}
|
|
} else if (param_1.mbHasEnvAnm) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x38;
|
|
}
|
|
|
|
} else if (param_1.mbIsEnableAlpha && !param_1.mbIsStripe) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x34;
|
|
}
|
|
if (!dc.pbsp->textureIsEmpty() && dc.pbsp->isEnableTextureAnm() && !dc.pbsp->isEnableGlobalTexAnm()) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x48;
|
|
}
|
|
switch (dc.pbsp->getType()) {
|
|
case 0:
|
|
if (dc.pesp && dc.pesp->isEnableScale()) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x18;
|
|
}
|
|
break;
|
|
case 1:
|
|
if (dc.pesp && dc.pesp->isEnableScale()) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x1c;
|
|
}
|
|
break;
|
|
case 5:
|
|
case 6:
|
|
break;
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
if (dc.pbsp->isEnableTexScrollAnm() && !dc.pbsp->isEnableProjection()) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x10;
|
|
}
|
|
break;
|
|
}
|
|
if (dc.pssp) {
|
|
if (dc.pssp->isEnableAlphaOut() || dc.pssp->isInheritedAlpha() || dc.pssp->isInheritedRGB()) {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x3c;
|
|
}
|
|
switch (dc.pssp->getType()) {
|
|
case 0:
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x18;
|
|
break;
|
|
case 1:
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x1c;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80269C08-8026A2EC .text setDrawExecVisitorsAfterCB__7JPADrawFRCQ27JPADraw22JPADrawVisitorDefFlags */
|
|
void JPADraw::setDrawExecVisitorsAfterCB(const JPADraw::JPADrawVisitorDefFlags& param_1) {
|
|
if (param_1.mbIsEnableDrawParent) {
|
|
switch (dc.pbsp->getType()) {
|
|
case 0:
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x80;
|
|
break;
|
|
case 1:
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x84;
|
|
break;
|
|
case 2:
|
|
if (dc.pesp && dc.pesp->isEnableRotate()) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x58;
|
|
} else {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x54;
|
|
}
|
|
break;
|
|
case 3:
|
|
if (dc.pesp && dc.pesp->isEnableRotate()) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x68;
|
|
} else {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x64;
|
|
}
|
|
break;
|
|
case 4:
|
|
if (dc.pesp && dc.pesp->isEnableRotate()) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x70;
|
|
} else {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x6c;
|
|
}
|
|
break;
|
|
case 10:
|
|
if (dc.pesp && dc.pesp->isEnableRotate()) {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x60;
|
|
} else {
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x5c;
|
|
}
|
|
break;
|
|
case 7:
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x78;
|
|
break;
|
|
case 8:
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x7c;
|
|
break;
|
|
case 9:
|
|
mpExecPtclVis[execPtclVisNum++] = &vc.field_0x74;
|
|
break;
|
|
case 5:
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x88;
|
|
break;
|
|
case 6:
|
|
mpExecEmtrPVis[execEmtrPVisNum++] = &vc.field_0x8c;
|
|
break;
|
|
}
|
|
}
|
|
if (dc.pssp) {
|
|
switch (dc.pssp->getType()) {
|
|
case 0:
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x80;
|
|
break;
|
|
case 1:
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x84;
|
|
break;
|
|
case 2:
|
|
if ((dc.pesp && dc.pesp->isEnableRotate()) || dc.pssp->isEnableRotate()) {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x58;
|
|
} else {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x54;
|
|
}
|
|
break;
|
|
case 3:
|
|
if ((dc.pesp && dc.pesp->isEnableRotate()) || dc.pssp->isEnableRotate()) {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x68;
|
|
} else {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x64;
|
|
}
|
|
break;
|
|
case 4:
|
|
if ((dc.pesp && dc.pesp->isEnableRotate()) || dc.pssp->isEnableRotate()) {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x70;
|
|
} else {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x6c;
|
|
}
|
|
break;
|
|
case 10:
|
|
if ((dc.pesp && dc.pesp->isEnableRotate()) || dc.pssp->isEnableRotate()) {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x60;
|
|
} else {
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x5c;
|
|
}
|
|
break;
|
|
case 7:
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x78;
|
|
break;
|
|
case 8:
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x7c;
|
|
break;
|
|
case 9:
|
|
mpExecChldVis[execChldVisNum++] = &vc.field_0x74;
|
|
break;
|
|
case 5:
|
|
mpExecEmtrCVis[execEmtrCVisNum++] = &vc.field_0x88;
|
|
break;
|
|
case 6:
|
|
mpExecEmtrCVis[execEmtrCVisNum++] = &vc.field_0x8c;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 8026A2EC-8026ADB0 .text setDrawCalcVisitors__7JPADrawFRCQ27JPADraw22JPADrawVisitorDefFlags */
|
|
void JPADraw::setDrawCalcVisitors(const JPADraw::JPADrawVisitorDefFlags& param_1) {
|
|
if (dc.pbsp->isEnableGlobalColAnm() && (param_1.mbHasPrmAnm || param_1.mbHasEnvAnm)) {
|
|
switch (dc.pbsp->getColorRegAnmType()) {
|
|
case 0:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0xd4;
|
|
break;
|
|
case 1:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0xdc;
|
|
break;
|
|
case 2:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0xe4;
|
|
break;
|
|
case 3:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0xec;
|
|
break;
|
|
case 4:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0xf4;
|
|
break;
|
|
}
|
|
if (param_1.mbHasPrmAnm) {
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0xc0;
|
|
}
|
|
if (param_1.mbHasEnvAnm) {
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0xc8;
|
|
}
|
|
}
|
|
if (!dc.pbsp->textureIsEmpty() && dc.pbsp->isEnableTextureAnm() &&
|
|
dc.pbsp->isEnableGlobalTexAnm())
|
|
{
|
|
switch (dc.pbsp->getTextureAnmType()) {
|
|
case 0:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0x10c;
|
|
break;
|
|
case 1:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0x114;
|
|
break;
|
|
case 2:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0x11c;
|
|
break;
|
|
case 3:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0x124;
|
|
break;
|
|
case 4:
|
|
mpCalcEmtrVis[calcEmtrVisNum++] = &vc.field_0x12c;
|
|
break;
|
|
}
|
|
}
|
|
if (dc.pesp && dc.pesp->isEnableScale()) {
|
|
if (dc.pesp->isEnableScaleAnmX()) {
|
|
if (dc.pesp->getAnmTypeX()) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xb8;
|
|
} else {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xb0;
|
|
}
|
|
} else {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xac;
|
|
}
|
|
if (dc.pesp->isEnableScaleBySpeedX() && dc.pbsp->getType() != 1) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x9c;
|
|
} else {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x98;
|
|
}
|
|
if (dc.pbsp->getType() != 0) {
|
|
if (!dc.pesp->isDiffXY()) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xa8;
|
|
} else {
|
|
if (dc.pesp->isEnableScaleAnmY()) {
|
|
if (dc.pesp->getAnmTypeY()) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xbc;
|
|
} else {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xb4;
|
|
}
|
|
} else if (dc.pesp->isEnableScaleAnmX()) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xac;
|
|
}
|
|
if (dc.pesp->isEnableScaleBySpeedY()) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xa4;
|
|
} else {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xa0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!dc.pbsp->isEnableGlobalColAnm()) {
|
|
if (param_1.mbHasPrmAnm || param_1.mbHasEnvAnm) {
|
|
switch (dc.pbsp->getColorRegAnmType()) {
|
|
case 0:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xd4;
|
|
break;
|
|
case 1:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xdc;
|
|
break;
|
|
case 2:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xe4;
|
|
break;
|
|
case 3:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xec;
|
|
break;
|
|
case 4:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xf4;
|
|
break;
|
|
}
|
|
if (param_1.mbHasPrmAnm) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xc0;
|
|
}
|
|
if (param_1.mbHasEnvAnm) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xc8;
|
|
}
|
|
}
|
|
} else {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xd0;
|
|
}
|
|
if (param_1.mbIsEnableAlpha && !param_1.mbIsStripe) {
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0xfc;
|
|
if (dc.pesp->isEnableSinWave()) {
|
|
switch (dc.pesp->getAlphaWaveType()) {
|
|
case 0:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x100;
|
|
break;
|
|
case 1:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x104;
|
|
break;
|
|
case 2:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x108;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (!dc.pbsp->textureIsEmpty() && dc.pbsp->isEnableTextureAnm() &&
|
|
!dc.pbsp->isEnableGlobalTexAnm())
|
|
{
|
|
switch (dc.pbsp->getTextureAnmType()) {
|
|
case 0:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x10c;
|
|
break;
|
|
case 1:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x114;
|
|
break;
|
|
case 2:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x11c;
|
|
break;
|
|
case 3:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x124;
|
|
break;
|
|
case 4:
|
|
mpCalcPtclVis[calcPtclVisNum++] = &vc.field_0x12c;
|
|
break;
|
|
}
|
|
}
|
|
if (dc.pssp) {
|
|
if (dc.pssp->isEnableAlphaOut()) {
|
|
mpCalcChldVis[calcChldVisNum++] = &vc.field_0x134;
|
|
}
|
|
if (dc.pssp->isEnableScaleOut()) {
|
|
mpCalcChldVis[calcChldVisNum++] = &vc.field_0x138;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 8026ADB0-8026B3DC .text setParticleClipBoard__7JPADrawFv */
|
|
void JPADraw::setParticleClipBoard() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026B3DC-8026B938 .text setChildClipBoard__7JPADrawFv */
|
|
void JPADraw::setChildClipBoard() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026B938-8026BC2C .text drawParticle__7JPADrawFv */
|
|
void JPADraw::drawParticle() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026BC2C-8026BF88 .text drawChild__7JPADrawFv */
|
|
void JPADraw::drawChild() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026BF88-8026C024 .text zDraw__7JPADrawFv */
|
|
void JPADraw::zDraw() {
|
|
field_0xc2 |= 0x01;
|
|
if (dc.pbsp->getChildOrder() && dc.pssp != NULL)
|
|
zDrawChild();
|
|
zDrawParticle();
|
|
if (!dc.pbsp->getChildOrder() && dc.pssp != NULL)
|
|
zDrawChild();
|
|
}
|
|
|
|
/* 8026C024-8026C24C .text zDrawParticle__7JPADrawFv */
|
|
void JPADraw::zDrawParticle() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026C24C-8026C4DC .text zDrawChild__7JPADrawFv */
|
|
void JPADraw::zDrawChild() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 8026C4DC-8026C640 .text loadYBBMtx__7JPADrawFPA4_f */
|
|
void JPADraw::loadYBBMtx(float(*)[4]) {
|
|
/* Nonmatching */
|
|
}
|