Exemplo n.º 1
0
        public void DeRegisterInGrid(ITilemapMember member)
        {
            //do not check if member registers in the grid. Just in case the value changed
            //  it's important that it gets removed if it was ever registered
            var position = member.PositionInTileMap;

            GetListFromCoord(position)?.Remove(member);

            var chunk = GetIndexInChunkMap(member.PositionInTileMap).ToAxial();
            IList <ITilemapMember> chunkList;

            if (tileMemberChunkMap.TryGetValue(chunk, out chunkList))
            {
                chunkList.Remove(member);
                if (chunkList.Count == 0)
                {
                    tileMemberChunkMap.Remove(chunk);
                }
            }
        }
Exemplo n.º 2
0
        public void RegisterInGrid(ITilemapMember item)
        {
            if (!item.DoesRegisterInIndex)
            {
                return;
            }
            var position = item.PositionInTileMap;

            GetListFromCoord(position)?.Add(item);

            var chunk = GetIndexInChunkMap(item.PositionInTileMap).ToAxial();
            IList <ITilemapMember> chunkList;

            if (!tileMemberChunkMap.TryGetValue(chunk, out chunkList))
            {
                chunkList = new List <ITilemapMember>();
                tileMemberChunkMap[chunk] = chunkList;
            }
            chunkList.Add(item);
        }
Exemplo n.º 3
0
 public TileRoute GetRouteBetweenMembers(ITilemapMember origin, ITilemapMember destination)
 {
     return(new TileRoute(coordinateSystem.GetRouteGenerator(origin.PositionInTileMap, destination.PositionInTileMap).ToList()));
 }
Exemplo n.º 4
0
 public bool IsWithinDistance(ITilemapMember first, ITilemapMember second, int distance)
 {
     //TODO: replace with distance function
     return(!coordinateSystem.GetRouteGenerator(first.PositionInTileMap, second.PositionInTileMap).Skip(distance).Any());
 }