Re-import JParticle

This commit is contained in:
robojumper
2026-05-07 21:13:24 +02:00
parent d8744e1f34
commit f4d163797f
30 changed files with 863 additions and 1277 deletions
+13 -54
View File
@@ -1,16 +1,10 @@
//
// Generated By: dol2asm
// Translation Unit: JPAFieldBlock
//
#include "egg/core/eggHeap.h"
#include "JSystem/JParticle/JPAFieldBlock.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "egg/math/eggVector.h"
/* 8027BDEC-8027BF18 27672C 012C+00 8/8 0/0 0/0 .text
* calcAffect__12JPAFieldBaseFP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldBase::calcAffect(JPAFieldBlock* block, JPABaseParticle* ptcl) {
EGG::Vector3f vec = mAccel;
if (!ptcl->checkStatus(4) && block->checkStatus(0x78)) {
@@ -30,8 +24,6 @@ void JPAFieldBase::calcAffect(JPAFieldBlock* block, JPABaseParticle* ptcl) {
}
}
/* 8027BF18-8027BFB4 276858 009C+00 2/2 0/0 0/0 .text
* calcFadeAffect__12JPAFieldBaseCFP13JPAFieldBlockf */
f32 JPAFieldBase::calcFadeAffect(JPAFieldBlock* block, f32 time) const {
f32 fade = 1.0f;
if ((block->checkStatus(8) && time < block->getEnTime())
@@ -46,8 +38,6 @@ f32 JPAFieldBase::calcFadeAffect(JPAFieldBlock* block, f32 time) const {
return fade;
}
/* 8027BFB4-8027C054 2768F4 00A0+00 1/0 0/0 0/0 .text
* prepare__15JPAFieldGravityFP18JPAEmitterWorkDataP13JPAFieldBlock */
void JPAFieldGravity::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
if (block->checkStatus(2)) {
mAccel = block->getMag() * block->getDir();
@@ -57,14 +47,10 @@ void JPAFieldGravity::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
}
}
/* 8027C054-8027C07C 276994 0028+00 1/0 0/0 0/0 .text
* calc__15JPAFieldGravityFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldGravity::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
calcAffect(block, ptcl);
}
/* 8027C07C-8027C1B8 2769BC 013C+00 1/0 0/0 0/0 .text
* prepare__11JPAFieldAirFP18JPAEmitterWorkDataP13JPAFieldBlock */
void JPAFieldAir::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
EGG::Vector3f vec = block->getDir();
vec.normalise();
@@ -76,8 +62,6 @@ void JPAFieldAir::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
}
}
/* 8027C1B8-8027C24C 276AF8 0094+00 1/0 0/0 0/0 .text
* calc__11JPAFieldAirFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldAir::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
calcAffect(block, ptcl);
if (block->checkStatus(4)) {
@@ -88,31 +72,23 @@ void JPAFieldAir::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABasePa
}
}
/* 8027C24C-8027C29C 276B8C 0050+00 1/0 0/0 0/0 .text
* prepare__14JPAFieldMagnetFP18JPAEmitterWorkDataP13JPAFieldBlock */
void JPAFieldMagnet::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
mDir = block->getPos() - work->mEmitterPos;
MTXMultVecSR(work->mRotationMtx, mDir, mDir);
}
/* 8027C29C-8027C36C 276BDC 00D0+00 1/0 0/0 0/0 .text
* calc__14JPAFieldMagnetFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldMagnet::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
mAccel = mDir - ptcl->mLocalPosition;
mAccel.setLength(block->getMag());
calcAffect(block, ptcl);
}
/* 8027C36C-8027C3E0 276CAC 0074+00 1/0 0/0 0/0 .text
* prepare__14JPAFieldNewtonFP18JPAEmitterWorkDataP13JPAFieldBlock */
void JPAFieldNewton::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
mDir = block->getPos() - work->mEmitterPos;
MTXMultVecSR(work->mRotationMtx, mDir, mDir);
mCutoff = block->getVal1() * block->getVal1();
}
/* 8027C3E0-8027C56C 276D20 018C+00 1/0 0/0 0/0 .text
* calc__14JPAFieldNewtonFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldNewton::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
mAccel = mDir - ptcl->mLocalPosition;
f32 len_sq = mAccel.squaredLength();
@@ -124,8 +100,6 @@ void JPAFieldNewton::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABas
calcAffect(block, ptcl);
}
/* 8027C56C-8027C674 276EAC 0108+00 1/0 0/0 0/0 .text
* prepare__14JPAFieldVortexFP18JPAEmitterWorkDataP13JPAFieldBlock */
void JPAFieldVortex::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
MTXMultVecSR(work->mGlobalRot, block->getDir(), field_0x10);
field_0x10.normalise();
@@ -133,8 +107,6 @@ void JPAFieldVortex::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
field_0x20 = 1.0f / field_0x1c;
}
/* 8027C674-8027C814 276FB4 01A0+00 1/0 0/0 0/0 .text
* calc__14JPAFieldVortexFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldVortex::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
EGG::Vector3f vec;
vec = field_0x10.dot(ptcl->mLocalPosition) * field_0x10;
@@ -152,8 +124,6 @@ void JPAFieldVortex::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABas
calcAffect(block, ptcl);
}
/* 8027C814-8027CA94 277154 0280+00 1/0 0/0 0/0 .text
* prepare__18JPAFieldConvectionFP18JPAEmitterWorkDataP13JPAFieldBlock */
void JPAFieldConvection::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
EGG::Vector3f vec1, vec2;
vec2 = block->getPos().cross(block->getDir());
@@ -166,8 +136,6 @@ void JPAFieldConvection::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block)
field_0x28.normalise();
}
/* 8027CA94-8027CCCC 2773D4 0238+00 1/0 0/0 0/0 .text
* calc__18JPAFieldConvectionFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldConvection::calc(JPAEmitterWorkData* work, JPAFieldBlock* block,
JPABaseParticle* ptcl) {
EGG::Vector3f vec1, vec2, vec3;
@@ -182,8 +150,6 @@ void JPAFieldConvection::calc(JPAEmitterWorkData* work, JPAFieldBlock* block,
calcAffect(block, ptcl);
}
/* 8027CCCC-8027CDE4 27760C 0118+00 1/0 0/0 0/0 .text
* calc__14JPAFieldRandomFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldRandom::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
if (ptcl->mAge == 0 || (block->getCycle() != 0 && ptcl->mAge % block->getCycle() == 0)) {
JPABaseEmitter* emtr = work->mpEmtr;
@@ -193,8 +159,6 @@ void JPAFieldRandom::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABas
}
}
/* 8027CDE4-8027CE64 277724 0080+00 1/0 0/0 0/0 .text
* calc__12JPAFieldDragFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldDrag::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
if (!ptcl->checkStatus(4)) {
f32 fade = calcFadeAffect(block, ptcl->mTime);
@@ -204,8 +168,6 @@ void JPAFieldDrag::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseP
}
}
/* 8027CE64-8027CFA8 2777A4 0144+00 1/0 0/0 0/0 .text
* prepare__12JPAFieldSpinFP18JPAEmitterWorkDataP13JPAFieldBlock */
void JPAFieldSpin::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
EGG::Vector3f axis;
MTXMultVecSR(work->mGlobalRot, block->getDir(), axis);
@@ -217,8 +179,6 @@ void JPAFieldSpin::prepare(JPAEmitterWorkData* work, JPAFieldBlock* block) {
field_0x28.set(mtx[0][2], mtx[1][2], mtx[2][2]);
}
/* 8027CFA8-8027D088 2778E8 00E0+00 1/0 0/0 0/0 .text
* calc__12JPAFieldSpinFP18JPAEmitterWorkDataP13JPAFieldBlockP15JPABaseParticle */
void JPAFieldSpin::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseParticle* ptcl) {
Mtx mtx;
mtx[0][0] = field_0x10.x;
@@ -238,14 +198,11 @@ void JPAFieldSpin::calc(JPAEmitterWorkData* work, JPAFieldBlock* block, JPABaseP
calcAffect(block, ptcl);
}
/* 8027D088-8027D0C0 2779C8 0038+00 0/0 1/1 0/0 .text __ct__13JPAFieldBlockFPCUcP7JKRHeap
*/
JPAFieldBlock::JPAFieldBlock(u8 const* data, EGG::Heap* heap)
: mpData((const JPAFieldBlockData*)data) {
init(heap);
}
/* 8027D0C0-8027D3AC 277A00 02EC+00 2/1 0/0 0/0 .text init__13JPAFieldBlockFP7JKRHeap */
void JPAFieldBlock::init(EGG::Heap* heap) {
mFadeInRate = getFadeInTime() - getEnTime();
if (mFadeInRate == 0.0f) {
@@ -267,34 +224,36 @@ void JPAFieldBlock::init(EGG::Heap* heap) {
switch (getType()) {
case FIELD_GRAVITY:
mpField = new (heap, 4) JPAFieldGravity();
pFld = new (heap) JPAFieldGravity();
break;
case FIELD_AIR:
mpField = new (heap, 4) JPAFieldAir();
pFld = new (heap) JPAFieldAir();
break;
case FIELD_MAGNET:
mpField = new (heap, 4) JPAFieldMagnet();
pFld = new (heap) JPAFieldMagnet();
break;
case FIELD_NEWTON:
mpField = new (heap, 4) JPAFieldNewton();
pFld = new (heap) JPAFieldNewton();
break;
case FIELD_VORTEX:
mpField = new (heap, 4) JPAFieldVortex();
pFld = new (heap) JPAFieldVortex();
break;
case FIELD_RANDOM:
mpField = new (heap, 4) JPAFieldRandom();
pFld = new (heap) JPAFieldRandom();
break;
case FIELD_DRAG:
mpField = new (heap, 4) JPAFieldDrag();
pFld = new (heap) JPAFieldDrag();
break;
case FIELD_CONVECTION:
mpField = new (heap, 4) JPAFieldConvection();
pFld = new (heap) JPAFieldConvection();
break;
case FIELD_SPIN:
mpField = new (heap, 4) JPAFieldSpin();
pFld = new (heap) JPAFieldSpin();
break;
default:
mpField = NULL;
pFld = NULL;
JUT_WARN(483, "JPA : WRONG ID (%d) in field data\n", getType());
break;
}
JUT_ASSERT(485, pFld != 0);
}