summaryrefslogtreecommitdiff
path: root/honey/ecs/ecs.lua
diff options
context:
space:
mode:
Diffstat (limited to 'honey/ecs/ecs.lua')
-rw-r--r--honey/ecs/ecs.lua25
1 files changed, 25 insertions, 0 deletions
diff --git a/honey/ecs/ecs.lua b/honey/ecs/ecs.lua
index b0409e4..301ed36 100644
--- a/honey/ecs/ecs.lua
+++ b/honey/ecs/ecs.lua
@@ -271,4 +271,29 @@ function SystemDb.removeSystem(self, id)
end
+--===== Access helper =====--
+
+
+function Accessor(db, id)
+ local tbl = {
+ __db = db,
+ __id = id,
+ }
+
+ setmetatable(tbl, {
+ __index=function(self, key)
+ return self.__db:getComponent(self.__id, key)
+ end,
+ __newindex=function(self, key, value)
+ self.__db:addComponent(self.__id, key, value)
+ end,
+ __tostring=function(self)
+ return string.format("Accessor<%s>", self.__id)
+ end,
+ })
+
+ return tbl
+end
+
+
return module