internal void SendPacketToNearbyPlayers(WorldPosition pos, Packet packet, Client excludedClient = null) { Client[] nearbyClients = GetNearbyPlayers(pos).ToArray(); if (nearbyClients.Length == 0) return; packet.SetShared(nearbyClients.Length); Parallel.ForEach(nearbyClients, client => { if (excludedClient != client) { client.SendPacket(packet); } else { packet.Release(); } }); }
internal void SendSyncPacket(Packet packet) { packet.Write(); SendSync(packet.GetBuffer()); packet.Release(); }
internal void SendPacketToClientList(Packet packet, Client[] targetList, Client excludedClient = null) { if (targetList.Length == 0) return; if (targetList.Length == 1) { if (targetList[0] == excludedClient) return; targetList[0].SendPacket(packet); } else { packet.SetShared(targetList.Length); Parallel.ForEach(targetList, client => { if (excludedClient != client) { client.SendPacket(packet); } else { packet.Release(); } }); } }