mirror of
https://github.com/Keyslam-Group/Concord.git
synced 2025-09-02 20:33:54 -04:00
rename folder src to concord
This commit is contained in:
parent
451b88cdea
commit
f502f1b9f6
14 changed files with 0 additions and 0 deletions
90
concord/pool.lua
Normal file
90
concord/pool.lua
Normal file
|
@ -0,0 +1,90 @@
|
|||
--- Pool
|
||||
-- A Pool is used to iterate over Entities with a specific Components
|
||||
-- A Pool contain a any amount of Entities.
|
||||
|
||||
local PATH = (...):gsub('%.[^%.]+$', '')
|
||||
|
||||
local List = require(PATH..".list")
|
||||
|
||||
local Pool = {}
|
||||
Pool.__mt = {
|
||||
__index = Pool,
|
||||
}
|
||||
|
||||
--- Creates a new Pool
|
||||
-- @param name Name for the Pool.
|
||||
-- @param filter Table containing the required BaseComponents
|
||||
-- @return The new Pool
|
||||
function Pool.new(name, filter)
|
||||
local pool = setmetatable(List(), Pool.__mt)
|
||||
|
||||
pool.__name = name
|
||||
pool.__filter = filter
|
||||
|
||||
pool.__isPool = true
|
||||
|
||||
return pool
|
||||
end
|
||||
|
||||
--- Checks if an Entity is eligible for the Pool.
|
||||
-- @param e Entity to check
|
||||
-- @return True if the entity is eligible, false otherwise
|
||||
function Pool:__eligible(e)
|
||||
for _, component in ipairs(self.__filter) do
|
||||
if not e[component] then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
--- Internal: Adds an Entity to the Pool.
|
||||
-- @param e Entity to add
|
||||
-- @return self
|
||||
function Pool:__add(e)
|
||||
List.__add(self, e)
|
||||
self:onEntityAdded(e)
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
--- Internal: Removed an Entity from the Pool.
|
||||
-- @param e Entity to remove
|
||||
-- @return self
|
||||
function Pool:__remove(e)
|
||||
List.__remove(self, e)
|
||||
self:onEntityRemoved(e)
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
--- Gets the name of the Pool
|
||||
-- @return Name of the Pool.
|
||||
function Pool:getName()
|
||||
return self.__name
|
||||
end
|
||||
|
||||
--- Gets the filter of the Pool.
|
||||
-- Warning: Do not modify this filter.
|
||||
-- @return Filter of the Pool.
|
||||
function Pool:getFilter()
|
||||
return self.__filter
|
||||
end
|
||||
|
||||
--- Callback for when an Entity is added to the Pool.
|
||||
-- @param e Entity that was added.
|
||||
function Pool:onEntityAdded(e) -- luacheck: ignore
|
||||
end
|
||||
|
||||
-- Callback for when an Entity is removed from the Pool.
|
||||
-- @param e Entity that was removed.
|
||||
function Pool:onEntityRemoved(e) -- luacheck: ignore
|
||||
end
|
||||
|
||||
return setmetatable(Pool, {
|
||||
__index = List,
|
||||
__call = function(_, ...)
|
||||
return Pool.new(...)
|
||||
end,
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue