Exemple #1
0
    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);
        }
    }
Exemple #2
0
    // 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());
        }
    }