local assertArgs = include "assertArgs" local global = require "global" local util = include "util" local Camera = lib "class" ("Camera") Camera:include(mixin "Position") Camera:include(mixin "Angle") function Camera:initialize(args) assertArgs(args, "x", "y", "z", "angle", "ax", "ay", "az") self:setPosition(args.x, args.y, args.z) self:setAngle(args.angle, args.ax, args.ay, args.az) return self end function Camera:draw(f) lovr.graphics.push() if global.cameraMode == "third" then lovr.graphics.rotate(math.pi/2, 1, 0, 0) -- look down end lovr.graphics.rotate(-self:getAngle(), self:getAX(), self:getAY(), self:getAZ()) lovr.graphics.translate(-self:getX(), -self:getY(), -self:getZ()) f() lovr.graphics.pop() end return Camera