public Pavement(Highway highway, myTerrain terrain, pavementSide _side)
        {
            Pavementid = highway.id;
            side = _side;

            if(side == pavementSide.left)
            {
                rightSideVertexes = new List<Vector3>(highway.leftSideVertexes);
                leftSideVertexes = new List<Vector3>();
                generateOtherSide(highway.leftSidewalkSize, terrain);

                PavementObj = new GameObject("LeftPavement" + Pavementid);
                PavementObj.transform.parent = highway.highwayGameObject.transform;

            }
            if(side == pavementSide.right)
            {
                leftSideVertexes = new List<Vector3>(highway.rightSideVertexes);
                rightSideVertexes = new List<Vector3>();
                generateOtherSide(highway.rightSidewalkSize, terrain);

                PavementObj = new GameObject("RightPavement" + Pavementid);
                PavementObj.transform.parent = highway.highwayGameObject.transform;
            }
        }
Exemple #2
0
        public void updateMesh(Vector3 newVertice, pavementSide side, int verticeIndex)
        {
            //Update Pavement Surface Mesh and Stones Mesh
            MeshFilter SurfaceMeshFilter = PavementObj.transform.Find("PavementSurface").GetComponent <MeshFilter>();
            MeshFilter StoneMeshFilter;

            Vector3[] surfaceMeshV, stoneMeshV;

            surfaceMeshV = SurfaceMeshFilter.mesh.vertices;

            if (side == pavementSide.left)
            {
                StoneMeshFilter = PavementObj.transform.Find("PavementStonesLeft").GetComponent <MeshFilter>();
                stoneMeshV      = StoneMeshFilter.mesh.vertices;
                if (verticeIndex == 0)
                {
                    surfaceMeshV[0] = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                    stoneMeshV[0]   = newVertice + new Vector3(0, extraHeight, 0);
                    stoneMeshV[1]   = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                }
                else
                {
                    surfaceMeshV[surfaceMeshV.Length - 2] = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                    stoneMeshV[stoneMeshV.Length - 2]     = newVertice + new Vector3(0, extraHeight, 0);
                    stoneMeshV[stoneMeshV.Length - 1]     = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                }
            }
            else
            {
                StoneMeshFilter = PavementObj.transform.Find("PavementStonesRight").GetComponent <MeshFilter>();
                stoneMeshV      = StoneMeshFilter.mesh.vertices;
                if (verticeIndex == 1)
                {
                    surfaceMeshV[1] = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                    stoneMeshV[0]   = newVertice + new Vector3(0, extraHeight, 0);
                    stoneMeshV[1]   = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                }
                else
                {
                    surfaceMeshV[surfaceMeshV.Length - 1] = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                    stoneMeshV[stoneMeshV.Length - 2]     = newVertice + new Vector3(0, extraHeight, 0);
                    stoneMeshV[stoneMeshV.Length - 1]     = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                }
            }

            SurfaceMeshFilter.mesh.vertices = surfaceMeshV;
            StoneMeshFilter.mesh.vertices   = stoneMeshV;
            SurfaceMeshFilter.mesh.RecalculateBounds();
            StoneMeshFilter.mesh.RecalculateBounds();
        }
        public void updateMesh(Vector3 newVertice, pavementSide side, int verticeIndex)
        {
            //Update Pavement Surface Mesh and Stones Mesh
            MeshFilter SurfaceMeshFilter = PavementObj.transform.Find("PavementSurface").GetComponent<MeshFilter>();
            MeshFilter StoneMeshFilter;
            Vector3[] surfaceMeshV, stoneMeshV;

            surfaceMeshV = SurfaceMeshFilter.mesh.vertices;

            if(side == pavementSide.left)
            {
                StoneMeshFilter = PavementObj.transform.Find("PavementStonesLeft").GetComponent<MeshFilter>();
                stoneMeshV = StoneMeshFilter.mesh.vertices;
                if(verticeIndex == 0)
                {
                     surfaceMeshV[0] = newVertice + new Vector3(0,extraHeight + stonesHeight,0);
                     stoneMeshV[0] = newVertice + new Vector3(0,extraHeight,0);
                     stoneMeshV[1] = newVertice + new Vector3(0,extraHeight + stonesHeight,0);
                }
                else
                {
                    surfaceMeshV[surfaceMeshV.Length-2] = newVertice + new Vector3(0,extraHeight + stonesHeight,0);
                    stoneMeshV[stoneMeshV.Length-2] = newVertice + new Vector3(0,extraHeight,0);
                    stoneMeshV[stoneMeshV.Length-1] = newVertice + new Vector3(0,extraHeight + stonesHeight,0);
                }
            }
            else
            {
                StoneMeshFilter = PavementObj.transform.Find("PavementStonesRight").GetComponent<MeshFilter>();
                stoneMeshV = StoneMeshFilter.mesh.vertices;
                if (verticeIndex == 1)
                {
                    surfaceMeshV[1] = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                    stoneMeshV[0] = newVertice + new Vector3(0, extraHeight, 0);
                    stoneMeshV[1] = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                }
                else
                {
                    surfaceMeshV[surfaceMeshV.Length - 1] = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                    stoneMeshV[stoneMeshV.Length - 2] = newVertice + new Vector3(0, extraHeight, 0);
                    stoneMeshV[stoneMeshV.Length - 1] = newVertice + new Vector3(0, extraHeight + stonesHeight, 0);
                }
            }

            SurfaceMeshFilter.mesh.vertices = surfaceMeshV;
            StoneMeshFilter.mesh.vertices = stoneMeshV;
            SurfaceMeshFilter.mesh.RecalculateBounds();
            StoneMeshFilter.mesh.RecalculateBounds();
        }
Exemple #4
0
        public Pavement(Highway highway, myTerrain terrain, pavementSide _side)
        {
            Pavementid = highway.id;
            side       = _side;

            if (side == pavementSide.left)
            {
                rightSideVertexes = new List <Vector3>(highway.leftSideVertexes);
                leftSideVertexes  = new List <Vector3>();
                generateOtherSide(highway.leftSidewalkSize, terrain);

                PavementObj = new GameObject("LeftPavement" + Pavementid);
                PavementObj.transform.parent = highway.highwayGameObject.transform;
            }
            if (side == pavementSide.right)
            {
                leftSideVertexes  = new List <Vector3>(highway.rightSideVertexes);
                rightSideVertexes = new List <Vector3>();
                generateOtherSide(highway.rightSidewalkSize, terrain);

                PavementObj = new GameObject("RightPavement" + Pavementid);
                PavementObj.transform.parent = highway.highwayGameObject.transform;
            }
        }