public void UpdateMesh() { var sw = Stopwatch.StartNew(); var mesh = MeshFilter.mesh = FlatMeshGenerator.GenerateFlatMesh(Size, scale); mesh.RecalculateNormals(); sw.Stop(); var elapsedMs = (double)sw.ElapsedTicks / Stopwatch.Frequency * 1000D; UnityEngine.Debug.Log("UpdateMesh: " + elapsedMs + "ms"); }
private void SpawnChunk(int size, int xPos, int yPos) { var chunk = new GameObject { name = string.Format("Terrain chunk [{0}, {1}]", xPos, yPos) }; chunk.transform.parent = transform; var meshFilter = chunk.AddComponent <MeshFilter>(); meshFilter.mesh = FlatMeshGenerator.GenerateFlatMesh(size, scale); var renderer = chunk.AddComponent <MeshRenderer>(); renderer.material = terrainMaterial; }
////////////////////////////////////////////////////////////////////////////// // // //Unity Functions // // // ////////////////////////////////////////////////////////////////////////////// void Start() { Mesh origianlMesh = null; //Get original mesh from MeshFilter or SkinnedMeshRenderer MeshFilter meshFilter = GetComponent <MeshFilter>(); SkinnedMeshRenderer skinnedMeshRenderer = GetComponent <SkinnedMeshRenderer>(); if (meshFilter != null) { origianlMesh = meshFilter.sharedMesh; } if (origianlMesh == null && skinnedMeshRenderer != null) { origianlMesh = skinnedMeshRenderer.sharedMesh; } //Oops, no mesh found if (origianlMesh == null) { return; } //Will contain bake results Mesh newMesh = null; //Will contain baking reports, will help if something goes wrong FlatMeshGenerator.CONVERTION_INFO[] convertionInfo; //Same as above but with more detail info string[] convertionInfoString; //Generating flat mesh newMesh = FlatMeshGenerator.GenerateFlatMesh(GetComponent <Renderer>(), out convertionInfo, out convertionInfoString, flatOptions); //Check reports if (convertionInfoString != null) { for (int i = 0; i < convertionInfoString.Length; i++) { Debug.Log(convertionInfoString[i]); } } //Successful conversation if (newMesh != null) { //Replace old mesh with new one if (meshFilter != null) { meshFilter.sharedMesh = newMesh; } else if (skinnedMeshRenderer != null) { skinnedMeshRenderer.sharedMesh = newMesh; } //Replace material to make baked data visible GetComponent <Renderer>().sharedMaterials = new Material[] { vertexColorMaterial }; } }