//Instead of averaging the four points, finds the center point on the triangle edge that bisects the side.
        //This will generate a valid point for non-planar sides
        public Vector3 FindCenterBetter()
        {
            Segment seg   = this.segment;
            Level   level = seg.level;

            bool invertOrderForSide = ((seg.neighbor[this.num] > -1) && (seg.neighbor[this.num] < seg.num));

            Level.QuadTriangulationOrder triangulationOrder = Level.GetTriangulationOrder(level, seg.num, this.num);
            int[] side_verts = Utility.SideVertsFromSegVerts(this.segment.vert, this.num);

            int corner = triangulationOrder.GetBisectingEdgeCorner(invertOrderForSide);

            return((level.vertex[side_verts[corner]].position + level.vertex[side_verts[corner + 2]].position) / 2f);
        }