-- CameraLoader = require 'lib/camera' local character = require "lib/character/character" require "lib/tree" local layout = require "lib.ui.layout" function love.conf(t) t.console = true end function love.load() character.spawn("Foodor", Tree.assets.files.sprites.character) character.spawn("Baris", Tree.assets.files.sprites.character, Vec3 { 3, 3 }) love.window.setMode(1080, 720, { resizable = true, msaa = 4, vsync = true }) end local lt = "0" function love.update(dt) local t1 = love.timer.getTime() Tree.controls:poll() Widgets = layout:build() Widgets:update(dt) -- логика UI-слоя должна отработать раньше всех, потому что нужно перехватить жесты и не пустить их дальше Tree.panning:update(dt) Tree.level:update(dt) Tree.controls:cache() local t2 = love.timer.getTime() lt = string.format("%.3f", (t2 - t1) * 1000) end local function coverTransform(img, containerW, containerH) local iw, ih = img:getWidth(), img:getHeight() local scale = math.max(containerW / iw, containerH / ih) local sw, sh = iw * scale, ih * scale local offsetX = (containerW - sw) * 0.5 local offsetY = (containerH - sh) * 0.5 return scale, offsetX, offsetY, sw, sh end local dt = "0" function love.draw() local t1 = love.timer.getTime() local scale, ox, oy = coverTransform(Tree.assets.files.cats, love.graphics.getWidth(), love.graphics.getHeight()) love.graphics.push() love.graphics.translate(ox, oy) love.graphics.scale(scale, scale) love.graphics.draw(Tree.assets.files.cats, 0, 0) love.graphics.pop() Tree.level.camera:attach() Tree.level:draw() Tree.level.camera:detach() Widgets:draw() love.graphics.setColor(1, 1, 1) local stats = "fps: " .. love.timer.getFPS() .. " lt: " .. lt .. " dt: " .. dt love.graphics.print(stats, 10, 10) local t2 = love.timer.getTime() dt = string.format("%.3f", (t2 - t1) * 1000) end