public virtual T Remove(Vector2Int key) { Size.Invalidate(); var gridMember = GetMember(key); // Remove controller reference if (ReferenceEquals(gridMember, Controller)) { Controller = default; } var tilePositions = GridUtils.GetOccupiedTilesByAnchor(gridMember); GridMembers.Remove(gridMember); gridMember.RemoveGridTotals(Totals); // Remove neighbour references foreach (var neighbour in NeighbourDict[gridMember]) { NeighbourDict[neighbour].Remove(gridMember); } NeighbourDict.Remove(gridMember); foreach (var occupiedTile in tilePositions) { OccupiedTiles.Remove(occupiedTile); } return(gridMember); }
protected void EnsureNeighbourKeyIsCreated(T gridMember) { if (!NeighbourDict.ContainsKey(gridMember)) { NeighbourDict[gridMember] = new List <T>(); } }