예제 #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;
        }
    }
예제 #2
0
    public void EditorRender()
    {
        MapData  data         = GenerateMapData(Vector2.zero, editorNormalMode);
        MeshData falloff_mesh = MeshGenerator.GenerateTerrainMesh(fallOffMap, settings.lod, settings.heightFactor, AnimationCurve.Linear(0, 0, 1, 1));
        MeshData plane        = MeshGenerator.GeneratePlaneMesh(chunkSize, chunkSize);

        switch (editorMode)
        {
        case EditorMode.COLORED:
            editorRenderer.DrawMesh(data.LODMeshData[settings.lod], TextureGenerator.TextureFromColorMap(data.textureData, chunkSize, chunkSize));
            editorRenderer.DrawCollider(data.LODMeshData[settings.lod]);
            break;

        case EditorMode.HEIGHTMAP:
            editorRenderer.DrawMesh(data.LODMeshData[settings.lod], TextureGenerator.TextureFromGrayscaleMap(data.map));
            editorRenderer.DrawCollider(data.LODMeshData[settings.lod]);
            break;

        case EditorMode.FALLOFF:
            editorRenderer.DrawMesh(falloff_mesh, TextureGenerator.TextureFromGrayscaleMap(fallOffMap));
            editorRenderer.DrawCollider(falloff_mesh);
            break;

        case EditorMode.FLAT_COLORED:
            editorRenderer.DrawMesh(plane, TextureGenerator.TextureFromColorMap(data.textureData, chunkSize, chunkSize));
            editorRenderer.DrawCollider(plane);
            break;

        case EditorMode.FLAT_HEIGHTMAP:
            editorRenderer.DrawMesh(plane, TextureGenerator.TextureFromGrayscaleMap(data.map));
            editorRenderer.DrawCollider(plane);
            break;

        case EditorMode.FLAT_FALLOFF:
            editorRenderer.DrawMesh(plane, TextureGenerator.TextureFromGrayscaleMap(fallOffMap));
            editorRenderer.DrawCollider(plane);
            break;
        }
    }