public void highLightRoad(Pair <Curve, float> c_offset) { GameObject highlighter = Instantiate(CurveRendererPrefab, transform); CurveRenderer renderer = highlighter.GetComponent <CurveRenderer>(); Material normalMaterial = Resources.Load <Material>("Materials/Rolling"); renderer.CreateMesh(c_offset.First, 0.3f, normalMaterial, offset: c_offset.Second, z_offset: 0.03f); highLighters.Add(c_offset, highlighter); }
void drawLinear3DObject(Curve curve, Linear3DObject obj) { float margin_0 = obj.margin_0; float margin_1 = obj.margin_1; if (Algebra.isclose(margin_0 + margin_1, curve.length)) { return; } Debug.Assert(margin_0 >= 0 && margin_1 >= 0); /* * if (margin_0 + margin_1 >= curve.length){ * Debug.LogError(margin_0 + " ; " + margin_1 + " >= " + curve.length + " at: " + curve); * } */ if (margin_0 + margin_1 > curve.length) { return; } if (curve.length > 0 && (margin_0 > 0 || margin_1 > 0)) { curve = curve.cut(margin_0 / curve.length, 1f - margin_1 / curve.length); } if (obj.dashInterval == 0f) { GameObject rendins = Instantiate(rend, transform); rendins.transform.parent = this.transform; CurveRenderer decomp = rendins.GetComponent <CurveRenderer>(); decomp.CreateMesh(curve, obj.offset, obj.linearMaterial, obj.crossMaterial, obj.cross_section); } else { Debug.Assert(obj.dashLength > 0f); List <Curve> dashed = curve.segmentation(obj.dashLength + obj.dashInterval); if (!Algebra.isclose(dashed.Last().length, dashLength + dashInterval)) { dashed.RemoveAt(dashed.Count - 1); } foreach (Curve singledash in dashed) { List <Curve> vacant_and_dashed = singledash.split(obj.dashInterval / (obj.dashLength + obj.dashInterval)); if (vacant_and_dashed.Count == 2) { GameObject rendins = Instantiate(rend, transform); rendins.transform.parent = this.transform; CurveRenderer decomp = rendins.GetComponent <CurveRenderer>(); decomp.CreateMesh(vacant_and_dashed[1], obj.offset, obj.linearMaterial, obj.crossMaterial, obj.cross_section); } } } }
public void generate(Polygon polygon, float H, string materialconfig) { GameObject rendins = Instantiate(rend, transform); rendins.transform.parent = this.transform; CurveRenderer decomp = rendins.GetComponent <CurveRenderer>(); switch (materialconfig) { default: decomp.CreateMesh(polygon, H, Resources.Load <Material>("Materials/roadsurface")); break; } }
void drawLinear2DObject(Curve curve, Linear2DObject sep) { float margin_0 = sep.margin_0; float margin_1 = sep.margin_1; if (Algebra.isclose(margin_0 + margin_1, curve.length)) { return; } Debug.Assert(margin_0 + margin_1 < curve.length); if (margin_0 + margin_1 > curve.length) { return; } if (curve.length > 0 && (margin_0 > 0 || margin_1 > 0)) { curve = curve.cut(margin_0 / curve.length, 1f - margin_1 / curve.length); } if (!sep.dashed) { GameObject rendins = Instantiate(rend, transform); CurveRenderer decomp = rendins.GetComponent <CurveRenderer> (); decomp.CreateMesh(curve, sep.width, sep.material, offset: sep.offset, z_offset: 0.02f); } else { List <Curve> dashed = curve.segmentation(dashLength + dashInterval); if (!Algebra.isclose(dashed.Last().length, dashLength + dashInterval)) { dashed.RemoveAt(dashed.Count - 1); } foreach (Curve singledash in dashed) { List <Curve> vacant_and_dashed = singledash.split(dashInterval / (dashLength + dashInterval)); if (vacant_and_dashed.Count == 2) { GameObject rendins = Instantiate(rend, transform); CurveRenderer decomp = rendins.GetComponent <CurveRenderer> (); decomp.CreateMesh(vacant_and_dashed [1], sep.width, sep.material, offset: sep.offset, z_offset: 0.02f); } } } }