| 752 | } |
| 753 | |
| 754 | bool hasFullySelectedComponent( const MeshTopology& topology, const VertBitSet & selection ) |
| 755 | { |
| 756 | MR_TIMER; |
| 757 | |
| 758 | auto unionFindStruct = getUnionFindStructureVerts( topology ); |
| 759 | const auto& allRoots = unionFindStruct.roots(); |
| 760 | auto [uniqueRootsMap, k] = getUniqueRootIds( allRoots, topology.getValidVerts() ); |
| 761 | RegionBitSet remainKeysBitSets( k ); |
| 762 | for ( VertId v( 0 ); v < uniqueRootsMap.size(); ++v ) |
| 763 | { |
| 764 | if ( selection.test( v ) ) |
| 765 | continue; |
| 766 | if ( auto rId = uniqueRootsMap[v] ) |
| 767 | remainKeysBitSets.set( rId ); |
| 768 | } |
| 769 | return remainKeysBitSets.count() != remainKeysBitSets.size(); |
| 770 | } |
| 771 | |
| 772 | bool hasFullySelectedComponent( const Mesh& mesh, const VertBitSet & selection ) |
| 773 | { |
no test coverage detected