diff options
| author | MegaMech <inkstudios1@hotmail.com> | 2025-05-17 15:33:41 -0600 |
|---|---|---|
| committer | MegaMech <inkstudios1@hotmail.com> | 2025-05-17 15:33:41 -0600 |
| commit | a5670c9193a9c56475d93271b980485e17dc6e86 (patch) | |
| tree | 0db5f6243f4d570df86545aeae2b358b59e8c5a4 | |
| parent | 9635600bdcf79b6b7b2b4c703322c84fb575639b (diff) | |
Tag more itemsframeinterpolation
| -rw-r--r-- | src/engine/World.cpp | 4 | ||||
| -rw-r--r-- | src/engine/objects/Bat.cpp | 5 | ||||
| -rw-r--r-- | src/engine/objects/Boos.cpp | 3 | ||||
| -rw-r--r-- | src/racing/actors.c | 2 | ||||
| -rw-r--r-- | src/render_objects.c | 5 |
5 files changed, 18 insertions, 1 deletions
diff --git a/src/engine/World.cpp b/src/engine/World.cpp index 8e20806ff..9439b97b6 100644 --- a/src/engine/World.cpp +++ b/src/engine/World.cpp @@ -7,6 +7,7 @@ #include <memory> #include "objects/Object.h" #include "port/Game.h" +#include "src/port/interpolation/FrameInterpolation.h" #include "editor/GameObject.h" @@ -238,8 +239,11 @@ ParticleEmitter* World::AddEmitter(ParticleEmitter* emitter) { } void World::DrawObjects(s32 cameraId) { + size_t i = 0; for (const auto& object : Objects) { + FrameInterpolation_RecordOpenChild(object, TAG_OBJECT(((u32)&object << 8) + i++)); object->Draw(cameraId); + FrameInterpolation_RecordCloseChild(); } } diff --git a/src/engine/objects/Bat.cpp b/src/engine/objects/Bat.cpp index 764476064..d1ecba10e 100644 --- a/src/engine/objects/Bat.cpp +++ b/src/engine/objects/Bat.cpp @@ -1,6 +1,7 @@ #include "Bat.h" #include "World.h" #include "CoreMath.h" +#include "src/port/interpolation/FrameInterpolation.h" extern "C" { #include "render_objects.h" @@ -114,6 +115,7 @@ void OBat::Draw(s32 cameraId) { if ((D_8018CFB0 != 0) || (D_8018CFC8 != 0)) { for (var_s2 = 0; var_s2 < 40; var_s2++) { objectIndex = gObjectParticle2[var_s2]; + FrameInterpolation_RecordOpenChild(&gObjectList[objectIndex], TAG_OBJECT((objectIndex << 8) + var_s2)); if (objectIndex == -1) { continue; } @@ -124,11 +126,13 @@ void OBat::Draw(s32 cameraId) { func_800431B0(gObjectList[objectIndex].pos, D_80183E80, gObjectList[objectIndex].sizeScaling, (Vtx*)D_0D0062B0); } + FrameInterpolation_RecordCloseChild(); } } if ((D_8018CFE8 != 0) || (D_8018D000 != 0)) { for (var_s2 = 0; var_s2 < 30; var_s2++) { objectIndex = gObjectParticle3[var_s2]; + FrameInterpolation_RecordOpenChild(&gObjectList[objectIndex], TAG_OBJECT((objectIndex << 8) + var_s2)); if (objectIndex == -1) { continue; } @@ -139,6 +143,7 @@ void OBat::Draw(s32 cameraId) { func_800431B0(gObjectList[objectIndex].pos, D_80183E80, gObjectList[objectIndex].sizeScaling, (Vtx*)D_0D0062B0); } + FrameInterpolation_RecordCloseChild(); } } gSPTexture(gDisplayListHead++, 0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF); diff --git a/src/engine/objects/Boos.cpp b/src/engine/objects/Boos.cpp index 5bdbd41cf..553a34900 100644 --- a/src/engine/objects/Boos.cpp +++ b/src/engine/objects/Boos.cpp @@ -1,6 +1,7 @@ #include "Boos.h" #include "World.h" #include "CoreMath.h" +#include "src/port/interpolation/FrameInterpolation.h" extern "C" { #include "render_objects.h" @@ -83,6 +84,7 @@ void OBoos::Draw(s32 cameraId) { for (size_t i = 0; i < _numBoos; i++) { objectIndex = _indices[i]; //indexObjectList3[i]; + FrameInterpolation_RecordOpenChild(&gObjectList[objectIndex], TAG_OBJECT((objectIndex << 8) + i)); if (gObjectList[objectIndex].state >= 2) { temp_s2 = func_8008A364(objectIndex, cameraId, 0x4000U, 0x00000320); if (CVarGetInteger("gNoCulling", 0) == 1) { @@ -92,6 +94,7 @@ void OBoos::Draw(s32 cameraId) { func_800523B8(objectIndex, cameraId, temp_s2); } } + FrameInterpolation_StopRecord(); } } diff --git a/src/racing/actors.c b/src/racing/actors.c index 65c734be3..d6f49eaf3 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -2445,7 +2445,7 @@ void render_course_actors(struct UnkStruct_800DC5EC* arg0) { continue; } - FrameInterpolation_RecordOpenChild(actor, i); + FrameInterpolation_RecordOpenChild(actor, TAG_OBJECT(((u32) &actor << 8) + i)); switch (actor->type) { default: // Draw custom actor diff --git a/src/render_objects.c b/src/render_objects.c index b2de13f7c..86c840d71 100644 --- a/src/render_objects.c +++ b/src/render_objects.c @@ -3417,10 +3417,12 @@ void render_object_snowflakes_particles(void) { func_80044F34(D_0D0293D8, 0x10, 0x10); for (someIndex = 0; someIndex < NUM_SNOWFLAKES; someIndex++) { snowflakeIndex = gObjectParticle1[someIndex]; + FrameInterpolation_RecordOpenChild(&gObjectList[snowflakeIndex], TAG_OBJECT(snowflakeIndex << 8) + someIndex); if (gObjectList[snowflakeIndex].state >= 2) { rsp_set_matrix_gObjectList(snowflakeIndex); gSPDisplayList(gDisplayListHead++, D_0D006980); } + FrameInterpolation_RecordCloseChild(); } gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); } @@ -3943,6 +3945,8 @@ void render_object_neon(s32 cameraId) { objectIndex = indexObjectList1[var_s2]; if (D_8018E838[cameraId] == 0) { object = &gObjectList[objectIndex]; + FrameInterpolation_RecordOpenChild(object, TAG_OBJECT((objectIndex << 8) + var_s2)); + if ((object->state >= 2) && (is_obj_index_flag_status_inactive(objectIndex, 0x00080000) != 0) && (is_object_visible_on_camera(objectIndex, camera, 0x2AABU) != 0)) { Vtx* vtx = (Vtx*) LOAD_ASSET(common_vtx_hedgehog); @@ -3950,6 +3954,7 @@ void render_object_neon(s32 cameraId) { draw_2d_texture_at(object->pos, object->orientation, object->sizeScaling, (u8*) object->activeTLUT, object->activeTexture, vtx, 0x00000040, 0x00000040, 0x00000040, 0x00000020); } + FrameInterpolation_RecordCloseChild(); } } } |
