From 0b9f6e0cceb0c8588ff138fedf4784da6fe1a5f1 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Thu, 13 Mar 2025 19:28:57 +1100 Subject: [PATCH] refactor(grid): use an array to store nearby entries --- imports/grid/shared.lua | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/imports/grid/shared.lua b/imports/grid/shared.lua index 8a8f5ce..6d7cc8b 100644 --- a/imports/grid/shared.lua +++ b/imports/grid/shared.lua @@ -32,7 +32,7 @@ local xDelta = (mapMaxX - mapMinX) / 34 local yDelta = (mapMaxY - mapMinY) / 50 local grid = {} local lastCell = {} -local lastNearbyEntries = {} +local gridCache = {} local entrySet = {} lib.grid = {} @@ -82,18 +82,18 @@ end ---@param point vector ---@param filter? fun(entry: GridEntry): boolean ----@return GridEntry[] +---@return Array function lib.grid.getNearbyEntries(point, filter) local minX, maxX, minY, maxY = getGridDimensions(point, xDelta, yDelta) - if lastNearbyEntries.minX == minX and - lastNearbyEntries.maxX == maxX and - lastNearbyEntries.minY == minY and - lastNearbyEntries.maxY == maxY then - return lastNearbyEntries.entries + if gridCache.minX == minX and + gridCache.maxX == maxX and + gridCache.minY == minY and + gridCache.maxY == maxY then + return gridCache.entries end - local entries = {} + local entries = lib.array:new() local n = 0 table.wipe(entrySet) @@ -118,11 +118,11 @@ function lib.grid.getNearbyEntries(point, filter) end end - lastNearbyEntries.minX = minX - lastNearbyEntries.maxX = maxX - lastNearbyEntries.minY = minY - lastNearbyEntries.maxY = maxY - lastNearbyEntries.entries = entries + gridCache.minX = minX + gridCache.maxX = maxX + gridCache.minY = minY + gridCache.maxY = maxY + gridCache.entries = entries return entries end @@ -145,7 +145,7 @@ function lib.grid.addEntry(entry) grid[y] = row - table.wipe(lastNearbyEntries) + table.wipe(gridCache) end end @@ -184,7 +184,7 @@ function lib.grid.removeEntry(entry) ::continue:: end - table.wipe(lastNearbyEntries) + table.wipe(gridCache) return success end