Merge pull request #252 from robojumper/more_cursor_stuff

Cursor Cleanup
This commit is contained in:
robojumper
2025-09-27 12:21:38 +02:00
committed by GitHub
25 changed files with 1476 additions and 487 deletions
+2 -3
View File
@@ -856,7 +856,7 @@ void dJEffManager_c::execute() {
sMassObjEmitters[i].execute();
}
if ((dBase_c::s_ExecuteControlFlags & 0x6F9) == 0) {
if ((dBase_c::s_ExecuteControlFlags & (dBase_c::BASE_PROP_UNK_PARTICLE_1)) == 0) {
for (int i = 0; i < 12; i++) {
dParticle::mgr_c::GetInstance()->calc(i);
}
@@ -886,8 +886,7 @@ void dJEffManager_c::draw() {
bool dJEffManager_c::shouldBePaused(dBase_c *owner) {
return owner != nullptr && !owner->checkBaseProperty(dBase_c::BASE_PROP_0x4) &&
(EventManager::isInEvent() || owner->checkProcControl(fBase_c::DISABLE_EXECUTE) ||
// TODO execute control flags
(owner->s_ExecuteControlFlags & 0x6fb));
(owner->s_ExecuteControlFlags & dBase_c::BASE_PROP_UNK_PARTICLE_2));
}
void dJEffManager_c::draw(const JPADrawInfo *info, u32 groupId) {
+61
View File
@@ -0,0 +1,61 @@
#include "toBeSorted/d_emitter_callbacks.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "common.h"
#include "m/m_vec.h"
dEmitterCallbackCursorTrail_c::dEmitterCallbackCursorTrail_c(u32 a, f32 b) : field_0x10(b), field_0x14(a) {
// TODO - TList
}
static void fn_8002B9D0(mVec3_c &newPos, const mVec3_c&, const mVec3_c&, const mVec3_c&, const mVec3_c&, f32) {
// TODO - ...
// Probably cubic B-Spline interpolation?
}
void dEmitterCallbackCursorTrail_c::executeAfter(JPABaseEmitter *emitter) {
mVec3_c newPos;
mVec3_c pos;
mVec3_c v2;
mVec3_c v1;
emitter->getGlobalTranslation(pos);
if (!emitter->checkStatus(JPAEmtrStts_StopCalc) && emitter->mMaxFrame == 0) {
v1 = (pos - posNMinus1) * 0.5f;
v2 = (posNMinus1 - posNMinus2) * 0.5f;
f32 dist = pos.distance(posNMinus1);
dist = dist * 0.1f * field_0x10;
if (field_0x14 != 0 && dist > field_0x14) {
dist = field_0x14;
}
if (dist > 1.0f) {
f32 f, step;
step = 1.0f / dist;
for (f = step; f < 1.0f; f += step) {
fn_8002B9D0(newPos, posNMinus1, v2, v1, pos, f);
JPABaseParticle *ptc = emitter->createParticle();
if (ptc != nullptr) {
ptc->setOffsetPosition(newPos);
}
}
}
}
if (emitter->getUserWork() == 0) {
posNMinus2 = posNMinus1;
posNMinus1 = pos;
}
}
void dEmitterCallbackCursorTrail_c::create(JPABaseEmitter *emitter) {
emitter->getGlobalTranslation(posNMinus1);
posNMinus2 = posNMinus1;
}
void dEmitterCallbackCursorTrail_c::vt_0x20(f32 x, f32 y) {
posNMinus2.x += x;
posNMinus2.z += y;
posNMinus1.x += x;
posNMinus1.z += y;
}