From 5ef20afaf6a9aca1999faf8904594d94fcfaaa66 Mon Sep 17 00:00:00 2001 From: Aki Date: Fri, 8 Sep 2017 15:59:39 +0200 Subject: Created Layer class --- not/Layer.lua | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 not/Layer.lua (limited to 'not/Layer.lua') diff --git a/not/Layer.lua b/not/Layer.lua new file mode 100644 index 0000000..db16175 --- /dev/null +++ b/not/Layer.lua @@ -0,0 +1,27 @@ +--- A little bit more than just a Canvas. +Layer = require "not.Object":extends() + +function Layer:new (width, height) + self.canvas = love.graphics.newCanvas(width, height) +end + +--- Sets this layer as current canvas for drawing with love.graphics functions. +-- @return old canvas used by love +function Layer:setAsCanvas () + local c = love.graphics.getCanvas() + love.graphics.setCanvas(self.canvas) + return c +end + +function Layer:clear () + local c = self:setAsCanvas() + love.graphics.clear() + love.graphics.setCanvas(c) +end + +function Layer:draw () + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(self.canvas) +end + +return Layer -- cgit v1.1 From 4faecfbd6495c46c2d93ce314252feeb7879e568 Mon Sep 17 00:00:00 2001 From: Aki Date: Fri, 8 Sep 2017 17:33:28 +0200 Subject: Some additional garbage collecting --- not/Layer.lua | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'not/Layer.lua') diff --git a/not/Layer.lua b/not/Layer.lua index db16175..63c38ac 100644 --- a/not/Layer.lua +++ b/not/Layer.lua @@ -5,6 +5,10 @@ function Layer:new (width, height) self.canvas = love.graphics.newCanvas(width, height) end +function Layer:delete () + self.canvas = nil +end + --- Sets this layer as current canvas for drawing with love.graphics functions. -- @return old canvas used by love function Layer:setAsCanvas () -- cgit v1.1 From dc2c3fe3cee67a8473e0d2e952a3ef9f6e0df2d7 Mon Sep 17 00:00:00 2001 From: Aki Date: Fri, 8 Sep 2017 19:48:17 +0200 Subject: Added renderTo method; clear now uses it --- not/Layer.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'not/Layer.lua') diff --git a/not/Layer.lua b/not/Layer.lua index 63c38ac..126b402 100644 --- a/not/Layer.lua +++ b/not/Layer.lua @@ -17,12 +17,16 @@ function Layer:setAsCanvas () return c end -function Layer:clear () +function Layer:renderTo (func, ...) local c = self:setAsCanvas() - love.graphics.clear() + func(...) love.graphics.setCanvas(c) end +function Layer:clear () + self:renderTo(love.graphics.clear) +end + function Layer:draw () love.graphics.setColor(255, 255, 255, 255) love.graphics.draw(self.canvas) -- cgit v1.1 From 9e29f6127fc27e58a5680a8aa6bea7336add4755 Mon Sep 17 00:00:00 2001 From: Aki Date: Tue, 12 Sep 2017 03:34:23 +0200 Subject: Added renderToWith to shorten using Camera with Layers --- not/Layer.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'not/Layer.lua') 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 -- cgit v1.1 From 6094b7eb9cbe915e02e02908b77549223f585014 Mon Sep 17 00:00:00 2001 From: Aki Date: Tue, 12 Sep 2017 19:14:11 +0200 Subject: Scaled Layers drawing (slow) --- not/Layer.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'not/Layer.lua') diff --git a/not/Layer.lua b/not/Layer.lua index 6be61c4..0446599 100644 --- a/not/Layer.lua +++ b/not/Layer.lua @@ -38,8 +38,12 @@ function Layer:clear () end function Layer:draw () + local scale = 1 + if self.scale then + scale = getScale() / self.scale + end love.graphics.setColor(255, 255, 255, 255) - love.graphics.draw(self.canvas) + love.graphics.draw(self.canvas, 0, 0, 0, scale, scale) end return Layer -- cgit v1.1 From 2a0cef0fba687e03fd322ac73c511bbb12b1e31c Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 13 Sep 2017 10:00:59 +0200 Subject: Fixed background bug on non-16:9 screens --- not/Layer.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'not/Layer.lua') diff --git a/not/Layer.lua b/not/Layer.lua index 0446599..ebfb28e 100644 --- a/not/Layer.lua +++ b/not/Layer.lua @@ -1,4 +1,5 @@ --- A little bit more than just a Canvas. +-- TODO: Scaled and RealScaled support should be extended. Layer = require "not.Object":extends() function Layer:new (width, height) @@ -43,7 +44,7 @@ function Layer:draw () scale = getScale() / self.scale end love.graphics.setColor(255, 255, 255, 255) - love.graphics.draw(self.canvas, 0, 0, 0, scale, scale) + love.graphics.draw(self.canvas, nil, nil, nil, scale, scale) end return Layer -- cgit v1.1 From f34ec5f8f29ce07d69104e537e87ed357abaf786 Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 13 Sep 2017 12:50:46 +0200 Subject: Camera and Layers now properly handle different resolution ratios --- not/Layer.lua | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'not/Layer.lua') diff --git a/not/Layer.lua b/not/Layer.lua index ebfb28e..14dac32 100644 --- a/not/Layer.lua +++ b/not/Layer.lua @@ -1,11 +1,11 @@ --- A little bit more than just a Canvas. --- TODO: Scaled and RealScaled support should be extended. Layer = require "not.Object":extends() function Layer:new (width, height) self.canvas = love.graphics.newCanvas(width, height) - self.scale = false - self.ratio = false + self.transformScale = getScale() + self.transformRatio = 1 + self.drawScale = 1 end function Layer:delete () @@ -28,8 +28,7 @@ end function Layer:renderToWith (camera, func, ...) camera:push() - camera:scale(self.scale) - camera:translate(self.ratio) + camera:transform(self.transformScale, self.transformRatio, self.canvas:getDimensions()) self:renderTo(func, ...) camera:pop() end @@ -39,12 +38,8 @@ function Layer:clear () end function Layer:draw () - local scale = 1 - if self.scale then - scale = getScale() / self.scale - end love.graphics.setColor(255, 255, 255, 255) - love.graphics.draw(self.canvas, nil, nil, nil, scale, scale) + love.graphics.draw(self.canvas, nil, nil, nil, self.drawScale, self.drawScale) end return Layer -- cgit v1.1