private MapTileCenter GetClosestNeigbour(Vector2f position) { MapTileCenter closest = GetClosestTile(position + new Vector2f(Textures["1"].Size.X, 0)); MapTileCenter next = GetClosestTile(position - new Vector2f(Textures["1"].Size.X, 0)); if ((closest.Position - position).X * (closest.Position - position).X + (closest.Position - position).Y * (next.Position - position).Y < (next.Position - position).X * (next.Position - position).X + (next.Position - position).Y * (next.Position - position).Y) { closest = next; } next = GetClosestTile(position + new Vector2f(0, Textures["1"].Size.Y)); if ((closest.Position - position).X * (closest.Position - position).X + (closest.Position - position).Y * (next.Position - position).Y < (next.Position - position).X * (next.Position - position).X + (next.Position - position).Y * (next.Position - position).Y) { closest = next; } next = GetClosestTile(position - new Vector2f(0, Textures["1"].Size.Y)); if ((closest.Position - position).X * (closest.Position - position).X + (closest.Position - position).Y * (next.Position - position).Y < (next.Position - position).X * (next.Position - position).X + (next.Position - position).Y * (next.Position - position).Y) { closest = next; } return(closest); }
private string GetTexture(Vector2f position) { MapTileCenter onPosition = GetClosestTile(position); MapTileCenter closestNeighbour = GetClosestNeigbour(position); if (onPosition.Tile != closestNeighbour.Tile) { return(onPosition.Tile.ToString() + closestNeighbour.Tile.ToString()); } return(onPosition.Tile.ToString()); }
private MapTileCenter GetClosestTile(Vector2f position) { MapTileCenter closest = Tiles[0]; foreach (var tile in Tiles) { if ((closest.Position - position).X * (closest.Position - position).X + (closest.Position - position).Y * (tile.Position - position).Y < (tile.Position - position).X * (tile.Position - position).X + (tile.Position - position).Y * (tile.Position - position).Y) { closest = tile; } } return(closest); }