//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); }