public void AddToMesh(ModularMesh mesh, Material m) { for (int i = 0; i < triangles.Count; i++) { triangles[i].AddToMesh(mesh, m); } }
public static void CreateAllMeshes(ModularMesh mesh) { foreach (KeyValuePair <Street, Tile> kV in streets) { kV.Key.CreateMesh(mesh); } }
public void CreateMeshNew(ModularMesh mesh) { if (leftOutline) { rightOutline = new Polyline( leftOutline.VerticesToParameter(startParameter), new Vertex[1] { leftOutline.VertexAtParameter(startParameter) }, leftOutline.Inset(width).VerticesBetweenParameter(startParameter, endParameter), new Vertex[1] { leftOutline.VertexAtParameter(endParameter) }, leftOutline.VerticesFromParameter(endParameter)); //rightOutline = new Polyline( // leftOutline.VerticesToParameter(startParameter), // leftOutline.Inset(width).VerticesBetweenParameter(startParameter, endParameter), // leftOutline.VerticesFromParameter(endParameter)); laneSurface = new TriangleStrip(leftOutline, rightOutline, mesh, MaterialManager.GetMaterial("diffuseGray")); } else { Debug.Log("LeftOutline missing"); } }
public void AddChildMesh(ModularMesh modularMesh) { if (!childMeshes.Contains(modularMesh)) { childMeshes.Add(modularMesh); } }
public static void CreateAllMeshes(ModularMesh mesh) { foreach (KeyValuePair <Building, Tile> kV in Buildings) { kV.Key.CreateMesh(mesh); } }
public static void CreateAllMeshes(ModularMesh mesh) { foreach (KeyValuePair <Water, Tile> kV in waters) { kV.Key.CreateMesh(mesh); } }
public static void CreateAllMeshes(ModularMesh mesh) { foreach (KeyValuePair <Intersection, Tile> kV in intersectionsTileDict) { kV.Key.CreateMesh(mesh); } }
public static void CreateAllMeshes(ModularMesh mesh) { foreach (KeyValuePair <TrafficSignal, Tile> kV in TrafficSignals) { kV.Key.CreateMesh(mesh); } }
public static void CreateAllMeshes(ModularMesh mesh) { foreach (KeyValuePair <Bridge, Tile> kV in bridges) { kV.Key.CreateMesh(mesh); } }
public void RemoveFromMesh(ModularMesh mesh, Material m) { for (int i = 0; i < triangles.Count; i++) { triangles[i].RemoveFromMesh(mesh, m); } }
public Polygon Split(float amount, ModularMesh mesh) { List <Vertex> newVertices = new List <Vertex>(); float distance; newVertices.Add(vertices[0]); int i; for (i = 1; i < vertices.Count; i++) { distance = Vector2.Distance(vertices[i - 1].Position2D, vertices[i].Position2D); amount -= distance; if (amount <= 0) { } newVertices.Add(vertices[i]); } for (int j = i; j < vertices.Count; j++) { newVertices.Add(vertices[j]); } return(new Polygon(newVertices)); }
public ModularMesh(ModularMesh parentMesh) { this.parentMesh = parentMesh; if (parentMesh != null) { parentMesh.AddChildMesh(this); } }
public TriangleStrip(Polyline poly1, Polyline poly2, ModularMesh mesh, Material material) { for (int i = 0; i < Mathf.Min(poly1.Count, poly2.Count) - 1; i++) { triangles.Add(new Triangle(poly1[i], poly2[i], poly1[i + 1], mesh, material)); triangles.Add(new Triangle(poly1[i + 1], poly2[i], poly2[i + 1], mesh, material)); } }
public void CreateMesh(ModularMesh mesh) { if (leftOutline) { rightOutline = leftOutline.Inset(width); laneSurface = new TriangleStrip(leftOutline, rightOutline, mesh, MaterialManager.GetMaterial("diffuseGray")); } }
public ModularMesh(ModularMesh parentMesh, string name) { this.parentMesh = parentMesh; if (parentMesh != null) { parentMesh.AddChildMesh(this); } this.name = name; }
public void UpdateMesh(ModularMesh mesh) { if (laneSurface != null) { laneSurface.RemoveFromMesh(mesh, MaterialManager.GetMaterial("diffuseGray")); } rightOutline = leftOutline.Inset(width); laneSurface = new TriangleStrip(leftOutline, rightOutline, mesh, MaterialManager.GetMaterial("diffuseGray")); }
public QuadStrip(Polyline poly1, Polyline poly2, ModularMesh mesh, Material material) { for (int i = 0; i < Mathf.Min(poly1.Count, poly2.Count) - 1; i++) { Quad newQuad = new Quad(poly1[i], poly2[i], poly2[i + 1], poly1[i + 1], mesh, material); quads.Add(newQuad); triangles.AddRange(newQuad.Triangles); } }
public void CreateMeshNew(ModularMesh mesh) { if (leftOutline) { rightOutline = new Polyline( leftOutline.VerticesToParameter(startParameter), leftOutline.Inset(width).VerticesBetweenParameter(startParameter, endParameter), leftOutline.VerticesFromParameter(endParameter)); laneSurface = new TriangleStrip(leftOutline, rightOutline, mesh, MaterialManager.GetMaterial("diffuseGray")); } }
public void AddToMesh(ModularMesh mesh, Material m) { if (mesh != null && edges[0].Vertex && edges[1].Vertex && edges[2].Vertex) { mesh.AddTriangle(this, m); meshes.Add(new MeshParticipant(mesh, m)); //meshes.Add(mesh); } //else //Debug.Log("Triangle has null vertices and will not be added to its Mesh"); }
public void CreateMesh(ModularMesh mesh) { if (leftOutline) { rightOutline = leftOutline.Inset(width); laneSurface = new TriangleStrip(leftOutline, rightOutline, mesh, MaterialManager.GetMaterial("diffuseBrown")); } else { Debug.Log("LeftOutline missing!"); } }
public Triangle(Vertex v1, Vertex v2, Vertex v3, ModularMesh mesh, Material material) { edges = new HalfEdge[3]; edges[0] = new HalfEdge(v1, this); edges[1] = new HalfEdge(v2, this); edges[2] = new HalfEdge(v3, this); edges[0].Next = edges[1]; edges[1].Next = edges[2]; edges[2].Next = edges[0]; AddToMesh(mesh, material); }
public void CreateMesh(ModularMesh mesh) { if (leftOutline) { curbedge = leftOutline.Translate(Vector3.up * height); rightOutline = curbedge.Inset(width); curbFace = new TriangleStrip(leftOutline, curbedge, mesh, MaterialManager.GetMaterial("diffuseCheckerboard")); curbSurface = new TriangleStrip(curbedge, rightOutline, mesh, MaterialManager.GetMaterial("diffuseCheckerboard")); } else { Debug.Log("LeftOutline missing"); } }
public PolygonSurface TriangulateByCenterLine(ModularMesh mesh, Material material) { Polygon polygon = new Polygon(); for (int i = 0; i < streetmember.Count; i++) { for (int j = 0; j < streetmember[i].CenterLine.Count - 1; j++) { polygon.Add(streetmember[i].CenterLine[j]); } } polygon.MakeClockwise(); return(polygon.Triangulate(mesh, material)); }
public void UpdateMesh(ModularMesh mesh) { centerLine = pathway.TrimEnd2D(toOffset).TrimFront2D(fromOffset); if (carriageways[0]) { carriageways[0].LeftOutline = centerLine; carriageways[0].UpdateMesh(mesh); } if (carriageways[1]) { carriageways[1].LeftOutline = centerLine.Reversed(); carriageways[1].UpdateMesh(mesh); } }
public void UpdateMesh(ModularMesh mesh) { if (streetMember.Count > 0) { streetMember[0].LeftOutline = leftOutline; } for (int i = 0; i < streetMember.Count - 1; i++) { streetMember[i].UpdateMesh(mesh); streetMember[i + 1].LeftOutline = streetMember[i].RightOutline; } if (streetMember.Count > 0) { streetMember[streetMember.Count - 1].UpdateMesh(mesh); } }
public void CreateMesh(ModularMesh mesh) { //centerLine = pathway; centerLine = pathway.TrimEnd2D(10f).TrimFront2D(10f); if (carriageways[0]) { carriageways[0].LeftOutline = centerLine; carriageways[0].CreateMesh(mesh); } if (carriageways[1]) { carriageways[1].LeftOutline = centerLine.Reversed(); carriageways[1].CreateMesh(mesh); } }
public void UpdateMesh(ModularMesh mesh) { if (curbFace != null) { curbFace.RemoveFromMesh(mesh, MaterialManager.GetMaterial("diffuseCheckerboard")); } if (curbSurface != null) { curbSurface.RemoveFromMesh(mesh, MaterialManager.GetMaterial("diffuseCheckerboard")); } curbedge = leftOutline.Translate(Vector3.up * height); rightOutline = curbedge.Inset(width); curbFace = new TriangleStrip(leftOutline, curbedge, mesh, MaterialManager.GetMaterial("diffuseCheckerboard")); curbSurface = new TriangleStrip(curbedge, rightOutline, mesh, MaterialManager.GetMaterial("diffuseCheckerboard")); }
public void CreateMesh(ModularMesh mesh) { Polyline leftTopEdge; Polyline leftBottomEdge; Polyline rightTopEdge; Polyline rightBottomEdge; leftTopEdge = street.LeftOutline.Inset(-2f); leftBottomEdge = leftTopEdge.Translate(Vector3.down * 2f); rightTopEdge = street.RightOutline.Inset(2f); rightBottomEdge = rightTopEdge.Translate(Vector3.down * 2f); new QuadStrip(leftTopEdge, street.LeftOutline, mesh, MaterialManager.GetMaterial("diffuseGray")); new QuadStrip(leftBottomEdge, leftTopEdge, mesh, MaterialManager.GetMaterial("diffuseGray")); new QuadStrip(street.RightOutline, rightTopEdge, mesh, MaterialManager.GetMaterial("diffuseGray")); new QuadStrip(rightTopEdge, rightBottomEdge, mesh, MaterialManager.GetMaterial("diffuseGray")); new QuadStrip(rightBottomEdge, leftBottomEdge, mesh, MaterialManager.GetMaterial("diffuseGray")); }
public River(OSMRelation rel, OSMData osm, ModularMesh mesh) { Debug.Log("RIVERBANKS"); //layout = new Polyline(); //OSMNode node; ////Discard last waynode if its the same as first //if (way.WayNodes[0] == way.WayNodes[way.WayNodes.Count - 1]) //{ // for (int i = 0; i < way.WayNodes.Count - 1; i++) // { // if (nodes.TryGetValue(way.WayNodes[i], out node)) // { // Vector3 pos = new Vector3(node.X, SRTMHeightProvider.GetInterpolatedHeight(node.Latitude, node.Longitude), node.Z); // layout.Add(new Vertex(pos, mesh)); // } // } //} //else //{ // for (int i = 0; i < way.WayNodes.Count; i++) // { // if (nodes.TryGetValue(way.WayNodes[i], out node)) // { // Vector3 pos = new Vector3(node.X, SRTMHeightProvider.GetInterpolatedHeight(node.Latitude, node.Longitude), node.Z); // layout.Add(new Vertex(pos, mesh)); // } // } //} ////layout.MakeClockwise(); //leveledLayout = layout.LevelUp(null); //leftBorder = leveledLayout.Inset(-50f, mesh); //rightBorder = leveledLayout.Inset(50f, mesh); //area = new TriangleStrip(leftBorder, rightBorder, mesh, MaterialManager.GetMaterial("diffuseBlue")); }
public void CreateMesh(ModularMesh mesh) { Vertex a = new Vertex(position + Vector3.forward * 0.1f + Vector3.left * 0.1f); Vertex b = new Vertex(position + Vector3.forward * 0.1f - Vector3.left * 0.1f); Vertex c = new Vertex(position - Vector3.forward * 0.1f - Vector3.left * 0.1f); Vertex d = new Vertex(position - Vector3.forward * 0.1f + Vector3.left * 0.1f); layout = new Polygon(d, c, b, a); layout = layout.LevelDown(); topLayout = layout.Translate(Vector3.up * 2f); bottomSignalCase = topLayout.Inset(0.3f); topSignalCase = bottomSignalCase.Translate(Vector3.up * 0.9f); QuadStrip qS = new QuadStrip(layout, topLayout, mesh, MaterialManager.GetMaterial("diffuseDarkGrey")); QuadStrip qS2 = new QuadStrip(topLayout, bottomSignalCase, mesh, MaterialManager.GetMaterial("diffuseDarkGrey")); QuadStrip qS3 = new QuadStrip(bottomSignalCase, topSignalCase, mesh, MaterialManager.GetMaterial("diffuseDarkGrey")); topSignalCase.Triangulate(mesh, MaterialManager.GetMaterial("diffuseDarkGrey")); }