Example #1
0
 // Update is called once per frame
 void Update()
 {
     for (int i = 0; i < waveVerts.Length; i++)
     {
         vert_x       = (double)waveVerts[i].x;
         vert_y       = (double)waveVerts[i].y;
         vert_z       = (double)waveVerts[i].z;
         oceanMap     = oceanAmpl * (float)oceanNoise.Noise(vert_x / oceanSpread + wave, vert_y / oceanSpread, vert_z / oceanSpread) + 1.0f;
         waveVerts[i] = oceanVerts[i] * oceanMap;
     }
     oceanMesh.vertices = waveVerts;
     oceanMesh.RecalculateNormals();
     oceanMesh.Optimize();
     wave += current;
 }
Example #2
0
        void GenerateTerrain()
        {
            // Modulate terrain
            for (int i = 0; i < terrainVerts.Length; i++)
            {
                vert_x = (double)terrainVerts[i].x;
                vert_y = (double)terrainVerts[i].y;
                vert_z = (double)terrainVerts[i].z;
                // Perlin Noise for terrain elevation
                terrainMap       = Mathf.Clamp(terrainAmpl * (float)planetNoise.Noise(vert_x / terrainSpread, vert_y / terrainSpread, vert_z / terrainSpread) + 1.0f, 0.85f, 1.0f);
                terrainVerts[i] *= terrainMap;
            }

            // Recalculate Mesh
            terrainMesh.vertices = terrainVerts;
            terrainMesh.RecalculateNormals();
            terrainMesh.Optimize();

            gameObject.GetComponent <MeshCollider> ().sharedMesh = null;
            gameObject.GetComponent <MeshCollider> ().sharedMesh = gameObject.GetComponent <MeshFilter>().mesh;
        }