public static bool isSimple(IList <Vector3> poly)
        {
            PriorityHeap <VertexEv> evQueue = setupEvQueue(poly);
            SweepLine SL = new SweepLine(poly);

            //Debug.LogWarning("Queue size=" + evQueue.Count);

            while (!evQueue.Empty)
            {
                VertexEv ev = evQueue.Pop();

                if (ev.type == VertexEv.vType.LEFT)
                {
                    int idx = SL.Add(ev.edge);

                    //Debug.Log("Left: " + idx + "/" + SL.Count);

                    if (SL.intersect(idx, idx - 1))
                    {
                        return(false);
                    }
                    if (SL.intersect(idx, idx + 1))
                    {
                        return(false);
                    }
                }
                else             // right vertex


                {
                    int idx = SL.Find(ev.edge);

                    //Debug.Log("Right: " + idx + "/" + SL.Count);

                    if (SL.intersect(idx - 1, idx + 1))
                    {
                        return(false);
                    }
                    SL.Remove(idx);
                }
            }

            return(true);
        }