mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
Document the rest of spl_manager
This commit is contained in:
parent
0ea26be145
commit
2ada50bdf1
|
|
@ -16,7 +16,7 @@ typedef struct UnkSPLStruct7 {
|
|||
u32 terminate:1;
|
||||
u32 stop_generate:1;
|
||||
u32 paused:1;
|
||||
u32 stop_draw:1;
|
||||
u32 renderingDisabled:1;
|
||||
u32 started: 1 ;
|
||||
u32 reserved0:27;
|
||||
};
|
||||
|
|
@ -24,8 +24,8 @@ typedef struct UnkSPLStruct7 {
|
|||
} UnkSPLStruct7;
|
||||
|
||||
typedef struct SPLEmitter {
|
||||
struct SPLEmitter * unk_00;
|
||||
struct SPLEmitter * unk_04;
|
||||
struct SPLEmitter *next;
|
||||
struct SPLEmitter *prev;
|
||||
SPLParticleList particles;
|
||||
SPLParticleList childParticles;
|
||||
SPLResource *resource;
|
||||
|
|
|
|||
|
|
@ -35,26 +35,26 @@ typedef struct SPLManager {
|
|||
} polygonID;
|
||||
s32 unk_3C;
|
||||
struct {
|
||||
SPLEmitter * unk_00;
|
||||
const MtxFx43 * unk_04;
|
||||
} unk_40;
|
||||
SPLEmitter *emitter; // current emitter being processed
|
||||
const MtxFx43 *viewMatrix; // current view matrix
|
||||
} renderState;
|
||||
u16 currentCycle;
|
||||
u16 unk_4A;
|
||||
} SPLManager; // size=0x4c
|
||||
|
||||
typedef void(* EmitterCallback)(SPLEmitter *);
|
||||
typedef void(* EmitterCallbackEx)(SPLEmitter *, void *);
|
||||
typedef void(* SPLEmitterCallback)(SPLEmitter *);
|
||||
typedef void(* SPLEmitterCallbackEx)(SPLEmitter *, void *);
|
||||
|
||||
typedef u32(* SPLTexVRAMAllocFunc)(u32 size, BOOL is4x4comp);
|
||||
typedef u32(* SPLPalVRAMAllocFunc)(u32 size, BOOL is4pal);
|
||||
|
||||
SPLManager *SPLManager_New(SPLAllocFunc alloc, u16 maxEmitters, u16 maxParticles, u16 fixPolyID, u16 minPolyID, u16 maxPolyID);
|
||||
void SPL_0209C400(SPLManager * param0);
|
||||
void SPL_0209C444(SPLManager * param0, SPLEmitter * param1);
|
||||
SPLEmitter * SPL_0209C4D8(SPLManager * param0, int param1, EmitterCallback cb);
|
||||
SPLEmitter *SPL_CreateWithInitializeEx(SPLManager *mgr, int resNo, VecFx32 *pos, void *pvoid, EmitterCallbackEx cb);
|
||||
void SPL_0209C5E0(SPLManager * param0, const MtxFx43 * param1);
|
||||
SPLEmitter * SPL_0209C56C(SPLManager * param0, int param1, const VecFx32 * param2);
|
||||
void SPLManager_DeleteAllEmitters(SPLManager * param0);
|
||||
void SPLManager_DeleteEmitter(SPLManager * param0, SPLEmitter * param1);
|
||||
SPLEmitter * SPLManager_CreateEmitterWithCallback(SPLManager * param0, int param1, SPLEmitterCallback cb);
|
||||
SPLEmitter *SPLManager_CreateEmitterWithCallbackEx(SPLManager *mgr, int resNo, VecFx32 *pos, void *pvoid, SPLEmitterCallbackEx cb);
|
||||
void SPLManager_Draw(SPLManager * param0, const MtxFx43 * param1);
|
||||
SPLEmitter * SPLManager_CreateEmitter(SPLManager * param0, int param1, const VecFx32 * param2);
|
||||
void SPLManager_Update(SPLManager * param0);
|
||||
BOOL SPLManager_UploadPalettes(SPLManager * param0);
|
||||
BOOL SPLManager_UploadTextures(SPLManager * param0);
|
||||
|
|
|
|||
|
|
@ -30,8 +30,10 @@ typedef union {
|
|||
u32 hasTexAnim : 1;
|
||||
u32 unk_05_4 : 1;
|
||||
u32 unk_05_5 : 1;
|
||||
// If set, the emitter will terminate when it reaches the end of its life and all of its particles have died
|
||||
u32 selfTerminate : 1;
|
||||
// Whether the emitter manages itself or not.
|
||||
// If set, the emitter will automatically terminate when it reaches the end of its life
|
||||
// and all of its particles have died
|
||||
u32 selfMaintaining : 1;
|
||||
u32 unk_05_7 : 1;
|
||||
u32 hasChildResource : 1;
|
||||
u32 unk_06_1 : 2;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
#define DECODE_WH(X) ((u16)(1 << ((X) + 3)))
|
||||
#define EMITTER_SHOULD_TERMINATE(emtr, header) \
|
||||
((\
|
||||
(header->flags.selfTerminate && header->emitterLifeTime != 0 && emtr->state.started && emtr->age > header->emitterLifeTime) \
|
||||
(header->flags.selfMaintaining && header->emitterLifeTime != 0 && emtr->state.started && emtr->age > header->emitterLifeTime) \
|
||||
|| emtr->state.terminate \
|
||||
) && emtr->particles.count == 0 && emtr->childParticles.count == 0)
|
||||
|
||||
|
|
@ -279,7 +279,7 @@ void SPLManager_Update(SPLManager *mgr)
|
|||
emtr = mgr->activeEmitters.first;
|
||||
while (emtr != NULL) {
|
||||
SPLResourceHeader *header = emtr->resource->header;
|
||||
next = emtr->unk_00;
|
||||
next = emtr->next;
|
||||
|
||||
if (!emtr->state.started && emtr->age >= header->startDelay) {
|
||||
emtr->state.started = TRUE;
|
||||
|
|
@ -306,43 +306,46 @@ void SPLManager_Update(SPLManager *mgr)
|
|||
}
|
||||
}
|
||||
|
||||
void SPL_0209C5E0(SPLManager *mgr, const MtxFx43 *cmr)
|
||||
void SPLManager_Draw(SPLManager *mgr, const MtxFx43 *viewMatrix)
|
||||
{
|
||||
G3X_AlphaBlend(TRUE);
|
||||
|
||||
mgr->unk_40.unk_04 = cmr;
|
||||
mgr->renderState.viewMatrix = viewMatrix;
|
||||
if (mgr->polygonID.drawOrder == SPL_DRAW_ORDER_REVERSE) {
|
||||
SPLEmitter *emtr = mgr->activeEmitters.first;
|
||||
|
||||
while (emtr != NULL) {
|
||||
mgr->unk_40.unk_00 = emtr;
|
||||
if (!emtr->state.stop_draw) {
|
||||
mgr->renderState.emitter = emtr;
|
||||
if (!emtr->state.renderingDisabled) {
|
||||
sub_0209CF00(mgr);
|
||||
}
|
||||
emtr = emtr->unk_00;
|
||||
|
||||
emtr = emtr->next;
|
||||
}
|
||||
} else {
|
||||
SPLEmitter *emtr = mgr->activeEmitters.last;
|
||||
|
||||
while (emtr != NULL) {
|
||||
mgr->unk_40.unk_00 = emtr;
|
||||
if (!emtr->state.stop_draw) {
|
||||
mgr->renderState.emitter = emtr;
|
||||
if (!emtr->state.renderingDisabled) {
|
||||
sub_0209CF00(mgr);
|
||||
}
|
||||
emtr = emtr->unk_04;
|
||||
|
||||
emtr = emtr->prev;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SPLEmitter *SPL_0209C56C(SPLManager *mgr, int resno, const VecFx32 *pos)
|
||||
SPLEmitter *SPLManager_CreateEmitter(SPLManager *mgr, int resourceID, const VecFx32 *pos)
|
||||
{
|
||||
SPLEmitter *emtr = NULL;
|
||||
|
||||
if (mgr->inactiveEmitters.first != NULL) {
|
||||
emtr = (SPLEmitter *)SPLList_PopFront((SPLList *)&mgr->inactiveEmitters);
|
||||
sub_0209D998(emtr, mgr->resources + resno, pos);
|
||||
SPLList_PushFront((SPLList *)&mgr->activeEmitters, (SPLNode *)emtr);
|
||||
if (emtr->resource->header->flags.selfTerminate) {
|
||||
emtr = SPLEmitterList_PopFront(&mgr->inactiveEmitters);
|
||||
sub_0209D998(emtr, mgr->resources + resourceID, pos);
|
||||
SPLEmitterList_PushFront(&mgr->activeEmitters, emtr);
|
||||
|
||||
if (emtr->resource->header->flags.selfMaintaining) { // Self-maintaining emitters are not returned to the user
|
||||
emtr = NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -350,20 +353,21 @@ SPLEmitter *SPL_0209C56C(SPLManager *mgr, int resno, const VecFx32 *pos)
|
|||
return emtr;
|
||||
}
|
||||
|
||||
SPLEmitter *SPL_0209C4D8(SPLManager *mgr, int resno, EmitterCallback fpcb)
|
||||
SPLEmitter *SPLManager_CreateEmitterWithCallback(SPLManager *mgr, int resourceID, SPLEmitterCallback initCallback)
|
||||
{
|
||||
SPLEmitter *emtr;
|
||||
|
||||
emtr = NULL;
|
||||
SPLEmitter *emtr = NULL;
|
||||
if (mgr->inactiveEmitters.first != NULL) {
|
||||
VecFx32 v0 = { 0, 0, 0 };
|
||||
emtr = (SPLEmitter *)SPLList_PopFront((SPLList *)&mgr->inactiveEmitters);
|
||||
sub_0209D998(emtr, mgr->resources + resno, &v0);
|
||||
if (fpcb != NULL) {
|
||||
fpcb(emtr);
|
||||
VecFx32 pos = { 0, 0, 0 };
|
||||
emtr = SPLEmitterList_PopFront(&mgr->inactiveEmitters);
|
||||
sub_0209D998(emtr, mgr->resources + resourceID, &pos);
|
||||
|
||||
if (initCallback != NULL) {
|
||||
initCallback(emtr);
|
||||
}
|
||||
SPLList_PushFront((SPLList *)&mgr->activeEmitters, (SPLNode *)emtr);
|
||||
if (emtr->resource->header->flags.selfTerminate) {
|
||||
|
||||
SPLEmitterList_PushFront(&mgr->activeEmitters, emtr);
|
||||
|
||||
if (emtr->resource->header->flags.selfMaintaining) { // Self-maintaining emitters are not returned to the user
|
||||
emtr = NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -371,20 +375,20 @@ SPLEmitter *SPL_0209C4D8(SPLManager *mgr, int resno, EmitterCallback fpcb)
|
|||
return emtr;
|
||||
}
|
||||
|
||||
SPLEmitter *SPL_CreateWithInitializeEx(SPLManager *mgr, int resNo, VecFx32 *pos, void *pvoid, EmitterCallbackEx cb)
|
||||
SPLEmitter *SPLManager_CreateEmitterWithCallbackEx(SPLManager *mgr, int resourceID, VecFx32 *pos, void *param, SPLEmitterCallbackEx initCallback)
|
||||
{
|
||||
SPLEmitter *emtr;
|
||||
|
||||
emtr = NULL;
|
||||
SPLEmitter *emtr = NULL;
|
||||
if (mgr->inactiveEmitters.first != NULL) {
|
||||
emtr = (SPLEmitter *)SPLList_PopFront((SPLList *)&mgr->inactiveEmitters);
|
||||
sub_0209D998(emtr, mgr->resources + resNo, pos);
|
||||
if (cb != NULL) {
|
||||
cb(emtr, pvoid);
|
||||
emtr = SPLEmitterList_PopFront(&mgr->inactiveEmitters);
|
||||
sub_0209D998(emtr, mgr->resources + resourceID, pos);
|
||||
|
||||
if (initCallback != NULL) {
|
||||
initCallback(emtr, param);
|
||||
}
|
||||
|
||||
SPLList_PushFront((SPLList *)&mgr->activeEmitters, (SPLNode *)emtr);
|
||||
if (emtr->resource->header->flags.selfTerminate) {
|
||||
SPLEmitterList_PushFront(&mgr->activeEmitters, emtr);
|
||||
|
||||
if (emtr->resource->header->flags.selfMaintaining) { // Self-maintaining emitters are not returned to the user
|
||||
emtr = NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -392,34 +396,30 @@ SPLEmitter *SPL_CreateWithInitializeEx(SPLManager *mgr, int resNo, VecFx32 *pos,
|
|||
return emtr;
|
||||
}
|
||||
|
||||
void SPL_0209C444(SPLManager *p0, SPLEmitter *p1)
|
||||
void SPLManager_DeleteEmitter(SPLManager *mgr, SPLEmitter *emtr)
|
||||
{
|
||||
SPLEmitter *v0 = (SPLEmitter *)SPLList_PopFront((SPLList *)&p1->particles);
|
||||
if (v0 != NULL) {
|
||||
do {
|
||||
SPLList_PushFront((SPLList *)&p0->inactiveParticles, (SPLNode *)v0);
|
||||
v0 = (SPLEmitter *)SPLList_PopFront((SPLList *)&p1->particles);
|
||||
} while (v0 != NULL);
|
||||
SPLParticle *ptcl = SPLParticleList_PopFront(&emtr->particles);
|
||||
while (ptcl != NULL) {
|
||||
SPLParticleList_PushFront(&mgr->inactiveParticles, ptcl);
|
||||
ptcl = SPLParticleList_PopFront(&emtr->particles);
|
||||
}
|
||||
v0 = (SPLEmitter *)SPLList_PopFront((SPLList *)&p1->childParticles);
|
||||
if (v0 != NULL) {
|
||||
do {
|
||||
SPLList_PushFront((SPLList *)&p0->inactiveParticles, (SPLNode *)v0);
|
||||
v0 = (SPLEmitter *)SPLList_PopFront((SPLList *)&p1->childParticles);
|
||||
} while (v0 != NULL);
|
||||
|
||||
ptcl = SPLParticleList_PopFront(&emtr->childParticles);
|
||||
while (ptcl != NULL) {
|
||||
SPLParticleList_PushFront(&mgr->inactiveParticles, ptcl);
|
||||
ptcl = SPLParticleList_PopFront(&emtr->childParticles);
|
||||
}
|
||||
SPLList_Erase((SPLList *)&p0->activeEmitters, (SPLNode *)p1);
|
||||
SPLList_PushFront((SPLList *)&p0->inactiveEmitters, (SPLNode *)p1);
|
||||
|
||||
SPLEmitterList_Erase(&mgr->activeEmitters, emtr);
|
||||
SPLEmitterList_PushFront(&mgr->inactiveEmitters, emtr);
|
||||
}
|
||||
|
||||
void SPL_0209C400(SPLManager *p0)
|
||||
void SPLManager_DeleteAllEmitters(SPLManager *mgr)
|
||||
{
|
||||
SPLEmitter *next;
|
||||
SPLEmitter *emtr = p0->activeEmitters.first;
|
||||
|
||||
SPLEmitter *emtr = mgr->activeEmitters.first;
|
||||
while (emtr != NULL) {
|
||||
next = emtr->unk_00;
|
||||
SPL_0209C444(p0, emtr);
|
||||
SPLEmitter *next = emtr->next;
|
||||
SPLManager_DeleteEmitter(mgr, emtr);
|
||||
emtr = next;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ void sub_0209D998(SPLEmitter *emtr, SPLResource *res, const VecFx32 *pos)
|
|||
}
|
||||
}
|
||||
|
||||
emtr->unk_00 = emtr->unk_04 = NULL;
|
||||
emtr->next = emtr->prev = NULL;
|
||||
emtr->particles.first = emtr->childParticles.first = NULL;
|
||||
emtr->particles.count = emtr->childParticles.count = 0;
|
||||
emtr->unk_100 = NULL;
|
||||
|
|
@ -324,7 +324,7 @@ static void sub_0209D064(SPLManager *mgr)
|
|||
DrawFunc drawFunc;
|
||||
SetTexFunc setTexFunc;
|
||||
|
||||
emtr = mgr->unk_40.unk_00;
|
||||
emtr = mgr->renderState.emitter;
|
||||
resBase = emtr->resource->header;
|
||||
drawFunc = NULL;
|
||||
|
||||
|
|
@ -365,7 +365,7 @@ static void sub_0209CF7C(SPLManager *mgr)
|
|||
DrawFunc drawFunc;
|
||||
SPLParticle *ptcl;
|
||||
|
||||
emtr = mgr->unk_40.unk_00;
|
||||
emtr = mgr->renderState.emitter;
|
||||
drawFunc = NULL;
|
||||
res = emtr->resource;
|
||||
|
||||
|
|
@ -404,7 +404,7 @@ void sub_0209CF00(SPLManager *mgr)
|
|||
{
|
||||
SPLResourceHeader *resBase;
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
if (resBase->flags.unk_06_5) {
|
||||
sub_0209CF7C(mgr);
|
||||
|
||||
|
|
|
|||
|
|
@ -128,11 +128,11 @@ void sub_0209FF0C(SPLManager *mgr, SPLParticle *ptcl)
|
|||
GXRgb ptclCol, emtrCol;
|
||||
u8 scaleAnimDirect;
|
||||
|
||||
SPLEmitter *emtr = mgr->unk_40.unk_00;
|
||||
SPLEmitter *emtr = mgr->renderState.emitter;
|
||||
SPLResourceHeader *resBase = emtr->resource->header;
|
||||
|
||||
cmr = mgr->unk_40.unk_04;
|
||||
aspect = mgr->unk_40.unk_00->resource->header->unk_30;
|
||||
cmr = mgr->renderState.viewMatrix;
|
||||
aspect = mgr->renderState.emitter->resource->header->unk_30;
|
||||
animScale = ptcl->unk_34;
|
||||
|
||||
ptclCol = ptcl->unk_36;
|
||||
|
|
@ -168,7 +168,7 @@ void sub_0209FF0C(SPLManager *mgr, SPLParticle *ptcl)
|
|||
sclY = FX_MUL(sclY, animScale);
|
||||
}
|
||||
|
||||
if (!mgr->unk_40.unk_00->resource->header->flags.unk_06_7) {
|
||||
if (!mgr->renderState.emitter->resource->header->flags.unk_06_7) {
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z;
|
||||
|
|
@ -192,9 +192,9 @@ void sub_0209FF0C(SPLManager *mgr, SPLParticle *ptcl)
|
|||
G3_Identity();
|
||||
G3_MultMtx43(&load);
|
||||
} else {
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x - mgr->unk_40.unk_00->resource->header->unk_04.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y - mgr->unk_40.unk_00->resource->header->unk_04.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z - mgr->unk_40.unk_00->resource->header->unk_04.z;
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x - mgr->renderState.emitter->resource->header->unk_04.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y - mgr->renderState.emitter->resource->header->unk_04.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z - mgr->renderState.emitter->resource->header->unk_04.z;
|
||||
MTX_MultVec43(&trs, cmr, &trs);
|
||||
|
||||
sin = FX_SinIdx(ptcl->unk_20);
|
||||
|
|
@ -214,7 +214,7 @@ void sub_0209FF0C(SPLManager *mgr, SPLParticle *ptcl)
|
|||
|
||||
G3_Identity();
|
||||
|
||||
SPLResourceHeader *resBase = mgr->unk_40.unk_00->resource->header;
|
||||
SPLResourceHeader *resBase = mgr->renderState.emitter->resource->header;
|
||||
G3_Translate(resBase->unk_04.x, resBase->unk_04.y, resBase->unk_04.z);
|
||||
G3_MultMtx43(&load);
|
||||
}
|
||||
|
|
@ -224,7 +224,7 @@ void sub_0209FF0C(SPLManager *mgr, SPLParticle *ptcl)
|
|||
GX_RGB_G_(ptclCol) * GX_RGB_G_(emtrCol) >> 15,
|
||||
GX_RGB_B_(ptclCol) * GX_RGB_B_(emtrCol) >> 25));
|
||||
|
||||
emtr = mgr->unk_40.unk_00;
|
||||
emtr = mgr->renderState.emitter;
|
||||
sub_020A0500(emtr->unk_E8, emtr->unk_EA, emtr->resource->header->unk_54, emtr->resource->header->unk_56);
|
||||
}
|
||||
|
||||
|
|
@ -237,8 +237,8 @@ void sub_0209FAB8(SPLManager *mgr, SPLParticle *ptcl)
|
|||
MtxFx43 load;
|
||||
fx32 sin;
|
||||
|
||||
cmr = mgr->unk_40.unk_04;
|
||||
aspect = mgr->unk_40.unk_00->resource->header->unk_30;
|
||||
cmr = mgr->renderState.viewMatrix;
|
||||
aspect = mgr->renderState.emitter->resource->header->unk_30;
|
||||
|
||||
fx32 alpha = (fx32)(ptcl->unk_2E.unk_00_0 * (ptcl->unk_2E.unk_00_5 + 1)) >> 5;
|
||||
|
||||
|
|
@ -259,7 +259,7 @@ void sub_0209FAB8(SPLManager *mgr, SPLParticle *ptcl)
|
|||
sclY = ptcl->unk_30;
|
||||
sclX = FX_MUL(sclY, aspect);
|
||||
|
||||
switch (mgr->unk_40.unk_00->resource->header->unk_48.unk_07_4) {
|
||||
switch (mgr->renderState.emitter->resource->header->unk_48.unk_07_4) {
|
||||
case 0:
|
||||
sclX = FX_MUL(sclX, ptcl->unk_34);
|
||||
sclY = FX_MUL(sclY, ptcl->unk_34);
|
||||
|
|
@ -274,7 +274,7 @@ void sub_0209FAB8(SPLManager *mgr, SPLParticle *ptcl)
|
|||
break;
|
||||
}
|
||||
|
||||
if (!mgr->unk_40.unk_00->resource->header->flags.unk_06_7) {
|
||||
if (!mgr->renderState.emitter->resource->header->flags.unk_06_7) {
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z;
|
||||
|
|
@ -298,9 +298,9 @@ void sub_0209FAB8(SPLManager *mgr, SPLParticle *ptcl)
|
|||
G3_Identity();
|
||||
G3_MultMtx43(&load);
|
||||
} else {
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x - mgr->unk_40.unk_00->resource->header->unk_04.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y - mgr->unk_40.unk_00->resource->header->unk_04.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z - mgr->unk_40.unk_00->resource->header->unk_04.z;
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x - mgr->renderState.emitter->resource->header->unk_04.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y - mgr->renderState.emitter->resource->header->unk_04.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z - mgr->renderState.emitter->resource->header->unk_04.z;
|
||||
MTX_MultVec43(&trs, cmr, &trs);
|
||||
|
||||
sin = FX_SinIdx(ptcl->unk_20);
|
||||
|
|
@ -320,19 +320,19 @@ void sub_0209FAB8(SPLManager *mgr, SPLParticle *ptcl)
|
|||
|
||||
G3_Identity();
|
||||
|
||||
SPLResourceHeader *resBase = mgr->unk_40.unk_00->resource->header;
|
||||
SPLResourceHeader *resBase = mgr->renderState.emitter->resource->header;
|
||||
G3_Translate(resBase->unk_04.x, resBase->unk_04.y, resBase->unk_04.z);
|
||||
G3_MultMtx43(&load);
|
||||
}
|
||||
|
||||
GXRgb colA = ptcl->unk_36;
|
||||
GXRgb colB = mgr->unk_40.unk_00->unk_E2;
|
||||
GXRgb colB = mgr->renderState.emitter->unk_E2;
|
||||
G3_Color(GX_RGB(
|
||||
GX_RGB_R_(colA) * GX_RGB_R_(colB) >> 5,
|
||||
GX_RGB_G_(colA) * GX_RGB_G_(colB) >> 15,
|
||||
GX_RGB_B_(colA) * GX_RGB_B_(colB) >> 25));
|
||||
|
||||
SPLEmitter *emtr = mgr->unk_40.unk_00;
|
||||
SPLEmitter *emtr = mgr->renderState.emitter;
|
||||
sub_020A0500(emtr->unk_EC, emtr->unk_EE, 0, 0);
|
||||
}
|
||||
|
||||
|
|
@ -348,8 +348,8 @@ void sub_0209F3D0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
MtxFx33 mtx;
|
||||
MtxFx43 load;
|
||||
|
||||
cmr = mgr->unk_40.unk_04;
|
||||
aspect = mgr->unk_40.unk_00->resource->header->unk_30;
|
||||
cmr = mgr->renderState.viewMatrix;
|
||||
aspect = mgr->renderState.emitter->resource->header->unk_30;
|
||||
|
||||
fx32 alpha = (fx32)(ptcl->unk_2E.unk_00_0 * (ptcl->unk_2E.unk_00_5 + 1)) >> 5;
|
||||
|
||||
|
|
@ -370,7 +370,7 @@ void sub_0209F3D0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
sclY = ptcl->unk_30;
|
||||
sclX = FX_MUL(sclY, aspect);
|
||||
|
||||
switch (mgr->unk_40.unk_00->resource->header->unk_48.unk_07_4) {
|
||||
switch (mgr->renderState.emitter->resource->header->unk_48.unk_07_4) {
|
||||
case 0:
|
||||
sclX = FX_MUL(sclX, ptcl->unk_34);
|
||||
sclY = FX_MUL(sclY, ptcl->unk_34);
|
||||
|
|
@ -385,7 +385,7 @@ void sub_0209F3D0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
break;
|
||||
}
|
||||
|
||||
if (!mgr->unk_40.unk_00->resource->header->flags.unk_06_7) {
|
||||
if (!mgr->renderState.emitter->resource->header->flags.unk_06_7) {
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z;
|
||||
|
|
@ -414,7 +414,7 @@ void sub_0209F3D0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
dot = -dot;
|
||||
}
|
||||
|
||||
dot = FX_MUL(sclY, FX_MUL(FX32_ONE - dot, (fx32)mgr->unk_40.unk_00->resource->header->unk_48.unk_05_0) + FX32_ONE);
|
||||
dot = FX_MUL(sclY, FX_MUL(FX32_ONE - dot, (fx32)mgr->renderState.emitter->resource->header->unk_48.unk_05_0) + FX32_ONE);
|
||||
load.m[0][0] = FX_MUL(dir.x, sclX);
|
||||
load.m[1][0] = FX_MUL(-dir.y, dot);
|
||||
load.m[3][0] = trs.x;
|
||||
|
|
@ -431,9 +431,9 @@ void sub_0209F3D0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
G3_Identity();
|
||||
G3_MultMtx43(&load);
|
||||
} else {
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x - mgr->unk_40.unk_00->resource->header->unk_04.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y - mgr->unk_40.unk_00->resource->header->unk_04.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z - mgr->unk_40.unk_00->resource->header->unk_04.z;
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x - mgr->renderState.emitter->resource->header->unk_04.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y - mgr->renderState.emitter->resource->header->unk_04.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z - mgr->renderState.emitter->resource->header->unk_04.z;
|
||||
|
||||
dir = ptcl->velocity;
|
||||
|
||||
|
|
@ -459,7 +459,7 @@ void sub_0209F3D0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
dot = -dot;
|
||||
}
|
||||
|
||||
dot = FX_MUL(sclY, FX_MUL(FX32_ONE - dot, (fx32)mgr->unk_40.unk_00->resource->header->unk_48.unk_05_0) + FX32_ONE);
|
||||
dot = FX_MUL(sclY, FX_MUL(FX32_ONE - dot, (fx32)mgr->renderState.emitter->resource->header->unk_48.unk_05_0) + FX32_ONE);
|
||||
load.m[0][0] = FX_MUL(dir.x, sclX);
|
||||
load.m[1][0] = FX_MUL(-dir.y, dot);
|
||||
load.m[2][0] = 0;
|
||||
|
|
@ -475,19 +475,19 @@ void sub_0209F3D0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
|
||||
G3_Identity();
|
||||
|
||||
SPLResourceHeader *resBase = mgr->unk_40.unk_00->resource->header;
|
||||
SPLResourceHeader *resBase = mgr->renderState.emitter->resource->header;
|
||||
G3_Translate(resBase->unk_04.x, resBase->unk_04.y, resBase->unk_04.z);
|
||||
G3_MultMtx43(&load);
|
||||
}
|
||||
|
||||
GXRgb colA = ptcl->unk_36;
|
||||
GXRgb colB = mgr->unk_40.unk_00->unk_E2;
|
||||
GXRgb colB = mgr->renderState.emitter->unk_E2;
|
||||
G3_Color(GX_RGB(
|
||||
GX_RGB_R_(colA) * GX_RGB_R_(colB) >> 5,
|
||||
GX_RGB_G_(colA) * GX_RGB_G_(colB) >> 15,
|
||||
GX_RGB_B_(colA) * GX_RGB_B_(colB) >> 25));
|
||||
|
||||
SPLEmitter *emtr = mgr->unk_40.unk_00;
|
||||
SPLEmitter *emtr = mgr->renderState.emitter;
|
||||
sub_020A0500(emtr->unk_E8, emtr->unk_EA, emtr->resource->header->unk_54, emtr->resource->header->unk_56);
|
||||
}
|
||||
|
||||
|
|
@ -503,8 +503,8 @@ void sub_0209ECF0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
MtxFx33 mtx;
|
||||
MtxFx43 load;
|
||||
|
||||
cmr = mgr->unk_40.unk_04;
|
||||
aspect = mgr->unk_40.unk_00->resource->header->unk_30;
|
||||
cmr = mgr->renderState.viewMatrix;
|
||||
aspect = mgr->renderState.emitter->resource->header->unk_30;
|
||||
|
||||
fx32 alpha = (fx32)(ptcl->unk_2E.unk_00_0 * (ptcl->unk_2E.unk_00_5 + 1)) >> 5;
|
||||
|
||||
|
|
@ -525,7 +525,7 @@ void sub_0209ECF0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
sclY = ptcl->unk_30;
|
||||
sclX = FX_MUL(sclY, aspect);
|
||||
|
||||
switch (mgr->unk_40.unk_00->resource->header->unk_48.unk_07_4) {
|
||||
switch (mgr->renderState.emitter->resource->header->unk_48.unk_07_4) {
|
||||
case 0:
|
||||
sclX = FX_MUL(sclX, ptcl->unk_34);
|
||||
sclY = FX_MUL(sclY, ptcl->unk_34);
|
||||
|
|
@ -540,7 +540,7 @@ void sub_0209ECF0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
break;
|
||||
}
|
||||
|
||||
if (!mgr->unk_40.unk_00->resource->header->flags.unk_06_7) {
|
||||
if (!mgr->renderState.emitter->resource->header->flags.unk_06_7) {
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z;
|
||||
|
|
@ -569,7 +569,7 @@ void sub_0209ECF0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
dot = -dot;
|
||||
}
|
||||
|
||||
dot = FX_MUL(sclY, FX_MUL(FX32_ONE - dot, (fx32)mgr->unk_40.unk_00->resource->header->unk_48.unk_05_0) + FX32_ONE);
|
||||
dot = FX_MUL(sclY, FX_MUL(FX32_ONE - dot, (fx32)mgr->renderState.emitter->resource->header->unk_48.unk_05_0) + FX32_ONE);
|
||||
load.m[0][0] = FX_MUL(dir.x, sclX);
|
||||
load.m[1][0] = FX_MUL(-dir.y, dot);
|
||||
load.m[3][0] = trs.x;
|
||||
|
|
@ -586,9 +586,9 @@ void sub_0209ECF0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
G3_Identity();
|
||||
G3_MultMtx43(&load);
|
||||
} else {
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x - mgr->unk_40.unk_00->resource->header->unk_04.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y - mgr->unk_40.unk_00->resource->header->unk_04.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z - mgr->unk_40.unk_00->resource->header->unk_04.z;
|
||||
trs.x = ptcl->position.x + ptcl->emitterPos.x - mgr->renderState.emitter->resource->header->unk_04.x;
|
||||
trs.y = ptcl->position.y + ptcl->emitterPos.y - mgr->renderState.emitter->resource->header->unk_04.y;
|
||||
trs.z = ptcl->position.z + ptcl->emitterPos.z - mgr->renderState.emitter->resource->header->unk_04.z;
|
||||
|
||||
dir = ptcl->velocity;
|
||||
|
||||
|
|
@ -614,7 +614,7 @@ void sub_0209ECF0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
dot = -dot;
|
||||
}
|
||||
|
||||
dot = FX_MUL(sclY, FX_MUL(FX32_ONE - dot, (fx32)mgr->unk_40.unk_00->resource->header->unk_48.unk_05_0) + FX32_ONE);
|
||||
dot = FX_MUL(sclY, FX_MUL(FX32_ONE - dot, (fx32)mgr->renderState.emitter->resource->header->unk_48.unk_05_0) + FX32_ONE);
|
||||
load.m[0][0] = FX_MUL(dir.x, sclX);
|
||||
load.m[1][0] = FX_MUL(-dir.y, dot);
|
||||
load.m[2][0] = 0;
|
||||
|
|
@ -630,19 +630,19 @@ void sub_0209ECF0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
|
||||
G3_Identity();
|
||||
|
||||
SPLResourceHeader *resBase = mgr->unk_40.unk_00->resource->header;
|
||||
SPLResourceHeader *resBase = mgr->renderState.emitter->resource->header;
|
||||
G3_Translate(resBase->unk_04.x, resBase->unk_04.y, resBase->unk_04.z);
|
||||
G3_MultMtx43(&load);
|
||||
}
|
||||
|
||||
GXRgb colA = ptcl->unk_36;
|
||||
GXRgb colB = mgr->unk_40.unk_00->unk_E2;
|
||||
GXRgb colB = mgr->renderState.emitter->unk_E2;
|
||||
G3_Color(GX_RGB(
|
||||
GX_RGB_R_(colA) * GX_RGB_R_(colB) >> 5,
|
||||
GX_RGB_G_(colA) * GX_RGB_G_(colB) >> 15,
|
||||
GX_RGB_B_(colA) * GX_RGB_B_(colB) >> 25));
|
||||
|
||||
SPLEmitter *emtr = mgr->unk_40.unk_00;
|
||||
SPLEmitter *emtr = mgr->renderState.emitter;
|
||||
sub_020A0500(emtr->unk_EC, emtr->unk_EE, 0, 0);
|
||||
}
|
||||
|
||||
|
|
@ -672,10 +672,10 @@ void sub_0209E9A0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
return;
|
||||
}
|
||||
|
||||
Unk_02100DA8[mgr->unk_40.unk_00->resource->header->flags.unk_06_1](FX_SinIdx(ptcl->unk_20), FX_CosIdx(ptcl->unk_20), &rotMtx);
|
||||
Unk_02100DA8[mgr->renderState.emitter->resource->header->flags.unk_06_1](FX_SinIdx(ptcl->unk_20), FX_CosIdx(ptcl->unk_20), &rotMtx);
|
||||
|
||||
sclY = ptcl->unk_30;
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
sclX = FX_MUL(sclY, resBase->unk_30);
|
||||
|
||||
switch (resBase->unk_48.unk_07_4) {
|
||||
|
|
@ -697,34 +697,34 @@ void sub_0209E9A0(SPLManager *mgr, SPLParticle *ptcl)
|
|||
MTX_Concat43(&sclMtx, &rotMtx, &load);
|
||||
|
||||
// resBase = mgr->unk_40.unk_00->p_res->header;
|
||||
if (!mgr->unk_40.unk_00->resource->header->flags.unk_06_7) {
|
||||
if (!mgr->renderState.emitter->resource->header->flags.unk_06_7) {
|
||||
load.m[3][0] = ptcl->position.x + ptcl->emitterPos.x;
|
||||
load.m[3][1] = ptcl->position.y + ptcl->emitterPos.y;
|
||||
load.m[3][2] = ptcl->position.z + ptcl->emitterPos.z;
|
||||
G3_LoadMtx43(mgr->unk_40.unk_04);
|
||||
G3_LoadMtx43(mgr->renderState.viewMatrix);
|
||||
G3_MultMtx43(&load);
|
||||
} else {
|
||||
load.m[3][0] = ptcl->position.x + ptcl->emitterPos.x - mgr->unk_40.unk_00->resource->header->unk_04.x;
|
||||
load.m[3][1] = ptcl->position.y + ptcl->emitterPos.y - mgr->unk_40.unk_00->resource->header->unk_04.y;
|
||||
load.m[3][2] = ptcl->position.z + ptcl->emitterPos.z - mgr->unk_40.unk_00->resource->header->unk_04.z;
|
||||
load.m[3][0] = ptcl->position.x + ptcl->emitterPos.x - mgr->renderState.emitter->resource->header->unk_04.x;
|
||||
load.m[3][1] = ptcl->position.y + ptcl->emitterPos.y - mgr->renderState.emitter->resource->header->unk_04.y;
|
||||
load.m[3][2] = ptcl->position.z + ptcl->emitterPos.z - mgr->renderState.emitter->resource->header->unk_04.z;
|
||||
|
||||
G3_Identity();
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
G3_Translate(resBase->unk_04.x, resBase->unk_04.y, resBase->unk_04.z);
|
||||
|
||||
G3_MultMtx43(mgr->unk_40.unk_04);
|
||||
G3_MultMtx43(mgr->renderState.viewMatrix);
|
||||
G3_MultMtx43(&load);
|
||||
}
|
||||
|
||||
GXRgb colA = ptcl->unk_36;
|
||||
GXRgb colB = mgr->unk_40.unk_00->unk_E2;
|
||||
GXRgb colB = mgr->renderState.emitter->unk_E2;
|
||||
G3_Color(GX_RGB(
|
||||
GX_RGB_R_(colA) * GX_RGB_R_(colB) >> 5,
|
||||
GX_RGB_G_(colA) * GX_RGB_G_(colB) >> 15,
|
||||
GX_RGB_B_(colA) * GX_RGB_B_(colB) >> 25));
|
||||
|
||||
SPLEmitter *emtr = mgr->unk_40.unk_00;
|
||||
SPLEmitter *emtr = mgr->renderState.emitter;
|
||||
resBase = emtr->resource->header;
|
||||
Unk_02100DA0[resBase->flags.unk_06_3](emtr->unk_E8, emtr->unk_EA, resBase->unk_54, resBase->unk_56);
|
||||
}
|
||||
|
|
@ -755,10 +755,10 @@ void sub_0209E650(SPLManager *mgr, SPLParticle *ptcl)
|
|||
return;
|
||||
}
|
||||
|
||||
Unk_02100DA8[mgr->unk_40.unk_00->resource->childResource->unk_00.unk_03_1](FX_SinIdx(ptcl->unk_20), FX_CosIdx(ptcl->unk_20), &rotMtx);
|
||||
Unk_02100DA8[mgr->renderState.emitter->resource->childResource->unk_00.unk_03_1](FX_SinIdx(ptcl->unk_20), FX_CosIdx(ptcl->unk_20), &rotMtx);
|
||||
|
||||
sclY = ptcl->unk_30;
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
sclX = FX_MUL(sclY, resBase->unk_30);
|
||||
|
||||
switch (resBase->unk_48.unk_07_4) {
|
||||
|
|
@ -779,33 +779,33 @@ void sub_0209E650(SPLManager *mgr, SPLParticle *ptcl)
|
|||
MTX_Scale43(&sclMtx, sclX, sclY, sclY);
|
||||
MTX_Concat43(&rotMtx, &sclMtx, &load);
|
||||
|
||||
if (!mgr->unk_40.unk_00->resource->header->flags.unk_06_7) {
|
||||
if (!mgr->renderState.emitter->resource->header->flags.unk_06_7) {
|
||||
load.m[3][0] = ptcl->position.x + ptcl->emitterPos.x;
|
||||
load.m[3][1] = ptcl->position.y + ptcl->emitterPos.y;
|
||||
load.m[3][2] = ptcl->position.z + ptcl->emitterPos.z;
|
||||
G3_LoadMtx43(mgr->unk_40.unk_04);
|
||||
G3_LoadMtx43(mgr->renderState.viewMatrix);
|
||||
G3_MultMtx43(&load);
|
||||
} else {
|
||||
load.m[3][0] = ptcl->position.x + ptcl->emitterPos.x - mgr->unk_40.unk_00->resource->header->unk_04.x;
|
||||
load.m[3][1] = ptcl->position.y + ptcl->emitterPos.y - mgr->unk_40.unk_00->resource->header->unk_04.y;
|
||||
load.m[3][2] = ptcl->position.z + ptcl->emitterPos.z - mgr->unk_40.unk_00->resource->header->unk_04.z;
|
||||
load.m[3][0] = ptcl->position.x + ptcl->emitterPos.x - mgr->renderState.emitter->resource->header->unk_04.x;
|
||||
load.m[3][1] = ptcl->position.y + ptcl->emitterPos.y - mgr->renderState.emitter->resource->header->unk_04.y;
|
||||
load.m[3][2] = ptcl->position.z + ptcl->emitterPos.z - mgr->renderState.emitter->resource->header->unk_04.z;
|
||||
|
||||
G3_Identity();
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
G3_Translate(resBase->unk_04.x, resBase->unk_04.y, resBase->unk_04.z);
|
||||
G3_MultMtx43(mgr->unk_40.unk_04);
|
||||
G3_MultMtx43(mgr->renderState.viewMatrix);
|
||||
G3_MultMtx43(&load);
|
||||
}
|
||||
|
||||
GXRgb colA = ptcl->unk_36;
|
||||
GXRgb colB = mgr->unk_40.unk_00->unk_E2;
|
||||
GXRgb colB = mgr->renderState.emitter->unk_E2;
|
||||
G3_Color(GX_RGB(
|
||||
GX_RGB_R_(colA) * GX_RGB_R_(colB) >> 5,
|
||||
GX_RGB_G_(colA) * GX_RGB_G_(colB) >> 15,
|
||||
GX_RGB_B_(colA) * GX_RGB_B_(colB) >> 25));
|
||||
|
||||
SPLEmitter *emtr = mgr->unk_40.unk_00;
|
||||
SPLEmitter *emtr = mgr->renderState.emitter;
|
||||
Unk_02100DA0[emtr->resource->childResource->unk_00.unk_03_3](emtr->unk_EC, emtr->unk_EE, 0, 0);
|
||||
}
|
||||
|
||||
|
|
@ -837,11 +837,11 @@ void sub_0209E1D4(SPLManager *mgr, SPLParticle *ptcl)
|
|||
return;
|
||||
}
|
||||
|
||||
Unk_02100DA8[mgr->unk_40.unk_00->resource->header->flags.unk_06_1](FX_SinIdx(ptcl->unk_20), FX_CosIdx(ptcl->unk_20), &rotMat);
|
||||
Unk_02100DA8[mgr->renderState.emitter->resource->header->flags.unk_06_1](FX_SinIdx(ptcl->unk_20), FX_CosIdx(ptcl->unk_20), &rotMat);
|
||||
|
||||
MTX_Identity43(&mat);
|
||||
|
||||
if (!mgr->unk_40.unk_00->resource->header->unk_48.unk_07_7) {
|
||||
if (!mgr->renderState.emitter->resource->header->unk_48.unk_07_7) {
|
||||
VEC_Normalize(&ptcl->velocity, &vec1);
|
||||
} else {
|
||||
VEC_Normalize(&ptcl->position, &vec1);
|
||||
|
|
@ -875,7 +875,7 @@ void sub_0209E1D4(SPLManager *mgr, SPLParticle *ptcl)
|
|||
mat.m[2][2] = vec3.z;
|
||||
MTX_Concat43(&rotMat, &mat, &rotMat);
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
scaleY = ptcl->unk_30;
|
||||
scaleX = FX_MUL(scaleY, resBase->unk_30);
|
||||
|
||||
|
|
@ -897,34 +897,34 @@ void sub_0209E1D4(SPLManager *mgr, SPLParticle *ptcl)
|
|||
MTX_Scale43(&sclMat, scaleX, scaleY, scaleY);
|
||||
MTX_Concat43(&sclMat, &rotMat, &transform);
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
if (!resBase->flags.unk_06_7) {
|
||||
transform.m[3][0] = ptcl->position.x + ptcl->emitterPos.x;
|
||||
transform.m[3][1] = ptcl->position.y + ptcl->emitterPos.y;
|
||||
transform.m[3][2] = ptcl->position.z + ptcl->emitterPos.z;
|
||||
G3_LoadMtx43(mgr->unk_40.unk_04);
|
||||
G3_LoadMtx43(mgr->renderState.viewMatrix);
|
||||
G3_MultMtx43(&transform);
|
||||
} else {
|
||||
transform.m[3][0] = ptcl->position.x + ptcl->emitterPos.x - resBase->unk_04.x;
|
||||
transform.m[3][1] = ptcl->position.y + ptcl->emitterPos.y - mgr->unk_40.unk_00->resource->header->unk_04.y;
|
||||
transform.m[3][2] = ptcl->position.z + ptcl->emitterPos.z - mgr->unk_40.unk_00->resource->header->unk_04.z;
|
||||
transform.m[3][1] = ptcl->position.y + ptcl->emitterPos.y - mgr->renderState.emitter->resource->header->unk_04.y;
|
||||
transform.m[3][2] = ptcl->position.z + ptcl->emitterPos.z - mgr->renderState.emitter->resource->header->unk_04.z;
|
||||
|
||||
G3_Identity();
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
G3_Translate(resBase->unk_04.x, resBase->unk_04.y, resBase->unk_04.z);
|
||||
G3_MultMtx43(mgr->unk_40.unk_04);
|
||||
G3_MultMtx43(mgr->renderState.viewMatrix);
|
||||
G3_MultMtx43(&transform);
|
||||
}
|
||||
|
||||
colA = ptcl->unk_36;
|
||||
colB = mgr->unk_40.unk_00->unk_E2;
|
||||
colB = mgr->renderState.emitter->unk_E2;
|
||||
G3_Color(GX_RGB(
|
||||
GX_RGB_R_(colA) * GX_RGB_R_(colB) >> 5,
|
||||
GX_RGB_G_(colA) * GX_RGB_G_(colB) >> 15,
|
||||
GX_RGB_B_(colA) * GX_RGB_B_(colB) >> 25));
|
||||
|
||||
emtr = mgr->unk_40.unk_00;
|
||||
emtr = mgr->renderState.emitter;
|
||||
resBase = emtr->resource->header;
|
||||
Unk_02100DA0[resBase->flags.unk_06_3](emtr->unk_E8, emtr->unk_EA, resBase->unk_54, resBase->unk_56);
|
||||
}
|
||||
|
|
@ -955,11 +955,11 @@ void sub_0209DD54(SPLManager *mgr, SPLParticle *ptcl)
|
|||
return;
|
||||
}
|
||||
|
||||
Unk_02100DA8[mgr->unk_40.unk_00->resource->childResource->unk_00.unk_03_1](FX_SinIdx(ptcl->unk_20), FX_CosIdx(ptcl->unk_20), &rotMtx);
|
||||
Unk_02100DA8[mgr->renderState.emitter->resource->childResource->unk_00.unk_03_1](FX_SinIdx(ptcl->unk_20), FX_CosIdx(ptcl->unk_20), &rotMtx);
|
||||
|
||||
MTX_Identity43(&mat);
|
||||
|
||||
if (!mgr->unk_40.unk_00->resource->childResource->unk_0C.unk_04_6) {
|
||||
if (!mgr->renderState.emitter->resource->childResource->unk_0C.unk_04_6) {
|
||||
VEC_Normalize(&ptcl->velocity, &vec1);
|
||||
} else {
|
||||
VEC_Normalize(&ptcl->position, &vec1);
|
||||
|
|
@ -993,7 +993,7 @@ void sub_0209DD54(SPLManager *mgr, SPLParticle *ptcl)
|
|||
mat.m[2][2] = vec3.z;
|
||||
MTX_Concat43(&rotMtx, &mat, &rotMtx);
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
scaleY = ptcl->unk_30;
|
||||
scaleX = FX_MUL(scaleY, resBase->unk_30);
|
||||
|
||||
|
|
@ -1015,33 +1015,33 @@ void sub_0209DD54(SPLManager *mgr, SPLParticle *ptcl)
|
|||
MTX_Scale43(&sclMat, scaleX, scaleY, scaleY);
|
||||
MTX_Concat43(&rotMtx, &sclMat, &transform);
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
if (!resBase->flags.unk_06_7) {
|
||||
transform.m[3][0] = ptcl->position.x + ptcl->emitterPos.x;
|
||||
transform.m[3][1] = ptcl->position.y + ptcl->emitterPos.y;
|
||||
transform.m[3][2] = ptcl->position.z + ptcl->emitterPos.z;
|
||||
G3_LoadMtx43(mgr->unk_40.unk_04);
|
||||
G3_LoadMtx43(mgr->renderState.viewMatrix);
|
||||
G3_MultMtx43(&transform);
|
||||
} else {
|
||||
transform.m[3][0] = ptcl->position.x + ptcl->emitterPos.x - resBase->unk_04.x;
|
||||
transform.m[3][1] = ptcl->position.y + ptcl->emitterPos.y - mgr->unk_40.unk_00->resource->header->unk_04.y;
|
||||
transform.m[3][2] = ptcl->position.z + ptcl->emitterPos.z - mgr->unk_40.unk_00->resource->header->unk_04.z;
|
||||
transform.m[3][1] = ptcl->position.y + ptcl->emitterPos.y - mgr->renderState.emitter->resource->header->unk_04.y;
|
||||
transform.m[3][2] = ptcl->position.z + ptcl->emitterPos.z - mgr->renderState.emitter->resource->header->unk_04.z;
|
||||
|
||||
G3_Identity();
|
||||
|
||||
resBase = mgr->unk_40.unk_00->resource->header;
|
||||
resBase = mgr->renderState.emitter->resource->header;
|
||||
G3_Translate(resBase->unk_04.x, resBase->unk_04.y, resBase->unk_04.z);
|
||||
G3_MultMtx43(mgr->unk_40.unk_04);
|
||||
G3_MultMtx43(mgr->renderState.viewMatrix);
|
||||
G3_MultMtx43(&transform);
|
||||
}
|
||||
|
||||
GXRgb colA = ptcl->unk_36;
|
||||
GXRgb colB = mgr->unk_40.unk_00->unk_E2;
|
||||
GXRgb colB = mgr->renderState.emitter->unk_E2;
|
||||
G3_Color(GX_RGB(
|
||||
GX_RGB_R_(colA) * GX_RGB_R_(colB) >> 5,
|
||||
GX_RGB_G_(colA) * GX_RGB_G_(colB) >> 15,
|
||||
GX_RGB_B_(colA) * GX_RGB_B_(colB) >> 25));
|
||||
|
||||
SPLEmitter *emtr = mgr->unk_40.unk_00;
|
||||
SPLEmitter *emtr = mgr->renderState.emitter;
|
||||
Unk_02100DA0[emtr->resource->childResource->unk_00.unk_03_3](emtr->unk_EC, emtr->unk_EE, 0, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include "heap.h"
|
||||
#include "narc.h"
|
||||
#include "spl_behavior.h"
|
||||
#include "spl_manager.h"
|
||||
#include "sys_task.h"
|
||||
#include "sys_task_manager.h"
|
||||
|
||||
|
|
@ -511,7 +512,7 @@ void sub_02014638(UnkStruct_02014014 *param0)
|
|||
NNS_G3dGlbFlush();
|
||||
|
||||
v0 = NNS_G3dGlbGetCameraMtx();
|
||||
SPL_0209C5E0(param0->unk_00, v0);
|
||||
SPLManager_Draw(param0->unk_00, v0);
|
||||
|
||||
if (param0->camera != NULL) {
|
||||
Camera_ClearActive();
|
||||
|
|
@ -570,7 +571,7 @@ SPLEmitter *sub_020146E4(UnkStruct_02014014 *param0, int param1, const VecFx32 *
|
|||
{
|
||||
SPLEmitter *v0;
|
||||
|
||||
v0 = SPL_0209C56C(param0->unk_00, param1, param2);
|
||||
v0 = SPLManager_CreateEmitter(param0->unk_00, param1, param2);
|
||||
param0->unk_08 = v0;
|
||||
|
||||
return v0;
|
||||
|
|
@ -581,7 +582,7 @@ SPLEmitter *sub_020146F4(UnkStruct_02014014 *param0, int param1, UnkFuncPtr_0201
|
|||
SPLEmitter *v0;
|
||||
|
||||
Unk_021BF614 = param3;
|
||||
v0 = SPL_0209C4D8(param0->unk_00, param1, param2);
|
||||
v0 = SPLManager_CreateEmitterWithCallback(param0->unk_00, param1, param2);
|
||||
Unk_021BF614 = NULL;
|
||||
param0->unk_08 = v0;
|
||||
|
||||
|
|
@ -595,12 +596,12 @@ s32 sub_02014710(UnkStruct_02014014 *param0)
|
|||
|
||||
void sub_02014718(UnkStruct_02014014 *param0)
|
||||
{
|
||||
SPL_0209C400(param0->unk_00);
|
||||
SPLManager_DeleteAllEmitters(param0->unk_00);
|
||||
}
|
||||
|
||||
void sub_02014724(UnkStruct_02014014 *param0, SPLEmitter *param1)
|
||||
{
|
||||
SPL_0209C444(param0->unk_00, param1);
|
||||
SPLManager_DeleteEmitter(param0->unk_00, param1);
|
||||
}
|
||||
|
||||
void *sub_02014730(UnkStruct_02014014 *param0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user