/// <summary>
        /// Subscribes the player to the actor with the proximity level
        /// </summary>
        /// <param name="player">The player</param>
        /// <param name="actor">The actor</param>
        /// <param name="proximityLevel">The proximity level</param>
        public void SubscribeNoSynchronize(Player player, Actor actor, ProximityLevel proximityLevel)
        {
            if (Verify.Authenticated(player) && Verify.Active(actor))
            {
                // Only add as subscriber if this player is not the owner
                if (!ReferenceEquals(player.Connection, actor.Connection))
                {
                    actor.Subscribers.Add(player);
                    player.SubscribedTo.Add(actor);

                    player.ActorProximityLevels[actor.Id] = proximityLevel;
                }

                Spawn(player, actor);
            }
        }
        protected override void SendToRemotes(Event <Actor> ev)
        {
            foreach (Player player in ev.Target.Subscribers)
            {
                ProximityLevel proximity = ev.Context.Server.GetProximityLevel(player, ev.Target);

                if (proximity < ev.ProximityLevel)
                {
                    continue;
                }

                if (ReferenceEquals(ev.Source, player))
                {
                    continue;
                }

                player.Connection.Queue(ev, ev.Reliable);
            }
        }
Exemple #3
0
        /// <summary>
        /// Subscribes the player to the actor with the proximity level
        /// </summary>
        /// <param name="player">The player</param>
        /// <param name="actor">The actor</param>
        /// <param name="proximityLevel">The proximity level</param>
        public void SubscribeNoSynchronize(Player player, Actor actor, ProximityLevel proximityLevel)
        {
            if (Verify.Authenticated(player) && Verify.Active(actor))
            {
                // Only add as subscriber if this player is not the owner
                if (!ReferenceEquals(player.Connection, actor.Connection))
                {
                    actor.Subscribers.Add(player);
                    player.SubscribedTo.Add(actor);

                    player.ActorProximityLevels[actor.Id] = proximityLevel;
                }

                Spawn(player, actor);
            }
        }