tp/libs/JSystem/JParticle/JPAEmitter.cpp

185 lines
5.9 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: JPAEmitter
//
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPADynamicsBlock.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAResource.h"
#include "JSystem/JParticle/JPAResourceManager.h"
#include "dol2asm.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
//
// Types:
//
//
// Forward References:
//
extern "C" void __dt__18JPAEmitterCallBackFv();
extern "C" void init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource();
extern "C" void createParticle__14JPABaseEmitterFv();
extern "C" void createChild__14JPABaseEmitterFP15JPABaseParticle();
extern "C" void deleteAllParticle__14JPABaseEmitterFv();
extern "C" void processTillStartFrame__14JPABaseEmitterFv();
extern "C" void processTermination__14JPABaseEmitterFv();
extern "C" void func_8027EEB0();
extern "C" void getCurrentCreateNumber__14JPABaseEmitterCFv();
extern "C" void getDrawCount__14JPABaseEmitterCFv();
extern "C" void loadTexture__14JPABaseEmitterFUc11_GXTexMapID();
//
// External References:
//
extern "C" void init_p__15JPABaseParticleFP18JPAEmitterWorkData();
extern "C" void init_c__15JPABaseParticleFP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void __dl__FPv();
extern "C" void load__10JUTTextureF11_GXTexMapID();
extern "C" extern void* __vt__18JPAEmitterCallBack[7];
extern "C" extern u32 __float_epsilon;
//
// Declarations:
//
/* 8027E6A4-8027E6EC 278FE4 0048+00 0/0 14/14 16/16 .text __dt__18JPAEmitterCallBackFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JPAEmitterCallBack::~JPAEmitterCallBack() {
nofralloc
#include "asm/JSystem/JParticle/JPAEmitter/__dt__18JPAEmitterCallBackFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80455370-80455374 003970 0004+00 1/1 0/0 0/0 .sdata2 @2440 */
SECTION_SDATA2 static f32 lit_2440 = 32.0f;
/* 80455374-80455378 003974 0004+00 1/1 0/0 0/0 .sdata2 @2441 */
SECTION_SDATA2 static u8 lit_2441[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 80455378-8045537C 003978 0004+00 1/1 0/0 0/0 .sdata2 @2442 */
SECTION_SDATA2 static f32 lit_2442 = 0.5f;
/* 8045537C-80455380 00397C 0004+00 1/1 0/0 0/0 .sdata2 @2443 */
SECTION_SDATA2 static f32 lit_2443 = 3.0f;
/* 80455380-80455388 003980 0004+04 1/1 0/0 0/0 .sdata2 @2444 */
SECTION_SDATA2 static f32 lit_2444[1 + 1 /* padding */] = {
1.0f,
/* padding */
0.0f,
};
/* 8027E6EC-8027EA40 27902C 0354+00 0/0 1/1 0/0 .text
* init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPABaseEmitter::init(JPAEmitterManager* param_0, JPAResource* param_1) {
nofralloc
#include "asm/JSystem/JParticle/JPAEmitter/init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource.s"
}
#pragma pop
/* 8027EA40-8027EB60 279380 0120+00 0/0 3/3 0/0 .text createParticle__14JPABaseEmitterFv
*/
JPABaseParticle* JPABaseEmitter::createParticle() {
if (mpPtclPool->getNum() != 0) {
JPANode<JPABaseParticle>* node = mpPtclPool->pop_front();
mAlivePtclBase.push_front(node);
mpRes->getDyn()->calc(mpEmtrMgr->mpWorkData);
node->mData.init_p(mpEmtrMgr->mpWorkData);
return &node->mData;
}
return NULL;
}
/* 8027EB60-8027EC60 2794A0 0100+00 0/0 1/1 0/0 .text
* createChild__14JPABaseEmitterFP15JPABaseParticle */
JPABaseParticle* JPABaseEmitter::createChild(JPABaseParticle* parent) {
if (mpPtclPool->getNum() != 0) {
JPANode<JPABaseParticle>* node = mpPtclPool->pop_front();
mAlivePtclChld.push_front(node);
node->mData.init_c(mpEmtrMgr->mpWorkData, parent);
return &node->mData;
}
return NULL;
}
/* 8027EC60-8027EDD4 2795A0 0174+00 0/0 2/2 21/21 .text deleteAllParticle__14JPABaseEmitterFv */
void JPABaseEmitter::deleteAllParticle() {
while (mAlivePtclBase.getNum())
mpPtclPool->push_front(mAlivePtclBase.pop_back());
while (mAlivePtclChld.getNum())
mpPtclPool->push_front(mAlivePtclChld.pop_back());
}
/* 8027EDD4-8027EE14 279714 0040+00 0/0 1/1 0/0 .text processTillStartFrame__14JPABaseEmitterFv */
bool JPABaseEmitter::processTillStartFrame() {
JPADynamicsBlock* dyn = mpRes->getDyn();
s16 startFrame = dyn->getStartFrame();
if (mWaitTime >= startFrame)
return true;
if (!(mStatus & 2))
mWaitTime++;
return false;
}
/* 8027EE14-8027EEB0 279754 009C+00 0/0 1/1 0/0 .text processTermination__14JPABaseEmitterFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPABaseEmitter::processTermination() {
nofralloc
#include "asm/JSystem/JParticle/JPAEmitter/processTermination__14JPABaseEmitterFv.s"
}
#pragma pop
/* 8027EEB0-8027EF30 2797F0 0080+00 0/0 1/1 0/0 .text
* calcEmitterGlobalPosition__14JPABaseEmitterCFPQ29JGeometry8TVec3<f> */
void JPABaseEmitter::calcEmitterGlobalPosition(JGeometry::TVec3<f32>* dst) const {
Mtx mtx;
PSMTXScale(mtx, mGlobalScl.x, mGlobalScl.y, mGlobalScl.z);
PSMTXConcat(mGlobalRot, mtx, mtx);
mtx[0][3] = mGlobalTrs.x;
mtx[1][3] = mGlobalTrs.y;
mtx[2][3] = mGlobalTrs.z;
PSMTXMultVec(mtx, &mLocalTrs, *dst);
}
/* 8027EF30-8027EF40 279870 0010+00 0/0 1/1 0/0 .text getCurrentCreateNumber__14JPABaseEmitterCFv
*/
u32 JPABaseEmitter::getCurrentCreateNumber() const {
return mpEmtrMgr->mpWorkData->mEmitCount;
}
/* 8027EF40-8027EF50 279880 0010+00 0/0 3/3 0/0 .text getDrawCount__14JPABaseEmitterCFv
*/
u8 JPABaseEmitter::getDrawCount() const {
return mpEmtrMgr->mpWorkData->mDrawCount;
}
/* 8027EF50-8027EFA4 279890 0054+00 0/0 1/1 0/0 .text
* loadTexture__14JPABaseEmitterFUc11_GXTexMapID */
bool JPABaseEmitter::loadTexture(u8 idx, GXTexMapID texMapID) {
mpEmtrMgr->mpWorkData->mpResMgr->load(mpRes->getTexIdx(idx), texMapID);
return true;
}