private IEnumerator combineRenderMeshesByChunkType(Block.BlockType blockType, int timeToWait = 0) { List <MeshFilter> meshFiltersList = new List <MeshFilter>(); foreach (Block block in blocks) { if (block.GetBlockType() == blockType) { meshFiltersList.Add(block.GetComponent <MeshFilter>()); } } if (meshFiltersList.Count == 0) { yield return(null); } GameObject subChunk = (GameObject)Instantiate(Resources.Load("SubChunk"), transform); MeshFilter newMF = subChunk.GetComponent <MeshFilter>(); MeshRenderer mr = subChunk.GetComponent <MeshRenderer>(); MeshCollider mc = subChunk.GetComponent <MeshCollider>(); mr.material.color = Block.getColorByBlockType(blockType); MeshFilter[] meshFilters = meshFiltersList.ToArray(); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; int i = 0; while (i < meshFilters.Length) { combine[i].mesh = meshFilters[i].sharedMesh; combine[i].transform = meshFilters[i].transform.localToWorldMatrix; i++; } newMF.mesh = new Mesh(); //Debug.Log("La cantidad es " + combine.Length); yield return(new WaitForSecondsRealtime(0.1f * timeToWait)); newMF.mesh.CombineMeshes(combine); mc.sharedMesh = newMF.sharedMesh; if (blockType == Block.BlockType.BLOCK_TYPE_WATER) { float time = ((float)(System.DateTime.Now - date).TotalMilliseconds); Debug.Log("Tiempo de chunk: " + pos + " " + time); PerfomanceReport.addTimeToList(time); } }
// Update is called once per frame void Update() { float horizontal = 0; float vertical = 0; horizontal = Input.GetAxis("Horizontal") * Time.deltaTime * 150.0f; vertical = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f; transform.Rotate(0, horizontal, 0); transform.Translate(0, 0, vertical); if (Input.GetKeyDown(KeyCode.Space)) { transform.Translate(0, 1.5f, 0); } if (Input.GetKeyDown(KeyCode.M)) { Debug.Log("Media: " + PerfomanceReport.getAvg()); } if (Input.GetKeyDown(KeyCode.B)) { Debug.Log("Min: " + PerfomanceReport.getMin()); } if (Input.GetKeyDown(KeyCode.N)) { Debug.Log("Max: " + PerfomanceReport.getMax()); } if (Input.GetKeyDown(KeyCode.V)) { Debug.Log("Total: " + PerfomanceReport.getTotal()); } }