Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Emitter = {}
- function Emitter.new()
- local emitobj = {}
- emitobj.Listeners = {}
- return setmetatable(emitobj, {__index = Emitter}) --Metatable __index just means when you try to access a nil index, itll try calling a func in Emitter table
- end
- function Emitter:Connect(Func)
- table.insert(self.Listeners, Func)
- end
- function Emitter:Emit(...) -- ... is variadic for unknown params
- for Index, Func in pairs(self.Listeners) do
- Func(...)
- end
- end
- return Emitter
- --example usage:
- local Emitter = require("Emitter")
- local OnMessageEmitter = Emitter.new()
- function OnMessageCallback(Message)
- print(Message)
- end
- OnMessageEmitter:Connect(OnMessageCallback)
- --You can then keep track of the emitter and later do:
- Emitter:Emit("This is a message")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement