/// <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); } }