void Update() { if (filter.mesh != null) { if (filter.mesh.name != meshName) { mesh = filter.mesh; graph = new Graph(mesh); mesh = graph.BuildMesh(true); filter.mesh = graph.BuildMesh(false); filter.mesh.name = meshName; } Vector3[] mVerts = mesh.vertices; Vector3[] mNorms = mesh.normals; for (int v = 0; v < mVerts.Length; v ++) { mVerts[v] = VertexTransform(mVerts[v], mNorms[v]); } filter.mesh.vertices = mVerts; } else { mesh = null; graph = null; } }
void Start() { generator = GetComponent<TerrainGenerator>(); filter = GetComponent<MeshFilter>(); if (terrainMesh != null) { graph = new Graph(terrainMesh); terrain = generator.GenerateTerrain(graph); if (water != null) { water.sharedMesh = graph.BuildMesh(false, (vertex) => { return vertex.position + vertex.normal * waterGrow; } ); } GenerateMesh(); } }