private static ClipOperationResult Clip(ref CMesh lCMesh, Plane lPlane) { ClipOperationResult lResult = ProcessVertices(ref lCMesh, lPlane); if (lResult != ClipOperationResult.Mixed) { return(lResult); } ProcessEdges(ref lCMesh, lPlane); ProcessFaces(ref lCMesh, lPlane); return(lResult); }
public static CMesh CreateConvexPolyhedron(Plane[] lPlanes, Vector3 lCentre, Vector3 lSize) { AMesh lMeshToClip = CreateAMeshBox(lCentre, lSize); CMesh lClippedMesh = new CMesh(lMeshToClip); for (int i = 0; i < lPlanes.Length; i++) { ClipOperationResult lResult = Clip(ref lClippedMesh, lPlanes[i]); if (lResult == ClipOperationResult.AllNegative) { break; } } return(lClippedMesh); }