summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-05-28 15:48:45 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-05-28 15:48:45 +0200
commit1e76e83d9f95e5f8532fdb9afaac7769a297f1cf (patch)
tree4b18da7a964511d6f431daf4ae558eb38bf92283
parentac6f5780b1d61fa57851d1d14b80c5b56038dc35 (diff)
parentefb6a1c23d9d26268fa8b613f34e0787ed3e089f (diff)
downloadredot-engine-1e76e83d9f95e5f8532fdb9afaac7769a297f1cf.tar.gz
Merge pull request #91706 from rburing/interpolate_parallax2d
Fix Parallax2D physics interpolation
-rw-r--r--scene/2d/camera_2d.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp
index 822f1b58fd..18ef2d8505 100644
--- a/scene/2d/camera_2d.cpp
+++ b/scene/2d/camera_2d.cpp
@@ -54,16 +54,18 @@ void Camera2D::_update_scroll() {
if (is_current()) {
ERR_FAIL_COND(custom_viewport && !ObjectDB::get_instance(custom_viewport_id));
+ Size2 screen_size = _get_camera_screen_size();
+
Transform2D xform;
if (is_physics_interpolated_and_enabled()) {
xform = _interpolation_data.xform_prev.interpolate_with(_interpolation_data.xform_curr, Engine::get_singleton()->get_physics_interpolation_fraction());
+ camera_screen_center = xform.affine_inverse().xform(0.5 * screen_size);
} else {
xform = get_camera_transform();
}
viewport->set_canvas_transform(xform);
- Size2 screen_size = _get_camera_screen_size();
Point2 screen_offset = (anchor_mode == ANCHOR_MODE_DRAG_CENTER ? (screen_size * 0.5) : Point2());
Point2 adj_screen_pos = camera_screen_center - (screen_size * 0.5);