local module = {} setmetatable(module, {__index=_G}) setfenv(1, module) -- helper function for retrieving script functions getFunction = function(script) local f = require(script.script) if script.func then return f[script.func] else return f end end --===== dispatch messages to handlers =====-- dispatch = function(entities, msg, data) local query = entities:queryComponent(msg) for id, handler in pairs(query) do local f = getFunction(handler) f(entities, id, data) end end --===== script system =====-- system = function(params) return { db=params.db, update=function(self, dt) local entities = self.db:queryComponent("script") for id, script in pairs(entities) do local f = getFunction(script) f(self.db, id, dt) end end } end return module