local component = require 'component' local Transform = require 'Transform' -- a view of the world local Camera = component({Transform}) function Camera:use() self.obj.world.camera = self end function Camera:transform() local trans = self.obj:get(Transform):love() local cam_trans = love.math.newTransform(1920 / 2, 1080 / 2) love.graphics.applyTransform(cam_trans * trans:inverse()) end function Camera:follow(obj) assert(obj:get(Transform)) self.i.following = obj end function Camera:update(dt) if self.i.following then local this = self.obj:get(Transform) local follow = self.i.following:get(Transform) this.i.pos[1] = follow.i.pos[1] this.i.pos[2] = follow.i.pos[2] end end return Camera