Bonsoir,
je suis en galère depuis bientôt 1 semaine en essayant de faire un algo me permettant de rendre une map (tilemap) hexagonale.
J'ai du mal au niveau des maths qui se cache derrière la science des hexagones c'est pourquoi je fait appel à vous.
J'aimerais savoir comment implémenter ce système à travers SFML de manière optimisée.
Pour le moment j'ai une classe héritant de Drawable et c'est à peu près tout.. enfin j'ai une méthode pour tenter d'initialiser mes hexagones mais je n'y parvient pas.
Dans la forme j'aimerais être capable de rendre une map de longueur W et de hauteur H, avec des carrés je n'ai aucun problème mais avec des hexagones je suis complètement paumé.
Voici ou j'en suis :
void load(int hexSide, const int* tiles , int width , int height){
vertices.setPrimitiveType(sf::TrianglesFan); //vertices est mon sf::VertexArray
vertices.resize(width * height * 6);
for (unsigned int i = 0; i < width; ++i)
{
for (unsigned int j = 0; j < height; ++j)
{
auto tile = tiles[i + j * width];
//auto tu = tile % (tileset.getSize().x / tileSize.x);
//auto tv = tile / (tileset.getSize().x / tileSize.x);
auto hex = &vertices[(i + j * width) * 6];
//A partir de la je ne sais plus quoi mettre..
hex[0].position = sf::Vector2f(i*j*width, i*j*height);
hex[1].position = sf::Vector2f(...);
hex[2].position = sf::Vector2f(...);
hex[3].position = sf::Vector2f(...);
hex[4].position = sf::Vector2f(...);
hex[5].position = sf::Vector2f(...);
}
}
}
PS: Mes hexagons sont orienté "Pointy" ou dit verticaux.
Toute aide est la bienvenue.
Merci d'avance.