示例#1
0
        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();
            }
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
 public EventSimple(EventTargets targets, EventSources sources)
     : base(targets, sources)
 {
 }
示例#4
0
 /// <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;
 }
示例#5
0
 //This replaces Enum.HasFlag(), which does some undesired things.
 public static bool Contains(this EventTargets a, EventTargets b)
 {
     return((a & b) != 0);
 }