Exemple #1
0
 public void AddToMesh(ModularMesh mesh, Material m)
 {
     for (int i = 0; i < triangles.Count; i++)
     {
         triangles[i].AddToMesh(mesh, m);
     }
 }
Exemple #2
0
 public static void CreateAllMeshes(ModularMesh mesh)
 {
     foreach (KeyValuePair <Street, Tile> kV in streets)
     {
         kV.Key.CreateMesh(mesh);
     }
 }
Exemple #3
0
 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");
     }
 }
Exemple #4
0
 public void AddChildMesh(ModularMesh modularMesh)
 {
     if (!childMeshes.Contains(modularMesh))
     {
         childMeshes.Add(modularMesh);
     }
 }
Exemple #5
0
 public static void CreateAllMeshes(ModularMesh mesh)
 {
     foreach (KeyValuePair <Building, Tile> kV in Buildings)
     {
         kV.Key.CreateMesh(mesh);
     }
 }
Exemple #6
0
 public static void CreateAllMeshes(ModularMesh mesh)
 {
     foreach (KeyValuePair <Water, Tile> kV in waters)
     {
         kV.Key.CreateMesh(mesh);
     }
 }
Exemple #7
0
 public static void CreateAllMeshes(ModularMesh mesh)
 {
     foreach (KeyValuePair <Intersection, Tile> kV in intersectionsTileDict)
     {
         kV.Key.CreateMesh(mesh);
     }
 }
Exemple #8
0
 public static void CreateAllMeshes(ModularMesh mesh)
 {
     foreach (KeyValuePair <TrafficSignal, Tile> kV in TrafficSignals)
     {
         kV.Key.CreateMesh(mesh);
     }
 }
Exemple #9
0
 public static void CreateAllMeshes(ModularMesh mesh)
 {
     foreach (KeyValuePair <Bridge, Tile> kV in bridges)
     {
         kV.Key.CreateMesh(mesh);
     }
 }
Exemple #10
0
 public void RemoveFromMesh(ModularMesh mesh, Material m)
 {
     for (int i = 0; i < triangles.Count; i++)
     {
         triangles[i].RemoveFromMesh(mesh, m);
     }
 }
Exemple #11
0
    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));
    }
Exemple #12
0
 public ModularMesh(ModularMesh parentMesh)
 {
     this.parentMesh = parentMesh;
     if (parentMesh != null)
     {
         parentMesh.AddChildMesh(this);
     }
 }
Exemple #13
0
 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));
     }
 }
Exemple #14
0
 public void CreateMesh(ModularMesh mesh)
 {
     if (leftOutline)
     {
         rightOutline = leftOutline.Inset(width);
         laneSurface  = new TriangleStrip(leftOutline, rightOutline, mesh, MaterialManager.GetMaterial("diffuseGray"));
     }
 }
Exemple #15
0
 public ModularMesh(ModularMesh parentMesh, string name)
 {
     this.parentMesh = parentMesh;
     if (parentMesh != null)
     {
         parentMesh.AddChildMesh(this);
     }
     this.name = name;
 }
Exemple #16
0
    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"));
    }
Exemple #17
0
    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);
        }
    }
Exemple #18
0
 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"));
     }
 }
Exemple #19
0
 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");
 }
Exemple #20
0
 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!");
     }
 }
Exemple #21
0
    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);
    }
Exemple #22
0
    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");
        }
    }
Exemple #23
0
    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));
    }
Exemple #24
0
    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);
        }
    }
Exemple #25
0
 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);
     }
 }
Exemple #26
0
    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);
        }
    }
Exemple #27
0
    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"));
    }
Exemple #28
0
    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"));
    }
Exemple #29
0
    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"));
    }
Exemple #30
0
    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"));
    }