static ProjectedEdge CreateClippingEdge(ProjectedEdge baseEdge, Vector3 edgeEnd, Plane facePlane) { var triangle = baseEdge.PlanarEdge.Face; var oppVert = baseEdge.PlanarEdge.GetOppositeVertex(edgeEnd); var outlineDir = (edgeEnd - oppVert).Normalized(); var interEdge = new HardEdge( edgeEnd, edgeEnd + baseEdge.PlanarEdge.OutlineDirection, facePlane.Normal, outlineDir); interEdge.CorrectOrder(); var planarEndEdge = new PlanarEdge(interEdge, triangle, facePlane); var interProjected = planarEndEdge.ProjectTriangle(triangle, edgeEnd); interProjected.NeedsToBeClipped = true; baseEdge.CombineWith = interProjected; interProjected.CombineWith = baseEdge; return(interProjected); }