bool FMeshMeshCut::Cut( const MeshIntersection::FIntersectionsQueryResult& Intersections )
{
	check( !bCutCoplanar );
 
	ResetOutputs();
 
	bool bSuccess = true;
 
	int MeshesToProcess = bMutuallyCut ? 2 : 1;
	for ( int MeshIdx = 0; MeshIdx < MeshesToProcess; MeshIdx++ )
	{
		MeshCut::FCutWorkingInfo WorkingInfo( Mesh[ MeshIdx ], SnapTolerance );
		WorkingInfo.AddSegments( Intersections, MeshIdx ); // add intersection segments
		WorkingInfo.InsertFaceVertices(); // insert vertices for intersection segments w/ endpoints on faces
		WorkingInfo.InsertEdgeVertices(); // insert vertices for intersection segments w/ endpoints on edges
 
		// ensure that intersection segment endpoints are connected by direct edge paths
		bool bConnected = WorkingInfo.ConnectEdges
		(
			bTrackInsertedVertices ? &VertexChains  [ MeshIdx ] : nullptr,
			bTrackInsertedVertices ? &SegmentToChain[ MeshIdx ] : nullptr
		);
		
		if ( !bConnected )
		{
			bSuccess = false;
		}
	}
 
	return bSuccess;
}

사실상 주요 처리는 FCutWorkingInfo에 의해서 이루어진다. 메쉬의 절단이 이루어지고 나서 처리된 정점과 세그먼트는 각각 VertexChainsSegmentToChain에 채워진다.