summaryrefslogtreecommitdiff
path: root/src/engine/objects
diff options
context:
space:
mode:
authorMegaMech <MegaMech@users.noreply.github.com>2026-02-04 21:28:22 -0700
committerGitHub <noreply@github.com>2026-02-04 21:28:22 -0700
commitcefae44db1a5bdcb3d34b844c88d283723d1a37b (patch)
treea4ce47a574521f7e48fbdf854ebe7d308042b4f0 /src/engine/objects
parent2b9d689b2f3de534fbd1a93bcd61d7ce3366fc35 (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.cpp25
-rw-r--r--src/engine/objects/BombKart.h2
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;