diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2026-02-04 21:28:22 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-04 21:28:22 -0700 |
| commit | cefae44db1a5bdcb3d34b844c88d283723d1a37b (patch) | |
| tree | a4ce47a574521f7e48fbdf854ebe7d308042b4f0 /src/engine/objects | |
| parent | 2b9d689b2f3de534fbd1a93bcd61d7ce3366fc35 (diff) | |
FrameInterpolation For Kart (#639)
* Update BombKart.cpp
* Update BombKart.h
* Update PlayerBombKart.cpp
* Update PlayerBombKart.cpp
* Update PlayerBombKart.h
* Update PlayerBombKart.h
* Update PlayerBombKart.cpp
* Update PlayerBombKart.cpp
* Update PlayerBombKart.h
* Update PlayerBombKart.h
* Update PlayerBombKart.cpp
* Update PlayerBombKart.cpp
Diffstat (limited to 'src/engine/objects')
| -rw-r--r-- | src/engine/objects/BombKart.cpp | 25 | ||||
| -rw-r--r-- | src/engine/objects/BombKart.h | 2 |
2 files changed, 6 insertions, 21 deletions
diff --git a/src/engine/objects/BombKart.cpp b/src/engine/objects/BombKart.cpp index f5a9f701b..8a0afdb95 100644 --- a/src/engine/objects/BombKart.cpp +++ b/src/engine/objects/BombKart.cpp @@ -4,6 +4,7 @@ #include <vector> #include "port/Game.h" +#include "port/interpolation/FrameInterpolation.h" #include "engine/Matrix.h" extern "C" { @@ -346,24 +347,6 @@ void OBombKart::Tick() { } void OBombKart::Draw(s32 cameraId) { - if (gModeSelection == BATTLE) { - for (size_t playerId = 0; playerId < NUM_BOMB_KARTS_BATTLE; playerId++) { - Object* object = &gObjectList[_objectIndex]; - if (object->state != 0) { - s32 primAlpha = object->primAlpha; - Player* player = &gPlayerOne[playerId]; - object->pos[0] = player->pos[0]; - object->pos[1] = player->pos[1] - 2.0; - object->pos[2] = player->pos[2]; - object->surfaceHeight = player->unk_074; - func_800563DC(_objectIndex, cameraId, primAlpha); - func_8005669C(_objectIndex, cameraId, primAlpha); - func_800568A0(_objectIndex, cameraId); - } - } - return; - } - if (IsPodiumCeremony()) { if ((_idx == 0) && (WaypointIndex < 16)) { return; @@ -400,7 +383,7 @@ void OBombKart::Draw(s32 cameraId) { func_800563DC(_objectIndex, cameraId, 0x000000FF); OBombKart::SomeRender(camera->pos); if (((u32) temp_s4 < 0x4E21U) && (state != OBombKart::States::EXPLODE)) { - OBombKart::LoadMtx(); + OBombKart::LoadMtx(cameraId); } } } @@ -426,12 +409,13 @@ void OBombKart::SomeRender(Vec3f arg1) { gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); } -void OBombKart::LoadMtx() { +void OBombKart::LoadMtx(s32 cameraId) { Mat4 mat; D_80183E50[0] = Pos[0]; D_80183E50[1] = CenterY + 1.0; D_80183E50[2] = Pos[2]; + FrameInterpolation_RecordOpenChild("object_bomb_kart", (_idx << 4) | cameraId); set_transform_matrix(mat, _Collision.orientationVector, D_80183E50, 0U, 0.5f); //convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], mat); @@ -440,6 +424,7 @@ void OBombKart::LoadMtx() { // gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxHud[gMatrixHudCount++]), // G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW); gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007B98); + FrameInterpolation_RecordCloseChild(); } void OBombKart::Waypoint(s32 screenId) { diff --git a/src/engine/objects/BombKart.h b/src/engine/objects/BombKart.h index 3ce2d35b2..3f4a7a28e 100644 --- a/src/engine/objects/BombKart.h +++ b/src/engine/objects/BombKart.h @@ -86,7 +86,7 @@ class OBombKart : public OObject { virtual void DrawEditorProperties() override; void DrawBattle(s32 cameraId); void SomeRender(Vec3f arg1); - void LoadMtx(); + void LoadMtx(s32 cameraId); void Waypoint(s32 screenId); OBombKart::States Behaviour = OBombKart::States::COUNTERCLOCKWISE; |
