diff --git a/src/entity.lua b/src/entity.lua index b1db60c..755e75e 100644 --- a/src/entity.lua +++ b/src/entity.lua @@ -11,14 +11,9 @@ Entity.__index = Entity -- @return A new Entity function Entity.new() local e = setmetatable({ - __world = nil, - + __world = nil, __components = {}, - __isDirty = false, - __wasAdded = false, - __wasRemoved = false, - __isEntity = true, }, Entity) @@ -31,7 +26,6 @@ local function give(e, baseComponent, ...) e[baseComponent] = component e.__components[baseComponent] = component - e.__isDirty = true e:__dirty() end @@ -39,7 +33,6 @@ local function remove(e, baseComponent) e[baseComponent] = nil e.__components[baseComponent] = nil - e.__isDirty = true e:__dirty() end diff --git a/src/list.lua b/src/list.lua index b3e8fdf..89c4886 100644 --- a/src/list.lua +++ b/src/list.lua @@ -64,13 +64,6 @@ function List:remove(obj) return self 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. -- @param obj The object to search for -- true if the list has the object, false otherwise diff --git a/src/world.lua b/src/world.lua index bf0eaf1..ca97e1a 100644 --- a/src/world.lua +++ b/src/world.lua @@ -2,8 +2,8 @@ local PATH = (...):gsub('%.[^%.]+$', '') -local Type = require(PATH..".type") -local List = require(PATH..".list") +local Type = require(PATH..".type") +local List = require(PATH..".list") local World = {} World.__index = World @@ -42,12 +42,8 @@ function World:addEntity(e) end e.__world = self - e.__wasAdded = true - self.__added:add(e) - --self.entities:add(e) - return self end @@ -59,8 +55,6 @@ function World:removeEntity(e) error("bad argument #1 to 'World:removeEntity' (Entity expected, got "..type(e)..")", 2) end - e.__wasRemoved = true - self.__removed:add(e) return self @@ -84,12 +78,12 @@ function World:__flush() -- Added for i = 1, self.__backAdded.size do - e = self.__backAdded:get(i) + e = self.__backAdded[i] self.entities:add(e) for j = 1, self.systems.size do - self.systems:get(j):__evaluate(e) + self.systems[j]:__evaluate(e) end self:onEntityAdded(e) @@ -98,13 +92,13 @@ function World:__flush() -- Removed for i = 1, self.__backRemoved.size do - e = self.__backRemoved:get(i) + e = self.__backRemoved[i] e.__world = nil self.entities:remove(e) for j = 1, self.systems.size do - self.systems:get(j):__remove(e) + self.systems[j]:__remove(e) end self:onEntityRemoved(e) @@ -113,10 +107,10 @@ function World:__flush() -- Dirty for i = 1, self.__backDirty.size do - e = self.__backDirty:get(i) + e = self.__backDirty[i] for j = 1, self.systems.size do - self.systems:get(j):__evaluate(e) + self.systems[j]:__evaluate(e) end end self.__backDirty:clear() @@ -163,7 +157,7 @@ function World:addSystem(baseSystem, callbackName, callback, enabled) -- Retroactively evaluate all entities for this system for i = 1, self.entities.size do - system:__evaluate(self.entities:get(i)) + system:__evaluate(self.entities[i]) end if callbackName then diff --git a/test/components/test_comp_1.lua b/test/components/test_comp_1.lua new file mode 100644 index 0000000..ef9b98a --- /dev/null +++ b/test/components/test_comp_1.lua @@ -0,0 +1,6 @@ +local Component = require("src").component + +return Component(function(e, x, y) + e.x = x + e.y = y +end) \ No newline at end of file diff --git a/tests/entityLifetime/init.lua b/tests/entityLifetime/init.lua new file mode 100644 index 0000000..e69de29 diff --git a/tests/init.lua b/tests/init.lua new file mode 100644 index 0000000..5804170 --- /dev/null +++ b/tests/init.lua @@ -0,0 +1,4 @@ +local PATH = (...):gsub('%.init$', '') + +require(PATH..".requireModules") +require(PATH..".entityLifetime") \ No newline at end of file diff --git a/tests/requireModules/init.lua b/tests/requireModules/init.lua new file mode 100644 index 0000000..69efe13 --- /dev/null +++ b/tests/requireModules/init.lua @@ -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 \ No newline at end of file