Clean up entity and world. Remove list:get

This commit is contained in:
Tjakka5 2019-12-29 15:56:20 +01:00
parent 38d461f8d6
commit 0183421c47
7 changed files with 32 additions and 30 deletions

View file

@ -12,13 +12,8 @@ Entity.__index = Entity
function Entity.new()
local e = setmetatable({
__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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,6 @@
local Component = require("src").component
return Component(function(e, x, y)
e.x = x
e.y = y
end)

View file

4
tests/init.lua Normal file
View file

@ -0,0 +1,4 @@
local PATH = (...):gsub('%.init$', '')
require(PATH..".requireModules")
require(PATH..".entityLifetime")

View 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