diff --git a/CHANGELOG.md b/CHANGELOG.md index beee18781..a33b4fd04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## [Unreleased](https://github.com/LostArtefacts/TR1X/compare/stable...develop) - ××××-××-×× - changed injection files to be placed in its own directory (#1306) +- fixed camera vibrations when using the teleport command in 60 FPS (#1274) ## [4.0.3](https://github.com/LostArtefacts/TR1X/compare/4.0.2...4.0.3) - 2024-04-14 - fixed flickering sprite pickups (#1298) diff --git a/src/game/camera.c b/src/game/camera.c index 4a78a162e..437d09cca 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -411,7 +411,7 @@ void Camera_Reset(void) g_Camera.pos.room_number = NO_ROOM; } -void Camera_Initialise(void) +void Camera_ResetPosition(void) { assert(g_LaraItem); g_Camera.shift = g_LaraItem->pos.y - WALL_L; @@ -435,7 +435,11 @@ void Camera_Initialise(void) g_Camera.number = NO_CAMERA; g_Camera.additional_angle = 0; g_Camera.additional_elevation = 0; +} +void Camera_Initialise(void) +{ + Camera_ResetPosition(); Camera_Update(); } diff --git a/src/game/camera.h b/src/game/camera.h index d22d8149b..05372d17c 100644 --- a/src/game/camera.h +++ b/src/game/camera.h @@ -6,6 +6,7 @@ void Camera_Initialise(void); void Camera_Reset(void); +void Camera_ResetPosition(void); void Camera_Chase(ITEM_INFO *item); void Camera_Combat(ITEM_INFO *item); void Camera_Look(ITEM_INFO *item); diff --git a/src/game/items.c b/src/game/items.c index 29ce18c14..48c136711 100644 --- a/src/game/items.c +++ b/src/game/items.c @@ -2,6 +2,7 @@ #include "config.h" #include "game/anim.h" +#include "game/camera.h" #include "game/carrier.h" #include "game/clock.h" #include "game/interpolation.h" @@ -282,6 +283,10 @@ bool Item_Teleport(ITEM_INFO *item, int32_t x, int32_t y, int32_t z) const int16_t item_num = item - g_Items; Item_NewRoom(item_num, room_num); } + + if (item->object_number == O_LARA) { + Camera_ResetPosition(); + } return true; } return false;