From cfcc0e2ba7c5313267f37596e9048add5e00828f Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Thu, 5 Nov 2026 04:24:14 +0000 Subject: [PATCH] Decompile fn_07535 (CViolentQuakeEffect::Slot03) Batch #11693 by cremane: 0 byte-identical, 1 confirmed by peer review. - fn_07535 CViolentQuakeEffect::Slot03: logic confirmed by peer review Peer-reviewed-by: Yommy, KWDev Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- .../Contents/Effects/ViolentQuakeEffect.cpp | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Source/Contents/Effects/ViolentQuakeEffect.cpp b/Source/Contents/Effects/ViolentQuakeEffect.cpp index b82a2cf1..c3b04766 100644 --- a/Source/Contents/Effects/ViolentQuakeEffect.cpp +++ b/Source/Contents/Effects/ViolentQuakeEffect.cpp @@ -96,17 +96,17 @@ void CViolentQuakeEffect::Slot03() { continue; } - const float x = this->position[0]; - const float y = this->position[1]; - const float z = this->position[2]; - const float* view = static_cast(g_modeMgr.GetGameMode())->camera->frame.view.values; - const float* inverse = static_cast(g_modeMgr.GetGameMode())->camera->frame.inverse.values; - const float viewX = view[0] * x + view[3] * y + view[6] * z + view[9] + emitter->unknown_00D0; - const float viewY = view[1] * x + view[4] * y + view[7] * z + view[10] + emitter->unknown_00D4; - const float viewZ = view[2] * x + view[5] * y + view[8] * z + view[11] + emitter->unknown_00D8; - emitter->position.x = viewY * inverse[3] + viewX * inverse[0] + viewZ * inverse[6] + inverse[9]; - emitter->position.y = viewY * inverse[4] + viewX * inverse[1] + viewZ * inverse[7] + inverse[10]; - emitter->position.z = viewY * inverse[5] + viewX * inverse[2] + viewZ * inverse[8] + inverse[11]; + const vector3d origin = *reinterpret_cast(this->position); + const matrix view = static_cast(g_modeMgr.GetGameMode())->camera->frame.view; + const matrix& inverse = static_cast(g_modeMgr.GetGameMode())->camera->frame.inverse; + + const float viewX = view.values[0] * origin.x + view.values[3] * origin.y + view.values[6] * origin.z + view.values[9] + emitter->unknown_00D0; + const float viewY = view.values[1] * origin.x + view.values[4] * origin.y + view.values[7] * origin.z + view.values[10] + emitter->unknown_00D4; + const float viewZ = view.values[2] * origin.x + view.values[5] * origin.y + view.values[8] * origin.z + view.values[11] + emitter->unknown_00D8; + + emitter->position.x = viewY * inverse.values[3] + viewX * inverse.values[0] + viewZ * inverse.values[6] + inverse.values[9]; + emitter->position.y = viewY * inverse.values[4] + viewX * inverse.values[1] + viewZ * inverse.values[7] + inverse.values[10]; + emitter->position.z = viewY * inverse.values[5] + viewX * inverse.values[2] + viewZ * inverse.values[8] + inverse.values[11]; emitter->Process(0.0f, 0.0f, 0.0f); } }