mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-09 14:05:28 -04:00
JPAEmitterLoader match, JPAEmitterManager almost
This commit is contained in:
+1
-1
@@ -568,7 +568,7 @@ config.libs = [
|
||||
Object(Matching, "JSystem/JParticle/JPAKeyBlock.cpp"),
|
||||
Object(Matching, "JSystem/JParticle/JPATexture.cpp"),
|
||||
Object(Matching, "JSystem/JParticle/JPAResourceManager.cpp"),
|
||||
Object(NonMatching, "JSystem/JParticle/JPAEmitterLoader.cpp"),
|
||||
Object(Matching, "JSystem/JParticle/JPAEmitterLoader.cpp"),
|
||||
Object(NonMatching, "JSystem/JParticle/JPAMath.cpp"),
|
||||
Object(NonMatching, "JSystem/JParticle/JPAField.cpp"),
|
||||
Object(NonMatching, "JSystem/JParticle/JPAEmitter.cpp"),
|
||||
|
||||
@@ -131,7 +131,8 @@ public:
|
||||
|
||||
class JPABaseEmitter {
|
||||
public:
|
||||
JPABaseEmitter();
|
||||
JPABaseEmitter() : mLink(this), mRandomSeed(0), mTick(0.0f), mTime(0.0f) {}
|
||||
~JPABaseEmitter() {}
|
||||
|
||||
typedef void (JPABaseEmitter::*VolumeFunc)();
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ public:
|
||||
|
||||
class JPAFieldData {
|
||||
public:
|
||||
JPAFieldData();
|
||||
virtual ~JPAFieldData();
|
||||
JPAFieldData() : mLink(this) {}
|
||||
virtual ~JPAFieldData() {}
|
||||
JSULink<JPAFieldData>* getLinkBufferPtr() { return &mLink; }
|
||||
|
||||
static JPAEmitterInfo * pEmtrInfo;
|
||||
|
||||
@@ -31,8 +31,8 @@ public:
|
||||
bool checkCreateChild();
|
||||
JSULink<JPABaseParticle>* getLinkBufferPtr() { return &mLink; }
|
||||
|
||||
~JPABaseParticle();
|
||||
JPABaseParticle();
|
||||
~JPABaseParticle() {}
|
||||
JPABaseParticle() : mLink(this), mCurFrame(0.0f) {}
|
||||
|
||||
public:
|
||||
/* 0x00 */ JSULink<JPABaseParticle> mLink;
|
||||
|
||||
@@ -30,6 +30,31 @@ public:
|
||||
/* 0x0C */ JPATextureResource* mpTexRes;
|
||||
};
|
||||
|
||||
static void dummy() {
|
||||
OSReport("JPAEmitterLoader.cpp");
|
||||
OSReport("%s");
|
||||
OSReport("This is WRONG Version File\n");
|
||||
OSReport("This is NO JPA File\n");
|
||||
OSReport("pEmtrRes");
|
||||
OSReport("Halt");
|
||||
OSReport("pEmtrRes->pLinkInfoArray");
|
||||
OSReport("pLinkInfo");
|
||||
OSReport("pLinkInfo->keyBlocks || pLinkInfo->keyNum == 0");
|
||||
OSReport("pLinkInfo->fldBlocks || pLinkInfo->fldNum == 0");
|
||||
OSReport("pLinkInfo->texDataBase || texNum == 0");
|
||||
OSReport("pLinkInfo->fldBlocks[fldCntr]");
|
||||
OSReport("pLinkInfo->keyBlocks[keyCntr]");
|
||||
OSReport("pLinkInfo->dynBlock");
|
||||
OSReport("pLinkInfo->bspBlock");
|
||||
OSReport("pLinkInfo->espBlock");
|
||||
OSReport("pLinkInfo->sspBlock");
|
||||
OSReport("pLinkInfo->etxBlock");
|
||||
OSReport("This is WRONG File\n");
|
||||
OSReport("pLinkInfo->fldBlocks[fld_cntr]");
|
||||
OSReport("pLinkInfo->keyBlocks[key_cntr]");
|
||||
OSReport("pTex");
|
||||
}
|
||||
|
||||
/* 802590B4-8025917C .text load__31JPAEmitterArchiveLoaderDataBaseFPCUcP7JKRHeapPP18JPAEmitterResourcePP18JPATextureResource */
|
||||
void JPAEmitterArchiveLoaderDataBase::load(const u8* data, JKRHeap* heap, JPAEmitterResource** dstEmtrRes, JPATextureResource** dstTexRes) {
|
||||
u32 magic = ((const u32*)data)[0];
|
||||
@@ -107,7 +132,7 @@ void JPAEmitterArchiveLoader_v10::load() {
|
||||
break;
|
||||
case 'KFA1':
|
||||
pLinkInfo->keyBlocks[key_cntr] = (JPAKeyBlock*) new(pHeap, 0) JPAKeyBlockArc(pData + blockOffs);
|
||||
JUT_ASSERT(278, pLinkInfo->keyBlocks[key_cntr]);
|
||||
JUT_ASSERT(279, pLinkInfo->keyBlocks[key_cntr]);
|
||||
key_cntr++;
|
||||
break;
|
||||
case 'BEM1':
|
||||
@@ -144,7 +169,7 @@ void JPAEmitterArchiveLoader_v10::load() {
|
||||
|
||||
for (s32 i = 0; i < header->texResNum; i++) {
|
||||
u32 size = *(u32*)(pData + offs + 0x04);
|
||||
JPATextureArc* pTex = new(pHeap, 0) JPATextureArc(pData + offs);
|
||||
JPATexture* pTex = new(pHeap, 0) JPATextureArc(pData + offs);
|
||||
JUT_ASSERT(319, pTex);
|
||||
getTextureResource()->registration(pTex);
|
||||
offs += size;
|
||||
|
||||
@@ -12,26 +12,26 @@
|
||||
|
||||
/* 8025EE44-8025F0E4 .text __ct__17JPAEmitterManagerFP18JPAResourceManagerUlUlUlP7JKRHeap */
|
||||
JPAEmitterManager::JPAEmitterManager(JPAResourceManager* resMgr, u32 ptclNum, u32 emtrNum, u32 fieldNum, JKRHeap* heap) {
|
||||
/* Nonmatching */
|
||||
heap = heap != NULL ? heap : JKRHeap::getCurrentHeap();
|
||||
mPtclNum = ptclNum;
|
||||
mEmtrNum = emtrNum;
|
||||
mFieldNum = fieldNum;
|
||||
pResMgrArray[0] = resMgr;
|
||||
|
||||
for (u32 i = 1; i < 8; i++)
|
||||
u32 i;
|
||||
for (i = 1; i < 8; i++)
|
||||
pResMgrArray[i] = 0;
|
||||
|
||||
JPABaseParticle* pPtclArray = new(heap, 0) JPABaseParticle[mPtclNum];
|
||||
JUT_ASSERT(0x2e, pPtclArray);
|
||||
for (u32 i = 0; i < mPtclNum; i++) {
|
||||
for (i = 0; i < mPtclNum; i++) {
|
||||
JPABaseParticle* ptcl = &pPtclArray[i];
|
||||
mPtclPool.prepend(ptcl->getLinkBufferPtr());
|
||||
}
|
||||
|
||||
JPABaseEmitter* pEmtrArray = new(heap, 0) JPABaseEmitter[mEmtrNum];
|
||||
JUT_ASSERT(0x35, pEmtrArray);
|
||||
for (u32 i = 0; i < mEmtrNum; i++) {
|
||||
for (i = 0; i < mEmtrNum; i++) {
|
||||
JPABaseEmitter* emtr = &pEmtrArray[i];
|
||||
emtr->setParticleList(&mPtclPool);
|
||||
emtr->setFieldList(&mFieldPool);
|
||||
@@ -40,7 +40,7 @@ JPAEmitterManager::JPAEmitterManager(JPAResourceManager* resMgr, u32 ptclNum, u3
|
||||
|
||||
JPAFieldData* pFieldArray = new(heap, 0) JPAFieldData[mFieldNum];
|
||||
JUT_ASSERT(0x3e, pFieldArray);
|
||||
for (u32 i = 0; i < mFieldNum; i++) {
|
||||
for (i = 0; i < mFieldNum; i++) {
|
||||
JPAFieldData* field = &pFieldArray[i];
|
||||
mFieldPool.prepend(field->getLinkBufferPtr());
|
||||
}
|
||||
@@ -48,7 +48,7 @@ JPAEmitterManager::JPAEmitterManager(JPAResourceManager* resMgr, u32 ptclNum, u3
|
||||
|
||||
/* 8025F0E4-8025F2F4 .text createSimpleEmitterID__17JPAEmitterManagerFRCQ29JGeometry8TVec3<f>UsUcUcP34JPACallBackBase<P14JPABaseEmitter>P54JPACallBackBase2<P14JPABaseEmitter,P15JPABaseParticle> */
|
||||
JPABaseEmitter* JPAEmitterManager::createSimpleEmitterID(const JGeometry::TVec3<float>& pos, u16 userID, u8 groupID, u8 rmID, JPACallBackBase<JPABaseEmitter*>* pEmtrCallBack, JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* pPtclCallBack) {
|
||||
/* Nonmatching */
|
||||
/* Nonmatching - regalloc */
|
||||
JUT_ASSERT(0x56, groupID < 16);
|
||||
JUT_ASSERT(0x57, rmID < 8);
|
||||
JUT_ASSERT(0x58, pResMgrArray[rmID] != 0);
|
||||
@@ -127,12 +127,10 @@ void JPAEmitterManager::forceDeleteEmitter(JPABaseEmitter* emtr) {
|
||||
|
||||
/* 8025F53C-8025F5B4 .text forceDeleteAllEmitter__17JPAEmitterManagerFv */
|
||||
void JPAEmitterManager::forceDeleteAllEmitter() {
|
||||
/* Nonmatching */
|
||||
for (u32 i = 0; i < 16; i++) {
|
||||
for (u8 i = 0; i < 16; i++) {
|
||||
for (JSULink<JPABaseEmitter>* link = mEmtrGroup[i].getFirst(); link != NULL;) {
|
||||
JSULink<JPABaseEmitter>* next = link->getNext();
|
||||
JPABaseEmitter* emtr = link->getObject();
|
||||
forceDeleteEmitter(emtr);
|
||||
forceDeleteEmitter(link->getObject());
|
||||
link = next;
|
||||
}
|
||||
}
|
||||
@@ -140,9 +138,8 @@ void JPAEmitterManager::forceDeleteAllEmitter() {
|
||||
|
||||
/* 8025F5B4-8025F68C .text clearResourceManager__17JPAEmitterManagerFUc */
|
||||
void JPAEmitterManager::clearResourceManager(u8 rmID) {
|
||||
/* Nonmatching */
|
||||
JUT_ASSERT(0x14b, rmID < 8);
|
||||
for (u32 i = 0; i < 16; i++) {
|
||||
for (u8 i = 0; i < 16; i++) {
|
||||
for (JSULink<JPABaseEmitter>* link = mEmtrGroup[i].getFirst(); link != NULL;) {
|
||||
JSULink<JPABaseEmitter>* next = link->getNext();
|
||||
JPABaseEmitter* emtr = link->getObject();
|
||||
|
||||
Reference in New Issue
Block a user