#ifndef NAVMESHMODEL_H #define NAVMESHMODEL_H #include #include #include #include #include #include #include #include #include #include "QNavMeshSettings.h" /** * used for 3D NavMesh rendering */ class NavMeshModel { private: NM::NavMesh navMesh; NM::NavMeshSettings settings; Floorplan::IndoorMap* im; public: NavMeshModel() : navMesh() { ; } NM::NavMesh* getNavMesh() {return &navMesh;} class Listener : public NM::NavMeshFactoryListener { private: QDialog dlg; QLabel* lbl1; QProgressBar* bar1; public: Listener() { QVBoxLayout* lay = new QVBoxLayout(&dlg); lbl1 = new QLabel(); lay->addWidget(lbl1); bar1 = new QProgressBar(); lay->addWidget(bar1); dlg.resize(350, 90); dlg.setWindowTitle("NavMesh building"); dlg.show(); } ~Listener() { dlg.close(); } void onNavMeshBuildUpdateMajor(const std::string& what) override { lbl1->setText(what.c_str()); QApplication::processEvents(); } void onNavMeshBuildUpdateMajor(const int cnt, const int cur) override { bar1->setValue(cur*100/cnt); QApplication::processEvents(); } }; void rebuild(Floorplan::IndoorMap* im) { Listener l; QNavMeshSettings qs(&settings); qs.exec(); if (qs.ok) { NM::NavMeshFactory fac(&navMesh, settings); fac.build(im, &l); } } }; #endif // NAVMESHMODEL_H