added make_pooled, refactor pooling out of vector classes for easy reuse

This commit is contained in:
Max Cahill 2021-07-15 16:15:58 +10:00
parent 3cc177a0c0
commit 6ef19cfde0
2 changed files with 6 additions and 3 deletions

View File

@ -1,7 +1,7 @@
--[[
add pooling functionality to a class
adds a handful of class and instance methods
adds a handful of class and instance methods to do with pooling
]]
return function(class, limit)
@ -29,9 +29,11 @@ return function(class, limit)
--(re-initialised with new, or freshly constructed if the pool was empty)
function class:pooled(...)
if #_pool == 0 then
return c(...)
return class(...)
end
return c.drain_pool():new(...)
local instance = class:drain_pool()
instance:new(...)
return instance
end
--release a vector to the pool

View File

@ -92,6 +92,7 @@ These modules are probably only useful to some folks in some circumstances, or a
- [`colour`](./colour.lua) - Colour conversion routines. Alias `color`.
- [`manual_gc`](./manual_gc.lua) - Get GC out of your update/draw calls. Useful when trying to get accurate profiling information; moves "randomness" of GC. Requires you to think a bit about your garbage budgets though.
- [`unique_mapping`](./unique_mapping.lua) - Generate a unique mapping from arbitrary lua values to numeric keys - essentially making up a consistent ordering for unordered data. Niche, but can be used to optimise draw batches for example, as you can't sort on textures without it.
- [`make_pooled`](./make_pooled.lua) - add pooling/recycling capability to a class
Any aliases are provided at both the `batteries` module level, and globally when exported.