void raiseEventOnServer(Event <T> ev) { EventTargets t = ev.DistributionTargets; bool toOwner = (t & EventTargets.Owner) == EventTargets.Owner; bool toRemotes = (t & EventTargets.Remotes) == EventTargets.Remotes; bool toServer = (t & EventTargets.Server) == EventTargets.Server; if (toServer) { QueueOnServer(ev); } if (toRemotes) { SendToRemotes(ev); } if (toOwner) { SendToOwner(ev); } // Track stats if (toOwner || toRemotes) { Context.Stats.AddOutEvent(); } }
void raiseEventOnClient(Event <T> ev) { EventTargets t = ev.DistributionTargets; EventSources s = ev.AllowedSources; bool toOwner = (t & EventTargets.Owner) == EventTargets.Owner; bool toRemotes = (t & EventTargets.Remotes) == EventTargets.Remotes; bool toServer = (t & EventTargets.Server) == EventTargets.Server; bool allowedOwner = (s & EventSources.Owner) == EventSources.Owner; bool allowedRemotes = (s & EventSources.Remotes) == EventSources.Remotes; if (IsLocalTargetOwner(ev)) { if (toOwner) { QueueOnClient(ev); } if ((toServer || toRemotes) && allowedOwner) { SendToServer(ev); } } else { if (toRemotes) { QueueOnClient(ev); } if ((toServer || toOwner) && allowedRemotes) { SendToServer(ev); } } }
public EventSimple(EventTargets targets, EventSources sources) : base(targets, sources) { }
/// <summary> /// Constructor /// </summary> /// <param name="targets">The targets this event should be distributed to</param> /// <param name="sources">The sources this event is allowed to be raised from</param> protected Event(EventTargets targets, EventSources sources) { DistributionTargets = targets; AllowedSources = sources; }
//This replaces Enum.HasFlag(), which does some undesired things. public static bool Contains(this EventTargets a, EventTargets b) { return((a & b) != 0); }