fix: scroll jitter fix in extro zone on Android 60Hz

This commit is contained in:
KassiaL
2025-07-31 15:01:57 +03:00
parent ba7ee40510
commit 7dd29f18eb

View File

@@ -525,27 +525,34 @@ function M:_check_soft_zone()
local target = self.target_position local target = self.target_position
local border = self.available_pos local border = self.available_pos
local speed = self.style.BACK_SPEED local speed = self.style.BACK_SPEED
local affected = false
-- Right border (minimum x) -- Right border (minimum x)
if target.x < border.x then if target.x < border.x then
local step = math.max(math.abs(target.x - border.x) * speed, 1) local step = math.max(math.abs(target.x - border.x) * speed, 1)
target.x = helper.step(target.x, border.x, step) target.x = helper.step(target.x, border.x, step)
affected = true
end end
-- Left border (maximum x) -- Left border (maximum x)
if target.x > border.z then if target.x > border.z then
local step = math.max(math.abs(target.x - border.z) * speed, 1) local step = math.max(math.abs(target.x - border.z) * speed, 1)
target.x = helper.step(target.x, border.z, step) target.x = helper.step(target.x, border.z, step)
affected = true
end end
-- Top border (maximum y) -- Top border (maximum y)
if target.y < border.y then if target.y < border.y then
local step = math.max(math.abs(target.y - border.y) * speed, 1) local step = math.max(math.abs(target.y - border.y) * speed, 1)
target.y = helper.step(target.y, border.y, step) target.y = helper.step(target.y, border.y, step)
affected = true
end end
-- Bot border (minimum y) -- Bot border (minimum y)
if target.y > border.w then if target.y > border.w then
local step = math.max(math.abs(target.y - border.w) * speed, 1) local step = math.max(math.abs(target.y - border.w) * speed, 1)
target.y = helper.step(target.y, border.w, step) target.y = helper.step(target.y, border.w, step)
affected = true
end end
return affected
end end
@@ -675,7 +682,10 @@ function M:_update_free_scroll(dt)
-- Inertion friction -- Inertion friction
self.inertion = self.inertion * self.style.FRICT self.inertion = self.inertion * self.style.FRICT
self:_check_soft_zone() local affected = self:_check_soft_zone()
if affected then
self.inertion = vmath.vector3(0, 0, 0)
end
if self.position.x ~= target.x or self.position.y ~= target.y then if self.position.x ~= target.x or self.position.y ~= target.y then
self:_set_scroll_position(target.x, target.y) self:_set_scroll_position(target.x, target.y)
end end