public static double Get(eLaneWidthMode input) { switch (input) { case eLaneWidthMode.nar: return(nar); default: return(std); } }
public static (splineData, string) SwitchCarAI(eLaneWidthMode splineLaneWidthMode, double offset, int dir, splineData data, string out_name) { if (dir >= 0) { data.paths.Add(new aiPath(0, offset, Profiles.h_lane, eLanePathW.Get(splineLaneWidthMode), dir)); out_name += (dir); } else { out_name += "X"; } return(data, out_name); }
public static (splineData, string) SwitchLane(object lane, object laneMode, eLaneWidthMode splineLaneWidthMode, double offset, bool mirror, splineData data, string in_name, bool in_delimit = true) { string temp_name = ""; if (in_delimit) { temp_name += "-"; } temp_name += "L"; string tex = lane.ToString(); if (laneMode.ToString() == "Worn") { tex += " Worn"; } data.lanes.Add(new sectData(Profiles.data_lane[(int)splineLaneWidthMode], tex, offset, mirror)); double chevron_offset = offset; if (mirror) { chevron_offset -= eLaneW.Get(splineLaneWidthMode); } if (laneMode.ToString() == "Chevrons") { data.lines.Add(new sectData(Profiles.data_lane_chevrons[(int)splineLaneWidthMode], chevron_offset, false)); } if (laneMode.ToString() == "Chevrons reversed") { data.lines.Add(new sectData(Profiles.data_lane_chevrons_inv[(int)splineLaneWidthMode], chevron_offset, false)); } if (laneMode.ToString() == "Double Chevrons") { data.lines.Add(new sectData(Profiles.data_lane_chevrons_both[(int)splineLaneWidthMode], chevron_offset, false)); } if (laneMode.ToString() == "Double Chevrons reversed") { data.lines.Add(new sectData(Profiles.data_lane_chevrons_both_inv[(int)splineLaneWidthMode], chevron_offset, false)); } temp_name += SwitchSurface(lane.ToString(), laneMode.ToString()); return(data, in_name + temp_name); }
public static (splineData, string, double) SwitchEdge(object profile, object shoulder, object adjacentLane, int shoulderWidthMode, eLaneWidthMode laneWidthMode, int kerb, string pavement, ePavWidthMode pavWidthMode, double offset, bool mirror, splineData data, string in_name, bool hasPav, bool hasKerb, bool delimit = true) { double splinePavOffset = 0; bool shoulderGetAdj = false; if (shoulderWidthMode == (int)eShoulderWidthMode.lan) { shoulderWidthMode += (int)laneWidthMode; } string temp_name = ""; if (delimit) { temp_name += "-"; } int mf = 1; if (mirror) { mf = -1; } double m_w_edge = eShoulderW.Get(shoulderWidthMode) * mf; double m_w_kerb = Profiles.w_kerb * mf; double m_w_gras = Profiles.w_gras * mf; double m_w_pav = ePavW.Get(pavWidthMode) * mf; double m_o_ped = m_w_pav / 2; bool no_prof = false; string shoulderTex = shoulder.ToString(); if (shoulderTex == "Get from adjacent lane") { shoulderTex = adjacentLane.ToString(); } shoulderGetAdj = true; string pavementTex = pavement.ToString(); if (!mirror) { temp_name += "S"; if (!shoulderGetAdj) { temp_name += SwitchSurface(shoulderTex); } temp_name += SwitchShoulderWidthMode(shoulderWidthMode); temp_name += "-"; if (hasKerb) { temp_name += "K"; temp_name += SwitchKerb(kerb); temp_name += "-"; } if (hasPav) { temp_name += "P"; temp_name += SwitchSurface(pavementTex); temp_name += "-"; } } switch (profile) { case "Hard edge": data.edges.Add(new sectData(Profiles.data_edge[shoulderWidthMode], shoulderTex, offset, mirror)); temp_name += "VH"; break; case "Soft edge": //data.edges.Add(new sectData(Profiles.data_verge[shoulderWidthMode], offset, mirror)); data.edges.Add(new sectData(Profiles.data_edge[shoulderWidthMode], shoulderTex, offset, mirror)); data.edges.Add(new sectData(Profiles.data_verge, offset + m_w_edge, mirror)); temp_name += "VS"; break; case "Kerb": data.edges.Add(new sectData(Profiles.data_edge[shoulderWidthMode], shoulderTex, offset, mirror)); data.edges.Add(new sectData(Profiles.data_kerbs_double[kerb], offset + m_w_edge, mirror)); temp_name += "VK"; break; case "Kerb with grass slope": data.edges.Add(new sectData(Profiles.data_edge[shoulderWidthMode], shoulderTex, offset, mirror)); data.edges.Add(new sectData(Profiles.data_kerbs_single[kerb], offset + m_w_edge, mirror)); data.edges.Add(new sectData(Profiles.data_grass_slope, offset + m_w_edge + m_w_kerb, mirror)); temp_name += "VKG"; break; case "Pavement": data.edges.Add(new sectData(Profiles.data_edge[shoulderWidthMode], shoulderTex, offset, mirror)); data.edges.Add(new sectData(Profiles.data_kerbs_single[kerb], offset + m_w_edge, mirror)); data.edges.Add(new sectData(Profiles.data_pav[(int)pavWidthMode], pavementTex, offset + m_w_edge + m_w_kerb, mirror)); splinePavOffset = offset + m_w_edge + m_w_kerb + m_o_ped; temp_name += "VP"; break; case "Pavement with grass slope": data.edges.Add(new sectData(Profiles.data_edge[shoulderWidthMode], shoulderTex, offset, mirror)); data.edges.Add(new sectData(Profiles.data_kerbs_single[kerb], offset + m_w_edge, mirror)); data.edges.Add(new sectData(Profiles.data_pav[(int)pavWidthMode], pavementTex, offset + m_w_edge + m_w_kerb, mirror)); data.edges.Add(new sectData(Profiles.data_grass_slope, offset + m_w_edge + m_w_kerb + m_w_pav, mirror)); splinePavOffset = offset + m_w_edge + m_w_kerb + m_o_ped; temp_name += "VPG"; break; case "Offset pavement": data.edges.Add(new sectData(Profiles.data_edge[shoulderWidthMode], shoulderTex, offset, mirror)); data.edges.Add(new sectData(Profiles.data_kerbs_single[kerb], offset + m_w_edge, mirror)); data.edges.Add(new sectData(Profiles.data_grass_pavof, offset + m_w_edge + m_w_kerb, mirror)); data.edges.Add(new sectData(Profiles.data_pav[(int)pavWidthMode], pavementTex, offset + m_w_edge + m_w_kerb + m_w_gras, mirror)); splinePavOffset = offset + m_w_edge + m_w_kerb + m_w_gras + m_o_ped; temp_name += "VOP"; break; case "Offset pavement with grass slope": data.edges.Add(new sectData(Profiles.data_edge[shoulderWidthMode], shoulderTex, offset, mirror)); data.edges.Add(new sectData(Profiles.data_kerbs_single[kerb], offset + m_w_edge, mirror)); data.edges.Add(new sectData(Profiles.data_grass_pavof, offset + m_w_edge + m_w_kerb, mirror)); data.edges.Add(new sectData(Profiles.data_pav[(int)pavWidthMode], pavementTex, offset + m_w_edge + m_w_kerb + m_w_gras, mirror)); data.edges.Add(new sectData(Profiles.data_grass_slope, offset + m_w_edge + m_w_kerb + m_w_gras + m_w_pav, mirror)); splinePavOffset = offset + m_w_edge + m_w_kerb + m_w_gras + m_o_ped; temp_name += "VOPG"; break; default: temp_name = ""; no_prof = true; break; } if (mirror && !no_prof) { if (hasPav) { temp_name += "-"; temp_name += "P"; temp_name += SwitchSurface(pavementTex); temp_name += SwitchPavementWidthMode(pavWidthMode); } if (hasKerb) { temp_name += "-"; temp_name += "K"; temp_name += SwitchKerb(kerb); } temp_name += "-"; temp_name += "S"; if (!shoulderGetAdj) { temp_name += SwitchSurface(shoulderTex); } temp_name += SwitchShoulderWidthMode(shoulderWidthMode); } //CheckEnablePavOptions(); return(data, in_name + temp_name, splinePavOffset); }