summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--not/Layer.lua10
-rw-r--r--not/World.lua12
2 files changed, 12 insertions, 10 deletions
diff --git a/not/Layer.lua b/not/Layer.lua
index 126b402..6be61c4 100644
--- a/not/Layer.lua
+++ b/not/Layer.lua
@@ -3,6 +3,8 @@ Layer = require "not.Object":extends()
function Layer:new (width, height)
self.canvas = love.graphics.newCanvas(width, height)
+ self.scale = false
+ self.ratio = false
end
function Layer:delete ()
@@ -23,6 +25,14 @@ function Layer:renderTo (func, ...)
love.graphics.setCanvas(c)
end
+function Layer:renderToWith (camera, func, ...)
+ camera:push()
+ camera:scale(self.scale)
+ camera:translate(self.ratio)
+ self:renderTo(func, ...)
+ camera:pop()
+end
+
function Layer:clear ()
self:renderTo(love.graphics.clear)
end
diff --git a/not/World.lua b/not/World.lua
index 37b6dbe..d7b69b2 100644
--- a/not/World.lua
+++ b/not/World.lua
@@ -260,18 +260,10 @@ function World:draw ()
-- TODO: Camera rewrite in progress.
for _,entity in pairs(self.entities) do
if entity.draw and entity.layer then
- self.camera:push()
- self.camera:scale(entity.layer.scale)
- self.camera:translate(entity.layer.ratio)
- entity.layer:renderTo(entity.draw, entity, 0, 0, 1, debug) -- TODO: Offsets and Scale are passed as 0,0,1 in World@draw for compatibility reasons. Remove them.
- self.camera:pop()
+ entity.layer:renderToWith(self.camera, entity.draw, entity, 0, 0, 1, debug) -- TODO: Offsets and Scale are passed as 0,0,1 in World@draw for compatibility reasons. Remove them.
end
if entity.drawTag then
- self.camera:push()
- self.camera:scale()
- self.camera:translate()
- self.layers[6]:renderTo(entity.drawTag, entity, 0, 0, 1) -- TODO: Offsets and Scale passed. See `World@draw`.
- self.camera:pop()
+ self.layers[6]:renderToWith(self.camera, entity.drawTag, entity, 0, 0, 1) -- TODO: Offsets and Scale passed. See `World@draw`.
end
end