miduo_client/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleObjectPool.lua

24 lines
525 B
Lua

BattleObjectPool = {}
function BattleObjectPool.New(onCreate)
local o = {}
setmetatable(o, BattleObjectPool)
BattleObjectPool.__index = BattleObjectPool
o.buffer = {}
o.size = 0
o.onCreate = onCreate
return o
end
function BattleObjectPool:Get(...)
local e = self.buffer[self.size]
if not e then
return self.onCreate(...)
end
self.size = self.size - 1
return e
end
function BattleObjectPool:Put(item)
self.size = self.size + 1
self.buffer[self.size] = item
end