extends Node const endpoints = {} const subscriber = {} static func subscribe(event_key : String, listener : Node, callback : String)->void: if endpoints.has(event_key): for publisher in endpoints[event_key]: publisher["pub"].connect(publisher["sig"], listener, callback) print("subsribing to ", event_key) if not subscriber.has(event_key): subscriber[event_key] = [] subscriber[event_key].append({"lis": listener, "cb": callback}) static func publish(event_key : String, payload): if endpoints.has(event_key): endpoints[event_key][0]["pub"].emit_signal(endpoints[event_key][0]["sig"], payload) else: print("no publisher to emit ", event_key, " with ", payload) static func registerPublisher(event_key : String, publisher : Node, Signal : String)->void: if not endpoints.has(event_key): endpoints[event_key] = [] endpoints[event_key].append({"pub": publisher, "sig": Signal}) if subscriber.has(event_key): for sub in subscriber[event_key]: publisher.connect(Signal, sub["lis"], sub["cb"]) print("added publisher for ", event_key, ":", endpoints[event_key]) static func clear()->void: """ Clears all Publishers """ endpoints.clear() subscriber.clear()