From a60058522b224c1acbab56a2c723cc6306c7be4b Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sun, 30 Jun 2019 17:07:03 +0200 Subject: [PATCH] chore(baseworld): make drawing reordering part of getVisibleActors(id) --- gamecore/modules/world/baseworld.lua | 46 +++++++++++++++------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/gamecore/modules/world/baseworld.lua b/gamecore/modules/world/baseworld.lua index 858cbf1..52a5487 100644 --- a/gamecore/modules/world/baseworld.lua +++ b/gamecore/modules/world/baseworld.lua @@ -144,15 +144,30 @@ end function BaseWorld:getVisibleActors(id) - local camx, camy, camw, camh = self.cameras:getViewCoordinate(id) - local paddingw = camw * PADDING_VALUE - local paddingh = camh * PADDING_VALUE - local x = camx - paddingw - local y = camy - paddingh - local w = camw + paddingw * 2 - local h = camh + paddingh * 2 + local actors = {} + if (id ~= nil) then + local camx, camy, camw, camh = self.cameras:getViewCoordinate(id) + local paddingw = camw * PADDING_VALUE + local paddingh = camh * PADDING_VALUE + local x = camx - paddingw + local y = camy - paddingh + local w = camw + paddingw * 2 + local h = camh + paddingh * 2 - return self:getActorsInRect(x, y, w, h) + actors = self:getActorsInRect(x, y, w, h) + else + actors = self:getActors() + end + + table.sort(actors, function(a,b) + if (a.depth == b.depth) then + return a.creationID < b.creationID + else + return a.depth > b.depth + end + end) + + return actors end -- BODIES MANAGEMENT FUNCTIONS @@ -426,20 +441,7 @@ function BaseWorld:draw(dt) end function BaseWorld:drawActors(id) - local actors - if (id == nil) then - actors = self:getActors() - else - actors = self:getVisibleActors(id) - end - - table.sort(actors, function(a,b) - if (a.depth == b.depth) then - return a.creationID < b.creationID - else - return a.depth > b.depth - end - end) + local actors = self:getVisibleActors(id) for i,v in ipairs(actors) do v:draw()