Ejemplo n.º 1
0
    /// <summary>
    /// Acutaliza la malla del game object de este chunk en función del LOD inficado como parametro
    /// </summary>
    /// <param name="lod"></param>
    private void UpdateMeshOfGameObject(int lod)
    {
        //obtengo la malla de ese LOD
        MeshWithLOD lodMesh = _meshLOD_Array[lod];

        if (lodMesh.ThereIsDataOfMeshStored)//Si ya tiene la malla almacenada se actualiza en el objeto de unity
        {
            _indexPreviousLOD = lod;
            _meshFilter.mesh  = lodMesh.DataOfMesh;
        }
        else if (!lodMesh.DataOfMeshHasBeenSolicit) //Si no tiene la malla almacenada se solitita la malla (Y tampoco se ha solicitado anteriormente)
        {
            lodMesh.SolicitDataOfMeshInExternalThread(_heightMapAndColorArray);
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Acutaliza la malla del collider del game object de este chunk
    /// </summary>
    private void UpdateColliderOfGameObject()
    {
        if (_meshForCollider.ThereIsDataOfMeshStored) //Si ya tiene la malla almacenada se usa esta malla como colisionador
        {
            _meshCollider.sharedMesh = _meshForCollider.DataOfMesh;

            //Si es la primera vez que se ha usado como colisionador (es decir que es la primera vez que esta a mayor resolución el chunk) ---> se añaden recursos aletatorios
            if (!_chunkHasResource)
            {
                _chunkHasResource = true;
                _generator.AñadirRecursos(_gameObject.transform.position, _heightMapAndColorArray);
            }
        }
        else if (!_meshForCollider.DataOfMeshHasBeenSolicit) //Si no tiene la malla almacenada se solitita la malla (Y tampoco se ha solicitado anteriormente)
        {
            _meshForCollider.SolicitDataOfMeshInExternalThread(_heightMapAndColorArray);
        }
    }