Ejemplo n.º 1
0
    private void Update()
    {
        if (!terrain.IsInViewDistance(this))
        {
            terrain.UnloadChunk(this);
        }

        if (data == null)
        {
            return;
        }

        int LODTarget = terrain.LODTarget(this);

        if (currentLOD != LODTarget && (currentLOD == -1 || Random.value > 0.75))
        {
            currentLOD = LODTarget;
            MeshTextureRenderer renderer = GetComponent <MeshTextureRenderer>();
            renderer.DrawMesh(data.LODMeshData[LODTarget], TextureGenerator.TextureFromColorMap(data.textureData, MapGenerator.chunkSize, MapGenerator.chunkSize));
        }

        if (!hasCollider && terrain.NeedsCollider(this))
        {
            MeshTextureRenderer renderer = GetComponent <MeshTextureRenderer>();
            renderer.DrawCollider(data.LODMeshData[terrain.settings.ColliderLOD]);

            hasCollider = true;
        }
    }