diff --git a/druid/base/scroll.lua b/druid/base/scroll.lua index 66fbc01..4f05569 100755 --- a/druid/base/scroll.lua +++ b/druid/base/scroll.lua @@ -578,34 +578,34 @@ function M:_check_soft_zone() local target = self.target_position local border = self.available_pos local speed = self.style.BACK_SPEED - local affected = false + local is_changed = false -- Right border (minimum x) if target.x < border.x then local step = math.max(math.abs(target.x - border.x) * speed, 1) - target.x = helper.step(target.x, border.x, step) - affected = true + target.x = helper.step(target.x, border.x, step) + is_changed = true end -- Left border (maximum x) if target.x > border.z then local step = math.max(math.abs(target.x - border.z) * speed, 1) target.x = helper.step(target.x, border.z, step) - affected = true + is_changed = true end -- Top border (maximum y) if target.y < border.y then local step = math.max(math.abs(target.y - border.y) * speed, 1) target.y = helper.step(target.y, border.y, step) - affected = true + is_changed = true end -- Bot border (minimum y) if target.y > border.w then local step = math.max(math.abs(target.y - border.w) * speed, 1) target.y = helper.step(target.y, border.w, step) - affected = true + is_changed = true end - return affected + return is_changed end @@ -735,9 +735,10 @@ function M:_update_free_scroll(dt) -- Inertion friction self.inertion = self.inertion * self.style.FRICT - local affected = self:_check_soft_zone() - if affected then - self.inertion = vmath.vector3(0, 0, 0) + local is_changed = self:_check_soft_zone() + if is_changed then + self.inertion.x = 0 + self.inertion.y = 0 end if self.position.x ~= target.x or self.position.y ~= target.y then self:_set_scroll_position(target.x, target.y) diff --git a/druid/styles/default/style.lua b/druid/styles/default/style.lua index 363fbac..65ca7d7 100644 --- a/druid/styles/default/style.lua +++ b/druid/styles/default/style.lua @@ -73,7 +73,7 @@ M["static_grid"] = { M["scroll"] = { ANIM_SPEED = 0.2, -- gui.animation speed to point - BACK_SPEED = 0.35, -- Lerp speed of return to soft position + BACK_SPEED = 0.1, -- Lerp speed of return to soft position FRICT = 0.93, -- mult for free inert FRICT_HOLD = 0.79, -- mult. for inert, while touching INERT_THRESHOLD = 2.5, -- speed to stop inertion