This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
IndoorMap/mapview/3D/navMesh/NavMeshModel.h
k-a-z-u 2f37baf497 re-added grid-rendering to the editor
rebuild grid/navMesh 3D data only if needed
2018-07-03 10:53:03 +02:00

93 lines
1.7 KiB
C++

#ifndef NAVMESHMODEL_H
#define NAVMESHMODEL_H
#include <Indoor/floorplan/v2/Floorplan.h>
#include <Indoor/navMesh/NavMesh.h>
#include <Indoor/navMesh/NavMeshFactory.h>
#include <Indoor/navMesh/NavMeshFactoryListener.h>
#include <QProgressDialog>
#include <QApplication>
#include <QVBoxLayout>
#include <QLabel>
#include <QProgressBar>
#include "QNavMeshSettings.h"
/**
* used for 3D NavMesh rendering
*/
class NavMeshModel {
private:
NM::NavMesh<NM::NavMeshTriangle> navMesh;
NM::NavMeshSettings settings;
Floorplan::IndoorMap* im;
int buildID = 0;
public:
NavMeshModel() : navMesh() {
;
}
NM::NavMesh<NM::NavMeshTriangle>* 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();
}
};
int getBuildID() const {
return buildID;
}
void rebuild(Floorplan::IndoorMap* im) {
Listener l;
QNavMeshSettings qs(&settings);
qs.exec();
if (qs.ok) {
NM::NavMeshFactory<NM::NavMeshTriangle> fac(&navMesh, settings);
fac.build(im, &l);
}
buildID = rand();
}
};
#endif // NAVMESHMODEL_H