Beispiel #1
0
    public void GenerateMap()
    {
        if (_mapDisplay == null)
        {
            _mapDisplay = GetComponent <MapDisplay>();
        }

        float[,] noiseMap = Noise.GenerateNoiseMap(mapSize, noiseData, island, islandSizeMultiplier);

        _netMesh = MeshGenerator.GenerateTriangulatedMesh(mapSize, distributionData);

        if (island)
        {
            _meshData = MeshGenerator.GenerateMeshData(_netMesh, noiseData.meshHeightCurve, noiseMap, noiseData.meshHeightMultiplier, islandMin);
            _netMesh  = _meshData.netMesh;
        }

        _meshData = MeshGenerator.GenerateMeshData(_netMesh, noiseData.meshHeightCurve, noiseMap, noiseData.meshHeightMultiplier);
        Color[] colors = _mapDisplay.GenerateColors(_netMesh, noiseMap);
        _meshData.AddColors(colors);
        UnityEngine.Mesh m = _meshData.CreateMesh();
        _mapDisplay.DisplayMesh(m);

        if (waterGenerator != null)
        {
            if (generateWater)
            {
                waterGenerator.Init(mapSize, waterLevel, distributionData);
            }
            else
            {
                waterGenerator.Clear();
            }
        }
    }
    public static Mesh GetMeshFromMesh(UnityEngine.Mesh m)
    {
        Polygon polygon = new Polygon();

        foreach (Vector3 meshVertex in m.vertices)
        {
            polygon.Add(new Vertex(meshVertex.x, meshVertex.z));
        }

        ConstraintOptions constraintOptions = new ConstraintOptions();

        constraintOptions.ConformingDelaunay = true;


        TriangleNet.Mesh mesh = polygon.Triangulate(constraintOptions) as TriangleNet.Mesh;
        return(mesh);
    }
 public void DisplayMesh(UnityEngine.Mesh mesh)
 {
     _meshFilter.mesh       = mesh;
     _meshRenderer.material = material;
 }