diff --git a/lib/controls.lua b/lib/controls.lua index 71a119e..6fa7a60 100644 --- a/lib/controls.lua +++ b/lib/controls.lua @@ -1,5 +1,3 @@ -local utils = require "lib.utils.utils" - --- @alias Device "mouse" | "key" | "pad" --- @param device Device @@ -27,6 +25,12 @@ controls.keymap = { local currentKeys = {} local cachedKeys = {} +--- @type number +controls.mouseWheelY = 0 +love.wheelmoved = function(x, y) + controls.mouseWheelY = y +end + --- polling controls in O(n) --- should be called at the beginning of every frame function controls:poll() @@ -50,6 +54,7 @@ function controls:cache() for k, v in pairs(currentKeys) do cachedKeys[k] = v end + controls.mouseWheelY = 0 end --- marks a control consumed for the current frame diff --git a/lib/level/camera.lua b/lib/level/camera.lua index 9e0468e..b2d5138 100644 --- a/lib/level/camera.lua +++ b/lib/level/camera.lua @@ -30,12 +30,6 @@ camera.scale = camera:getDefaultScale() --------------------------------------------------- -love.wheelmoved = function(x, y) - if camera.scale > camera:getDefaultScale() * 5 and y > 0 then return end; - if camera.scale < camera:getDefaultScale() / 5 and y < 0 then return end; - camera.scale = camera.scale + (camera.scale * 0.1 * y) -end - local controlMap = { cameraMoveUp = Vec3({ 0, -1 }), cameraMoveLeft = Vec3({ -1 }), @@ -50,6 +44,13 @@ function camera:update(dt) return end + -------------------- зум на колесо --------------------- + local y = Tree.controls.mouseWheelY + if camera.scale > camera:getDefaultScale() * 5 and y > 0 then return end; + if camera.scale < camera:getDefaultScale() / 5 and y < 0 then return end; + camera.scale = camera.scale + (camera.scale * 0.1 * y) + -------------------------------------------------------- + local ps = Tree.panning if ps.delta:length() > 0 then local worldDelta = ps.delta:scale(1 / (self.pixelsPerMeter * self.scale)):scale(dt):scale(self.speed) @@ -103,6 +104,7 @@ function camera:animateTo(position, animationNode) self.animationNode = animationNode self.animationEndPosition = position self.animationBeginPosition = self.position + self.velocity = Vec3 {} end --- @return Camera