summaryrefslogtreecommitdiff
path: root/Camera.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Camera.lua')
-rw-r--r--Camera.lua25
1 files changed, 14 insertions, 11 deletions
diff --git a/Camera.lua b/Camera.lua
index 8a12fa8..3b3f1a3 100644
--- a/Camera.lua
+++ b/Camera.lua
@@ -1,23 +1,26 @@
-local game = require 'game'
+local component = require 'component'
+local Transform = require 'Transform'
-local Camera = game.Object:extend()
+-- a view of the world
+local Camera = component({Transform})
function Camera:use()
- local x, y = unpack(self.pos)
- local scale = 1 / self.scale
- local transform = love.math.newTransform(
- -x + 1920 / 2, -y + 1080 / 2, -self.rot, scale, scale)
- love.graphics.applyTransform(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)
- self.following = obj
+ assert(obj:get(Transform))
+ self.i.following = obj
end
function Camera:update(dt)
- if self.following then
- self.pos[1] = self.following.pos[1]
- self.pos[2] = self.following.pos[2]
+ 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