added support for meta-data editing improved element selection changed zooming fixed some issues with layer events fixed issue with 3D outline fixed loading issue for old maps some interface changes
84 lines
2.1 KiB
C++
84 lines
2.1 KiB
C++
#ifndef MMFLOOROBSTACLES_H
|
|
#define MMFLOOROBSTACLES_H
|
|
|
|
#include "MapLayer.h"
|
|
#include "MMFloorObstacleCircle.h"
|
|
#include "MMFloorObstacleLine.h"
|
|
#include "MMFloorObstacleDoor.h"
|
|
|
|
#include <Indoor/floorplan/v2/Floorplan.h>
|
|
|
|
/**
|
|
* layer that contains all of one floor's obstacles
|
|
*/
|
|
class MMFloorObstacles : public MapLayer {
|
|
|
|
Floorplan::Floor* floor;
|
|
|
|
public:
|
|
|
|
/** ctor with the floor */
|
|
MMFloorObstacles(MapLayer* parent, Floorplan::Floor* floor) : MapLayer(parent, MapLayerType::FLOOR_OBSTACLES), floor(floor) {
|
|
|
|
// the obstacles
|
|
for (Floorplan::FloorObstacle* o : floor->obstacles) {
|
|
if (dynamic_cast<Floorplan::FloorObstacleLine*>(o)) {
|
|
addElement(new MMFloorObstacleLine(this, floor, (Floorplan::FloorObstacleLine*)o));
|
|
} else if (dynamic_cast<Floorplan::FloorObstacleCircle*>(o)) {
|
|
addElement(new MMFloorObstacleCircle(this, floor, (Floorplan::FloorObstacleCircle*)o));
|
|
} else if (dynamic_cast<Floorplan::FloorObstacleDoor*>(o)) {
|
|
addElement(new MMFloorObstacleDoor(this, floor, (Floorplan::FloorObstacleDoor*)o));
|
|
} else {
|
|
throw new Exception("todo: not yet implemented obstacle type");
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/** get the corresponding floor from the underlying model */
|
|
Floorplan::Floor* getFloor() {return floor;}
|
|
|
|
//TODO: check
|
|
MMFloorObstacleDoor* createDoor(Floorplan::FloorObstacleDoor* obs) {
|
|
|
|
// add to underlying model
|
|
floor->obstacles.push_back(obs);
|
|
|
|
// add to myself as element
|
|
MMFloorObstacleDoor* mm = new MMFloorObstacleDoor(this, floor, obs);
|
|
addElement(mm);
|
|
return mm;
|
|
|
|
}
|
|
|
|
//TODO: check
|
|
MMFloorObstacleLine* createLine(Floorplan::FloorObstacleLine* obs) {
|
|
|
|
// add to underlying model
|
|
floor->obstacles.push_back(obs);
|
|
|
|
// add to myself as element
|
|
MMFloorObstacleLine* mm = new MMFloorObstacleLine(this, floor, obs);
|
|
addElement(mm);
|
|
return mm;
|
|
|
|
}
|
|
|
|
//TODO: check
|
|
void createCircle(Floorplan::FloorObstacleCircle* obs) {
|
|
|
|
// add to underlying model
|
|
floor->obstacles.push_back(obs);
|
|
|
|
// add to myself as element
|
|
addElement(new MMFloorObstacleCircle(this, floor, obs));
|
|
|
|
}
|
|
|
|
|
|
std::string getLayerName() const override {return "obstacles";}
|
|
|
|
};
|
|
|
|
#endif // MMFLOOROBSTACLES_H
|