Now everything depends on s and not on sOffset

This commit is contained in:
Marc Garcia Puig 2019-03-29 18:03:25 +01:00 committed by nsubiron
parent 97099d8b9b
commit 9f5194dace
2 changed files with 54 additions and 53 deletions

View File

@ -27,40 +27,40 @@ namespace parser {
// Lane Width
for (pugi::xml_node lane_width_node : lane_node.children("width")) {
double s_offset = lane_width_node.attribute("sOffset").as_double();
double a = lane_width_node.attribute("a").as_double();
double b = lane_width_node.attribute("b").as_double();
double c = lane_width_node.attribute("c").as_double();
double d = lane_width_node.attribute("d").as_double();
const double s_offset = lane_width_node.attribute("sOffset").as_double();
const double a = lane_width_node.attribute("a").as_double();
const double b = lane_width_node.attribute("b").as_double();
const double c = lane_width_node.attribute("c").as_double();
const double d = lane_width_node.attribute("d").as_double();
// Call Map builder create Lane Width function
map_builder.CreateLaneWidth(lane, s_offset, a, b, c, d);
map_builder.CreateLaneWidth(lane, s_offset + s, a, b, c, d);
}
// Lane Border
for (pugi::xml_node lane_border_node : lane_node.children("border")) {
double s_offset = lane_border_node.attribute("sOffset").as_double();
double a = lane_border_node.attribute("a").as_double();
double b = lane_border_node.attribute("b").as_double();
double c = lane_border_node.attribute("c").as_double();
double d = lane_border_node.attribute("d").as_double();
const double s_offset = lane_border_node.attribute("sOffset").as_double();
const double a = lane_border_node.attribute("a").as_double();
const double b = lane_border_node.attribute("b").as_double();
const double c = lane_border_node.attribute("c").as_double();
const double d = lane_border_node.attribute("d").as_double();
// Call Map builder create Lane Border function
map_builder.CreateLaneBorder(lane, s_offset, a, b, c, d);
map_builder.CreateLaneBorder(lane, s_offset + s, a, b, c, d);
}
// Lane Road Mark
int road_mark_id = 0;
for (pugi::xml_node lane_road_mark : lane_node.children("roadMark")) {
double s_offset = lane_road_mark.attribute("sOffset").as_double();
std::string type = lane_road_mark.attribute("type").value();
std::string weight = lane_road_mark.attribute("weight").value();
std::string color = lane_road_mark.attribute("color").value();
std::string material = lane_road_mark.attribute("material").value();
double width = lane_road_mark.attribute("width").as_double();
std::string lane_change = lane_road_mark.attribute("laneChange").value();
double height = lane_road_mark.attribute("height").as_double();
const double s_offset = lane_road_mark.attribute("sOffset").as_double();
const std::string type = lane_road_mark.attribute("type").value();
const std::string weight = lane_road_mark.attribute("weight").value();
const std::string color = lane_road_mark.attribute("color").value();
const std::string material = lane_road_mark.attribute("material").value();
const double width = lane_road_mark.attribute("width").as_double();
const std::string lane_change = lane_road_mark.attribute("laneChange").value();
const double height = lane_road_mark.attribute("height").as_double();
// Call map builder for LaneRoadMarkType
@ -76,7 +76,7 @@ namespace parser {
map_builder.CreateRoadMark(
lane,
road_mark_id,
s_offset,
s_offset + s,
type,
weight,
color,
@ -89,12 +89,12 @@ namespace parser {
for (pugi::xml_node road_mark_type_line_node : road_mark_type.children("line")) {
double length = road_mark_type_line_node.attribute("length").as_double();
double space = road_mark_type_line_node.attribute("space").as_double();
double t = road_mark_type_line_node.attribute("tOffset").as_double();
double s_offset = road_mark_type_line_node.attribute("sOffset").as_double();
std::string rule = road_mark_type_line_node.attribute("rule").value();
double width = road_mark_type_line_node.attribute("width").as_double();
const double length = road_mark_type_line_node.attribute("length").as_double();
const double space = road_mark_type_line_node.attribute("space").as_double();
const double t = road_mark_type_line_node.attribute("tOffset").as_double();
const double s_offset = road_mark_type_line_node.attribute("sOffset").as_double();
const std::string rule = road_mark_type_line_node.attribute("rule").value();
const double width = road_mark_type_line_node.attribute("width").as_double();
// Call map builder for LaneRoadMarkType LaneRoadMarkTypeLine
map_builder.CreateRoadMarkTypeLine(
@ -103,7 +103,7 @@ namespace parser {
length,
space,
t,
s_offset,
s_offset + s,
rule,
width);
}
@ -113,63 +113,63 @@ namespace parser {
// Lane Material
for (pugi::xml_node lane_material_node : lane_node.children("material")) {
double s_offset = lane_material_node.attribute("sOffset").as_double();
std::string surface = lane_material_node.attribute("surface").value();
double friction = lane_material_node.attribute("friction").as_double();
double roughness = lane_material_node.attribute("roughness").as_double();
const double s_offset = lane_material_node.attribute("sOffset").as_double();
const std::string surface = lane_material_node.attribute("surface").value();
const double friction = lane_material_node.attribute("friction").as_double();
const double roughness = lane_material_node.attribute("roughness").as_double();
// Create map builder for Lane Material
map_builder.CreateLaneMaterial(lane, s_offset, surface, friction, roughness);
map_builder.CreateLaneMaterial(lane, s_offset + s, surface, friction, roughness);
}
// Lane Visibility
for (pugi::xml_node lane_visibility_node : lane_node.children("visibility")) {
double s_offset = lane_visibility_node.attribute("sOffset").as_double();
double forward = lane_visibility_node.attribute("forward").as_double();
double back = lane_visibility_node.attribute("back").as_double();
double left = lane_visibility_node.attribute("left").as_double();
double right = lane_visibility_node.attribute("right").as_double();
const double s_offset = lane_visibility_node.attribute("sOffset").as_double();
const double forward = lane_visibility_node.attribute("forward").as_double();
const double back = lane_visibility_node.attribute("back").as_double();
const double left = lane_visibility_node.attribute("left").as_double();
const double right = lane_visibility_node.attribute("right").as_double();
// Create map builder for Lane Visibility
map_builder.CreateLaneVisibility(lane, s_offset, forward, back, left, right);
map_builder.CreateLaneVisibility(lane, s_offset + s, forward, back, left, right);
}
// Lane Speed
for (pugi::xml_node lane_speed_node : lane_node.children("speed")) {
double s_offset = lane_speed_node.attribute("sOffset").as_double();
double max = lane_speed_node.attribute("max").as_double();
const double s_offset = lane_speed_node.attribute("sOffset").as_double();
const double max = lane_speed_node.attribute("max").as_double();
std::string unit = lane_speed_node.attribute("unit").value();
// Create map builder for Lane Speed
map_builder.CreateLaneSpeed(lane, s_offset, max, unit);
map_builder.CreateLaneSpeed(lane, s_offset + s, max, unit);
}
// Lane Access
for (pugi::xml_node lane_access_node : lane_node.children("access")) {
double s_offset = lane_access_node.attribute("sOffset").as_double();
std::string restriction = lane_access_node.attribute("restriction").value();
const double s_offset = lane_access_node.attribute("sOffset").as_double();
const std::string restriction = lane_access_node.attribute("restriction").value();
// Create map builder for Lane Access
map_builder.CreateLaneAccess(lane, s_offset, restriction);
map_builder.CreateLaneAccess(lane, s_offset + s, restriction);
}
// Lane Height
for (pugi::xml_node lane_height_node : lane_node.children("height")) {
double s_offset = lane_height_node.attribute("sOffset").as_double();
double inner = lane_height_node.attribute("inner").as_double();
double outer = lane_height_node.attribute("outer").as_double();
const double s_offset = lane_height_node.attribute("sOffset").as_double();
const double inner = lane_height_node.attribute("inner").as_double();
const double outer = lane_height_node.attribute("outer").as_double();
// Create map builder for Lane Height
map_builder.CreateLaneHeight(lane, s_offset, inner, outer);
map_builder.CreateLaneHeight(lane, s_offset + s, inner, outer);
}
// Lane Rule
for (pugi::xml_node lane_rule_node : lane_node.children("rule")) {
double s_offset = lane_rule_node.attribute("sOffset").as_double();
std::string value = lane_rule_node.attribute("value").value();
const double s_offset = lane_rule_node.attribute("sOffset").as_double();
const std::string value = lane_rule_node.attribute("value").value();
// Create map builder for Lane Height
map_builder.CreateLaneRule(lane, s_offset, value);
map_builder.CreateLaneRule(lane, s_offset + s, value);
}
}

View File

@ -77,7 +77,7 @@ namespace road {
template <typename T>
const T *GetInfo (const double s) const {
if (_lane_section != nullptr) {
return _info.GetInfo<T>(s - GetDistance());
return _info.GetInfo<T>(s);
}
return nullptr;
@ -118,6 +118,7 @@ namespace road {
bool _level;
LaneId _successor;
LaneId _predecessor;
std::vector<Lane *> _next_lanes;