public void Simplify()
        {
            ToDefault();

            var vertices = GetVertices();
            var holes    = GetHoles();
            var newSimplifiedPolygons = Simplifier.Simplify(vertices, holes);
            var polygonTr             = polygon.transform;
            var polygonPos            = polygonTr.position;
            var polygonRot            = polygonTr.rotation;

            for (var i = 0; i < newSimplifiedPolygons.Count; i++)
            {
                var simplifiedPolygon = newSimplifiedPolygons[i];
                var newPolygon        = Polygon.NewPolygon(simplifiedPolygon, polygonPos, polygonRot, transform, nameof(Polygon) + " " + i);
                newPolygon.Centralize();
                simplifiedPolygons.Add(newPolygon);
            }

            polygon.gameObject.SetActive(false);
            for (var i = 0; i < this.holes.Count; i++)
            {
                this.holes[i].gameObject.SetActive(false);
            }
            polygonMode = Polygon.PolygonMode.Simplified;
        }
 public void Triangulate()
 {
     Simplify();
     for (var i = 0; i < simplifiedPolygons.Count; i++)
     {
         simplifiedPolygons[i].Triangulate();
     }
     polygonMode = Polygon.PolygonMode.Triangulated;
 }
        public void ToDefault()
        {
            while (simplifiedPolygons.Count > 0)
            {
                var simplifiedPolygon = simplifiedPolygons[0];
                if (simplifiedPolygon != null)
                {
                    DestroyImmediate(simplifiedPolygon.gameObject);
                }
                simplifiedPolygons.RemoveAt(0);
            }

            polygon.gameObject.SetActive(true);
            for (var i = 0; i < holes.Count; i++)
            {
                holes[i].gameObject.SetActive(true);
            }

            polygonMode = Polygon.PolygonMode.Default;
        }