using System.Collections.Generic; using System.Text; namespace ET.Server { [FriendOf(typeof(Cell))] public static class CellSystem { [ObjectSystem] public class CellDestroySystem: DestroySystem { protected override void Destroy(Cell self) { self.AOIUnits.Clear(); self.SubsEnterEntities.Clear(); self.SubsLeaveEntities.Clear(); } } public static void Add(this Cell self, AOIEntity aoiEntity) { self.AOIUnits.Add(aoiEntity.Id, aoiEntity); } public static void Remove(this Cell self, AOIEntity aoiEntity) { self.AOIUnits.Remove(aoiEntity.Id); } public static string CellIdToString(this long cellId) { int y = (int) (cellId & 0xffffffff); int x = (int) ((ulong) cellId >> 32); return $"{x}:{y}"; } public static string CellIdToString(this HashSet cellIds) { StringBuilder sb = new StringBuilder(); foreach (long cellId in cellIds) { sb.Append(cellId.CellIdToString()); sb.Append(","); } return sb.ToString(); } } }