qHexWalker 0.0.1
Hexagonal Grid Pathfinding & Maze Visualization on Interactive Maps
Loading...
Searching...
No Matches
h3MazeAdapter.h
Go to the documentation of this file.
1#ifndef QHEXWALKER_H3MAZEADAPTER_H
2#define QHEXWALKER_H3MAZEADAPTER_H
3
4#include <QFuture>
5
7class H3MazeAdapter final : public QObject {
8 Q_OBJECT
9public:
10 explicit H3MazeAdapter(QObject *parent = nullptr);
11 ~H3MazeAdapter() override;
12
13public slots:
14 // Асинхронный запуск генерации лабиринта
15 void generateMazeAsync(double lat, double lon, int kRingRadius);
16
17signals:
18 // Сигнал для визуализации стен (полигоны для QML)
19 void mazePolygonsComputed(const std::vector<QVariantList> &polygons);
20
21 // Сигнал для передачи стен в A* алгоритм
22 void mazeWallsGenerated(const std::unordered_set<H3Index> &walls);
23
24 // Сигнал для передачи центра и радиуса лабиринта
25 void mazeRadiusComputed(const QGeoCoordinate &center, double radiusMeters);
26
27private:
28 // Основная функция генерации (вызывается в отдельном потоке)
29 void generateMaze(double lat, double lon, int kRingRadius);
30
31 static std::vector<QVariantList> cellsToMergedPolygons(const std::unordered_set<H3Index> &cells);
32 static void deleteStartEndEntities(H3Index start, H3Index end, std::unordered_set<H3Index> &walls);
33 static H3Index getMiddleOfRing(const std::vector<H3Index> &distances, H3Index zeroCell);
34
36 QList<QFuture<void>> pendingFutures_; // Track async tasks to prevent dangling pointers
37};
38
39#endif // QHEXWALKER_H3MAZEADAPTER_H
~H3MazeAdapter() override
QList< QFuture< void > > pendingFutures_
static std::vector< QVariantList > cellsToMergedPolygons(const std::unordered_set< H3Index > &cells)
void mazeWallsGenerated(const std::unordered_set< H3Index > &walls)
void generateMazeAsync(double lat, double lon, int kRingRadius)
void generateMaze(double lat, double lon, int kRingRadius)
static void deleteStartEndEntities(H3Index start, H3Index end, std::unordered_set< H3Index > &walls)
void mazeRadiusComputed(const QGeoCoordinate &center, double radiusMeters)
static H3Index getMiddleOfRing(const std::vector< H3Index > &distances, H3Index zeroCell)
H3MazeGenerator * mazeGenerator_
Generates perfect mazes on H3 hexagonal grids.