Skip to content
Snippets Groups Projects

Feature dynamic transitions

Open Mohcine Chraibi requested to merge feature_dynamic_transitions into develop
15 files
+ 54522
2
Compare changes
  • Side-by-side
  • Inline
Files
15
+ 29
0
@@ -289,6 +289,7 @@ bool GeoFileParser::LoadGeometry(Building* building)
@@ -289,6 +289,7 @@ bool GeoFileParser::LoadGeometry(Building* building)
int subroom1_id = xmltoi(xTrans->Attribute("subroom1_id"), -1);
int subroom1_id = xmltoi(xTrans->Attribute("subroom1_id"), -1);
int subroom2_id = xmltoi(xTrans->Attribute("subroom2_id"), -1);
int subroom2_id = xmltoi(xTrans->Attribute("subroom2_id"), -1);
std::string type = xmltoa(xTrans->Attribute("type"), "normal");
std::string type = xmltoa(xTrans->Attribute("type"), "normal");
 
double waiting_time = xmltof(xTrans->Attribute("waiting_time"), 0);
double x1 = xmltof(xTrans->FirstChildElement("vertex")->Attribute("px"));
double x1 = xmltof(xTrans->FirstChildElement("vertex")->Attribute("px"));
double y1 = xmltof(xTrans->FirstChildElement("vertex")->Attribute("py"));
double y1 = xmltof(xTrans->FirstChildElement("vertex")->Attribute("py"));
@@ -302,6 +303,7 @@ bool GeoFileParser::LoadGeometry(Building* building)
@@ -302,6 +303,7 @@ bool GeoFileParser::LoadGeometry(Building* building)
t->SetPoint1(Point(x1, y1));
t->SetPoint1(Point(x1, y1));
t->SetPoint2(Point(x2, y2));
t->SetPoint2(Point(x2, y2));
t->SetType(type);
t->SetType(type);
 
t->SetWaitingTime(waiting_time);
if (room1_id!=-1 && subroom1_id!=-1) {
if (room1_id!=-1 && subroom1_id!=-1) {
//Room* room = _rooms[room1_id];
//Room* room = _rooms[room1_id];
@@ -333,6 +335,33 @@ bool GeoFileParser::LoadGeometry(Building* building)
@@ -333,6 +335,33 @@ bool GeoFileParser::LoadGeometry(Building* building)
building->AddTransition(t);
building->AddTransition(t);
}
}
 
//add "danger lines" to the building, danger lines are lines that can move and kill people standing too close
 
TiXmlNode* xDangerLineNode = xRootNode->FirstChild("danger_lines");
 
if (xDangerLineNode)
 
for (TiXmlElement* xDangerLine = xDangerLineNode->FirstChildElement("danger_line"); xDangerLine;
 
xDangerLine = xDangerLine->NextSiblingElement("danger_line")) {
 
 
double x_speed = xmltof(xDangerLine->Attribute("x_speed"), 0);
 
double y_speed = xmltof(xDangerLine->Attribute("y_speed"), 0);
 
double fatal_distance = xmltof(xDangerLine->Attribute("fatal_distance"), 0);
 
double danger_distance = xmltof(xDangerLine->Attribute("danger_distance"), 0);
 
double alpha = xmltof(xDangerLine->Attribute("alpha"), 1);
 
 
double x1 = xmltof(xDangerLine->FirstChildElement("vertex")->Attribute("px"));
 
double y1 = xmltof(xDangerLine->FirstChildElement("vertex")->Attribute("py"));
 
 
double x2 = xmltof(xDangerLine->LastChild("vertex")->ToElement()->Attribute("px"));
 
double y2 = xmltof(xDangerLine->LastChild("vertex")->ToElement()->Attribute("py"));
 
 
DangerLine* dl = new DangerLine();
 
dl->setParameters(fatal_distance,danger_distance,alpha,x_speed,y_speed);
 
dl->SetPoint1(Point(x1,y1));
 
dl->SetPoint2(Point(x2,y2));
 
 
building->AddDangerLine(dl);
 
 
}
 
Log->Write("INFO: \tLoading building file successful!!!\n");
Log->Write("INFO: \tLoading building file successful!!!\n");
//everything went fine
//everything went fine
Loading