mirror of
https://github.com/Keyslam-Group/Concord.git
synced 2025-09-02 12:24:11 -04:00
Clean up entity and world. Remove list:get
This commit is contained in:
parent
38d461f8d6
commit
0183421c47
7 changed files with 32 additions and 30 deletions
|
@ -11,14 +11,9 @@ Entity.__index = Entity
|
||||||
-- @return A new Entity
|
-- @return A new Entity
|
||||||
function Entity.new()
|
function Entity.new()
|
||||||
local e = setmetatable({
|
local e = setmetatable({
|
||||||
__world = nil,
|
__world = nil,
|
||||||
|
|
||||||
__components = {},
|
__components = {},
|
||||||
|
|
||||||
__isDirty = false,
|
|
||||||
__wasAdded = false,
|
|
||||||
__wasRemoved = false,
|
|
||||||
|
|
||||||
__isEntity = true,
|
__isEntity = true,
|
||||||
}, Entity)
|
}, Entity)
|
||||||
|
|
||||||
|
@ -31,7 +26,6 @@ local function give(e, baseComponent, ...)
|
||||||
e[baseComponent] = component
|
e[baseComponent] = component
|
||||||
e.__components[baseComponent] = component
|
e.__components[baseComponent] = component
|
||||||
|
|
||||||
e.__isDirty = true
|
|
||||||
e:__dirty()
|
e:__dirty()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -39,7 +33,6 @@ local function remove(e, baseComponent)
|
||||||
e[baseComponent] = nil
|
e[baseComponent] = nil
|
||||||
e.__components[baseComponent] = nil
|
e.__components[baseComponent] = nil
|
||||||
|
|
||||||
e.__isDirty = true
|
|
||||||
e:__dirty()
|
e:__dirty()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -64,13 +64,6 @@ function List:remove(obj)
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Gets an object by numerical index.
|
|
||||||
-- @param index The index to look at
|
|
||||||
-- @return The object at the index
|
|
||||||
function List:get(index)
|
|
||||||
return self[index]
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Gets if the List has the object.
|
--- Gets if the List has the object.
|
||||||
-- @param obj The object to search for
|
-- @param obj The object to search for
|
||||||
-- true if the list has the object, false otherwise
|
-- true if the list has the object, false otherwise
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
local PATH = (...):gsub('%.[^%.]+$', '')
|
local PATH = (...):gsub('%.[^%.]+$', '')
|
||||||
|
|
||||||
local Type = require(PATH..".type")
|
local Type = require(PATH..".type")
|
||||||
local List = require(PATH..".list")
|
local List = require(PATH..".list")
|
||||||
|
|
||||||
local World = {}
|
local World = {}
|
||||||
World.__index = World
|
World.__index = World
|
||||||
|
@ -42,12 +42,8 @@ function World:addEntity(e)
|
||||||
end
|
end
|
||||||
|
|
||||||
e.__world = self
|
e.__world = self
|
||||||
e.__wasAdded = true
|
|
||||||
|
|
||||||
self.__added:add(e)
|
self.__added:add(e)
|
||||||
|
|
||||||
--self.entities:add(e)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -59,8 +55,6 @@ function World:removeEntity(e)
|
||||||
error("bad argument #1 to 'World:removeEntity' (Entity expected, got "..type(e)..")", 2)
|
error("bad argument #1 to 'World:removeEntity' (Entity expected, got "..type(e)..")", 2)
|
||||||
end
|
end
|
||||||
|
|
||||||
e.__wasRemoved = true
|
|
||||||
|
|
||||||
self.__removed:add(e)
|
self.__removed:add(e)
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
@ -84,12 +78,12 @@ function World:__flush()
|
||||||
|
|
||||||
-- Added
|
-- Added
|
||||||
for i = 1, self.__backAdded.size do
|
for i = 1, self.__backAdded.size do
|
||||||
e = self.__backAdded:get(i)
|
e = self.__backAdded[i]
|
||||||
|
|
||||||
self.entities:add(e)
|
self.entities:add(e)
|
||||||
|
|
||||||
for j = 1, self.systems.size do
|
for j = 1, self.systems.size do
|
||||||
self.systems:get(j):__evaluate(e)
|
self.systems[j]:__evaluate(e)
|
||||||
end
|
end
|
||||||
|
|
||||||
self:onEntityAdded(e)
|
self:onEntityAdded(e)
|
||||||
|
@ -98,13 +92,13 @@ function World:__flush()
|
||||||
|
|
||||||
-- Removed
|
-- Removed
|
||||||
for i = 1, self.__backRemoved.size do
|
for i = 1, self.__backRemoved.size do
|
||||||
e = self.__backRemoved:get(i)
|
e = self.__backRemoved[i]
|
||||||
|
|
||||||
e.__world = nil
|
e.__world = nil
|
||||||
self.entities:remove(e)
|
self.entities:remove(e)
|
||||||
|
|
||||||
for j = 1, self.systems.size do
|
for j = 1, self.systems.size do
|
||||||
self.systems:get(j):__remove(e)
|
self.systems[j]:__remove(e)
|
||||||
end
|
end
|
||||||
|
|
||||||
self:onEntityRemoved(e)
|
self:onEntityRemoved(e)
|
||||||
|
@ -113,10 +107,10 @@ function World:__flush()
|
||||||
|
|
||||||
-- Dirty
|
-- Dirty
|
||||||
for i = 1, self.__backDirty.size do
|
for i = 1, self.__backDirty.size do
|
||||||
e = self.__backDirty:get(i)
|
e = self.__backDirty[i]
|
||||||
|
|
||||||
for j = 1, self.systems.size do
|
for j = 1, self.systems.size do
|
||||||
self.systems:get(j):__evaluate(e)
|
self.systems[j]:__evaluate(e)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
self.__backDirty:clear()
|
self.__backDirty:clear()
|
||||||
|
@ -163,7 +157,7 @@ function World:addSystem(baseSystem, callbackName, callback, enabled)
|
||||||
|
|
||||||
-- Retroactively evaluate all entities for this system
|
-- Retroactively evaluate all entities for this system
|
||||||
for i = 1, self.entities.size do
|
for i = 1, self.entities.size do
|
||||||
system:__evaluate(self.entities:get(i))
|
system:__evaluate(self.entities[i])
|
||||||
end
|
end
|
||||||
|
|
||||||
if callbackName then
|
if callbackName then
|
||||||
|
|
6
test/components/test_comp_1.lua
Normal file
6
test/components/test_comp_1.lua
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
local Component = require("src").component
|
||||||
|
|
||||||
|
return Component(function(e, x, y)
|
||||||
|
e.x = x
|
||||||
|
e.y = y
|
||||||
|
end)
|
0
tests/entityLifetime/init.lua
Normal file
0
tests/entityLifetime/init.lua
Normal file
4
tests/init.lua
Normal file
4
tests/init.lua
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
local PATH = (...):gsub('%.init$', '')
|
||||||
|
|
||||||
|
require(PATH..".requireModules")
|
||||||
|
require(PATH..".entityLifetime")
|
12
tests/requireModules/init.lua
Normal file
12
tests/requireModules/init.lua
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
local Concord = require("src")
|
||||||
|
|
||||||
|
assert(Concord.component
|
||||||
|
local Components = Concord.components
|
||||||
|
|
||||||
|
local System = Concord.system
|
||||||
|
local Systems = Concord.systems
|
||||||
|
|
||||||
|
local Entity = Concord.entity
|
||||||
|
|
||||||
|
local World = Concord.world
|
||||||
|
local Worlds = Concord.worlds
|
Loading…
Add table
Add a link
Reference in a new issue