Example #1
0
    public void GenerateRoadMesh(List <Vector3> evenPoints, string name, bool closedLoop)
    {
        //var roadInfo = GenerateTangentPointsFromPath(evenPoints, extrude, edgeWidth, thickness);

        if (name == "bottom")
        {
            firstRoad = evenPoints;
        }
        else if (name == "right")
        {
            secondRoad = evenPoints;
        }

        //Mesh mesh = MeshMaker.RoadMeshAlongPath(roadInfo.roadVerticies, name, closedLoop);

        //Make the road template... just 2 points on either side of the center point
        List <TemplatePoint> template = new List <TemplatePoint>();

        template.Add(new TemplatePoint(new Vector2(extrude / 2, 0), 0));
        template.Add(new TemplatePoint(new Vector2(-extrude / 2, 0), 1));

        Mesh mesh = MeshMaker.ExtrudeShapeAlongPath(evenPoints, template, "road", closedLoop, false);

        //GetComponent<MeshFilter>().sharedMesh = mesh;
        //GetComponent<MeshCollider>().sharedMesh = mesh;

        DestroyImmediate(GameObject.Find(name));
        GameObject road = new GameObject(name);

        road.transform.SetParent(transform);
        road.transform.position = transform.position;
        road.AddComponent <MeshFilter>().sharedMesh   = mesh;
        road.AddComponent <MeshCollider>().sharedMesh = mesh;

        MeshRenderer rend = road.AddComponent <MeshRenderer>();

        Material material = (Material)Resources.Load("URP Shaders/Shader Graphs_road", typeof(Material));

        rend.sharedMaterial       = material;
        rend.sharedMaterial.color = Color.white;

        if (drawEdges)
        {
            // DrawInner(roadInfo.innerVerticies, closedLoop);
            // DrawOuter(roadInfo.outerVerticies, closedLoop);
        }
    }