| 12345678910111213141516171819202122232425262728293031323334 |
- local ffi = require("ffi")
- local class, object = require("class"), require("class.object")
- local fficlass = require("class.fficlass")
- require("ecs")
- local ECS = class(object)
- ECS.N_ENTITIES = 100
- function ECS:init()
- self.entities = ffi.new("entity_t[?]", ECS.N_ENTITIES)
- -- Making sure that everything is set
- for i=0,ECS.N_ENTITIES-1 do
- self.entities[i] = false
- end
- self.components = {}
- self.components_classes = {}
- self.n_components = 0
- end
- function ECS:create_component(name, structdef)
- assert(not self.components_classes[name])
- local new_component = fficlass("bool _alive;"..structdef)
- self.components_classes[name] = new_component
- self.components[name] = new_component:new_array(ECS.N_ENTITIES)
- self.n_components = self.n_components + 1
- return new_component
- end
- function ECS:get_component(name, id)
- return self.components[name][id]
- end
- return ECS
|