|
static void | Subscribe (Enum evt, Handler h, object owner=null) |
| Subscribe to the event specified by evt. Pass in a delegate to be called back when the even occurs. More...
|
|
static void | Subscribe (string id, Enum evt, Handler h, object owner=null) |
| Subscribe to the event specified by evt filtered by the specified id. Pass in a delegate to be called back when the even occurs. More...
|
|
static void | Subscribe (string id, string evt, Handler h, object owner=null) |
| Subscribe to the event specified by evt. Pass in a delegate to be called back when the even occurs. More...
|
|
static void | Subscribe (string evt, Handler h, object owner=null) |
| Subscribe to the event specified by evt. Pass in a delegate to be called back when the even occurs. More...
|
|
static void | Unsubscribe (string id, Enum evt, Handler h) |
| Unsubscribe the specified delegate from the event. More...
|
|
static void | Unsubscribe (Enum evt, Handler h) |
| Unsubscribe the specified delegate from the event. More...
|
|
static void | Unsubscribe (string evt, Handler h) |
| Unsubscribe the specified delegate from the event. More...
|
|
static void | Unsubscribe (string id, string evt, Handler h) |
| Unsubscribe the specified delegate from the event. More...
|
|
static void | Unsubscribe (object owner) |
| Unsubscribe to all events that were subscribed to by a specific owner object. More...
|
|
static void | Publish (string id, string evt, params object[] data) |
| Publish the specified event with extra data. More...
|
|
static void | Publish (string evt, params object[] data) |
| Publish the specified event with extra data. More...
|
|
static void | Publish (string id, Enum evt, params object[] data) |
| Publish the specified event with extra data. More...
|
|
static void | Publish (Enum evt, params object[] data) |
| Publish the specified event with extra data. More...
|
|
static void | Queue (string id, string evt, params object[] data) |
|
static void | Queue (string evt, params object[] data) |
|
static void | Queue (string id, Enum evt, params object[] data) |
|
static void | Queue (Enum evt, params object[] data) |
|
static void | Clear () |
| Clear all event subscribers, used primarily when switching or resetting a level. More...
|
|
Class for broadcasting messages to subscribers. Clients of the EventRouter register themselves by calling Subscribe and passing in the even they are interested in along with a delegate to be called back when the event is received. Events are published via the Publish method which allows arbitrary data to be passed along with the event to be interpreted by the event receiver. Events do not have to be pre-defined.
Publish and Subscribe methods also have an optional id parameter which will filter the events
sent to just those that match the provided id. Subscribing to an event with no id will result
in receiving all events of the specified type.
Example of a simple publish and subscribe class, not using any id filtering.
Sender.cs
public enum SenderEvent { Test }
public class Sender { public void Send() { EventRouter.Publish(SenderEvent.Test, "Hello World"); } }
Receiver.cs
public class Receiver { public Receiver() { EventRouter.Subscribe(SenderEvent.Test, OnSenderEvent); }
void OnSenderEvent(EventRouter.Event evt) { if(evt.HasData) { Console.WriteLine("Received event: " + evt.Type + " with data: " + evt.GetData<string>(0)); } else { Console.WriteLine("Received event: " + evt.Type + " with no data"); } } }
Example of a publish and subscribe using id's to filter specific messages.
Sender.cs
public enum SenderEvent { Test }
public class Sender { public void SendA() { EventRouter.Publish("A", SenderEvent.Test); }
public void SendB() { EventRouter.Publish("B", SenderEvent.Test); } }
Receiver.cs
public class Receiver { public Receiver() { EventRouter.Subscribe("A", SenderEvent.Test, OnSenderEventA); EventRouter.Subscribe("B", SenderEvent.Test, OnSenderEventB); }
void OnSenderEventA(EventRouter.Event evt) { Console.WriteLine("Received SenderEvent.Test with id 'A'"); }
void OnSenderEventB(EventRouter.Event evt) { Console.WriteLine("Received SenderEvent.Test with id 'B'"); } }