diff --git a/Projects/Server/Maps/Map.cs b/Projects/Server/Maps/Map.cs index eaa1b9d98..42d6acc2a 100644 --- a/Projects/Server/Maps/Map.cs +++ b/Projects/Server/Maps/Map.cs @@ -792,7 +792,7 @@ namespace Server for (var y = sect.Y - range; y <= sect.Y + range; ++y) { var check = GetRealSector(x, y); - if (check != InvalidSector && check.Players.Count > 0) + if (check != InvalidSector && check.Clients.Count > 0) { return true; } diff --git a/Projects/Server/Regions/Region.cs b/Projects/Server/Regions/Region.cs index 41e477482..2cec7f6fe 100644 --- a/Projects/Server/Regions/Region.cs +++ b/Projects/Server/Regions/Region.cs @@ -509,11 +509,12 @@ namespace Server { var sector = Sectors[i]; - foreach (var player in sector.Players) + foreach (var ns in sector.Clients) { - if (player.Region.IsPartOf(this)) + var player = ns.Mobile; + if (player?.Deleted == false && player.Region.IsPartOf(this)) { - list.Add(player); + list.Add(ns.Mobile); } } } @@ -529,9 +530,10 @@ namespace Server { var sector = Sectors[i]; - foreach (var player in sector.Players) + foreach (var ns in sector.Clients) { - if (player.Region.IsPartOf(this)) + var player = ns.Mobile; + if (player?.Deleted == false && player.Region.IsPartOf(this)) { count++; } diff --git a/Projects/Server/Sector.cs b/Projects/Server/Sector.cs index 1c2d1776a..844a83866 100644 --- a/Projects/Server/Sector.cs +++ b/Projects/Server/Sector.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Runtime.CompilerServices; using Server.Items; using Server.Network; @@ -37,7 +38,6 @@ namespace Server private List m_Items; private List m_Mobiles; private List m_Multis; - private List m_Players; private List m_RegionRects; public Sector(int x, int y, Map owner) @@ -58,8 +58,6 @@ namespace Server public List Clients => m_Clients ?? m_DefaultClientList; - public List Players => m_Players ?? m_DefaultMobileList; - public bool Active => m_Active && Owner != Map.Internal; public Map Owner { get; } @@ -68,6 +66,7 @@ namespace Server public int Y { get; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] private static void Add(ref List list, T value) { list ??= new List(); @@ -75,7 +74,8 @@ namespace Server list.Add(value); } - private void Remove(ref List list, T value) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static void Remove(ref List list, T value) { if (list != null) { @@ -88,7 +88,8 @@ namespace Server } } - private void Replace(ref List list, T oldValue, T newValue) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static void Replace(ref List list, T oldValue, T newValue) { if (oldValue != null && newValue != null) { @@ -135,16 +136,8 @@ namespace Server if (mob.NetState != null) { Add(ref m_Clients, mob.NetState); - } - if (mob.Player) - { - if (m_Players == null) - { - Owner.ActivateSectors(X, Y); - } - - Add(ref m_Players, mob); + Owner.ActivateSectors(X, Y); } } @@ -155,16 +148,8 @@ namespace Server if (mob.NetState != null) { Remove(ref m_Clients, mob.NetState); - } - if (mob.Player && m_Players != null) - { - Remove(ref m_Players, mob); - - if (m_Players == null) - { - Owner.DeactivateSectors(X, Y); - } + Owner.DeactivateSectors(X, Y); } }