Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 protected void EnsureNeighbourKeyIsCreated(T gridMember)
 {
     if (!NeighbourDict.ContainsKey(gridMember))
     {
         NeighbourDict[gridMember] = new List <T>();
     }
 }