예제 #1
0
    private void GenerateTerrainTriangles(List <Vector2> points, out List <Vector2> vertices, out List <int> triangles)
    {
        var imesh     = new GenericMesher().Triangulate(points.Select(toVertex).ToList());
        var idToIndex = new Dictionary <int, int>();

        vertices  = new List <Vector2>();
        triangles = new List <int>();
        foreach (var triangle in imesh.Triangles)
        {
            if (!caveSystem.insideCave(PSPolygon.GetCenter(triangle.vertices.Select(toVector2).ToList())))
            {
                foreach (var v in triangle.vertices.Reverse())
                {
                    if (!idToIndex.ContainsKey(v.ID))
                    {
                        idToIndex.Add(v.ID, vertices.Count);
                        vertices.Add(toVector2(v));
                    }
                    triangles.Add(idToIndex[v.ID]);
                }
            }
        }
    }