diff --git a/src/geometry/FacilityGeometry.cpp b/src/geometry/FacilityGeometry.cpp index 415f3188d0c6277fb15b3bfcdd0b482854693ab2..c3cf7e04bab66ccb368591e3815256c6971f4987 100644 --- a/src/geometry/FacilityGeometry.cpp +++ b/src/geometry/FacilityGeometry.cpp @@ -161,8 +161,13 @@ void FacilityGeometry::CreateActors() { assembly3D->SetVisibility(status); } + _visibility=status; } + bool FacilityGeometry::getVisibility() const + { + return _visibility; + } /*** * This is the main build method and should be called by all functions * drawing a wall or a door. Important @@ -812,6 +817,10 @@ void FacilityGeometry::showFloor(bool status) floorActor->SetVisibility(status); } +void FacilityGeometry::showObstacles(bool status) +{ + obstaclesActor->SetVisibility(status); +} void FacilityGeometry::addObjectLabel(double center[3], double orientation[3], std::string caption, double color) { addNewElementText(center, orientation, caption, color); diff --git a/src/geometry/FacilityGeometry.h b/src/geometry/FacilityGeometry.h index 0af9ad22849f49a83d3b97ba5efccff2086d8274..2aee2b57193fd2fb54c5bc3f6d82acda6a67fb5d 100644 --- a/src/geometry/FacilityGeometry.h +++ b/src/geometry/FacilityGeometry.h @@ -133,9 +133,11 @@ public: void showWalls(bool status); void showNavLines(bool status); void showFloor(bool status); + void showObstacles(bool status); void showGeometryLabels(int status); void setVisibility(bool status); + bool getVisibility() const; private: @@ -179,6 +181,7 @@ private: vtkActor2DCollection* captions; std::string _description; + bool _visibility=true; }; #endif /* FACILITYGEOMETRY_H_ */ diff --git a/src/geometry/GeometryFactory.cpp b/src/geometry/GeometryFactory.cpp index 500c9ddc7587f81be7af4ac2d8b2128a32970430..ce41a6bc37228c17a2fbd35eb573afc88bcd5d47 100644 --- a/src/geometry/GeometryFactory.cpp +++ b/src/geometry/GeometryFactory.cpp @@ -28,10 +28,10 @@ void GeometryFactory::Set2D(bool status) { for(auto&& subroom:room.second) { - subroom.second->set2D(status); + if(_geometryFactory[room.first][subroom.first]->getVisibility()) + subroom.second->set2D(status); } } - //Set3D(!status); } void GeometryFactory::Set3D(bool status) @@ -40,10 +40,10 @@ void GeometryFactory::Set3D(bool status) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->set3D(status); } } - //Set2D(!status); } void GeometryFactory::Clear() @@ -60,6 +60,7 @@ void GeometryFactory::ChangeWallsColor(double* color) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->changeWallsColor(color); } } @@ -71,6 +72,7 @@ void GeometryFactory::ChangeExitsColor(double* color) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->changeExitsColor(color); } } @@ -82,6 +84,7 @@ void GeometryFactory::ChangeNavLinesColor(double* color) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->changeNavLinesColor(color); } } @@ -93,7 +96,8 @@ void GeometryFactory::ChangeFloorColor(double* color) { for(auto&& subroom:room.second) { - subroom.second->changeFloorColor(color); + if(_geometryFactory[room.first][subroom.first]->getVisibility()) + subroom.second->changeFloorColor(color); } } } @@ -104,6 +108,7 @@ void GeometryFactory::ChangeObstaclesColor(double* color) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->changeObstaclesColor(color); } } @@ -115,6 +120,7 @@ void GeometryFactory::ShowDoors(bool status) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->showDoors(status); } } @@ -126,6 +132,7 @@ void GeometryFactory::ShowStairs(bool status) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->showStairs(status); } } @@ -137,6 +144,7 @@ void GeometryFactory::ShowWalls(bool status) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->showWalls(status); } } @@ -148,6 +156,7 @@ void GeometryFactory::ShowNavLines(bool status) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->showNavLines(status); } } @@ -159,10 +168,22 @@ void GeometryFactory::ShowFloor(bool status) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->showFloor(status); } } } +void GeometryFactory::ShowObstacles(bool status) +{ + for (auto&& room: _geometryFactory) + { + for(auto&& subroom:room.second) + { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) + subroom.second->showObstacles(status); + } + } +} void GeometryFactory::ShowGeometryLabels(int status) { @@ -170,6 +191,7 @@ void GeometryFactory::ShowGeometryLabels(int status) { for(auto&& subroom:room.second) { + if(_geometryFactory[room.first][subroom.first]->getVisibility()) subroom.second->showGeometryLabels(status); } } @@ -228,7 +250,6 @@ const std::map<int , std::map<int, std::shared_ptr<FacilityGeometry> > > & Geome void GeometryFactory::AddElement(int room, int subroom, std::shared_ptr<FacilityGeometry> geo) { - //_geometryFactory.insert({room,{subroom,geo}}); _geometryFactory[room][subroom]=geo; }