@@ -709,7 +709,7 @@ void HdVP2BasisCurves::_UpdateDrawItem(
709709 HdVP2DrawItem* drawItem,
710710 HdBasisCurvesReprDesc const & desc)
711711{
712- const MHWRender::MRenderItem* renderItem = drawItem->GetRenderItem ();
712+ MHWRender::MRenderItem* renderItem = drawItem->GetRenderItem ();
713713 if (ARCH_UNLIKELY (!renderItem)) {
714714 return ;
715715 }
@@ -745,7 +745,13 @@ void HdVP2BasisCurves::_UpdateDrawItem(
745745 // doesn't need to extract index data from topology. Points use non-indexed
746746 // draw.
747747 const bool isBoundingBoxItem = (drawMode == MHWRender::MGeometry::kBoundingBox );
748+
749+ #ifdef MAYA_NEW_POINT_SNAPPING_SUPPORT
750+ constexpr bool isPointSnappingItem = false ;
751+ #else
748752 const bool isPointSnappingItem = (renderItem->primitive () == MHWRender::MGeometry::kPoints );
753+ #endif
754+
749755 const bool requiresIndexUpdate = !isBoundingBoxItem && !isPointSnappingItem;
750756
751757 // Prepare index buffer.
@@ -1298,6 +1304,20 @@ void HdVP2BasisCurves::_UpdateDrawItem(
12981304 | HdChangeTracker::DirtyPrimvar | HdChangeTracker::DirtyTopology
12991305 | DirtySelectionHighlight));
13001306
1307+ #ifdef MAYA_NEW_POINT_SNAPPING_SUPPORT
1308+ if ((itemDirtyBits & DirtySelectionHighlight) && !isBoundingBoxItem) {
1309+ MSelectionMask selectionMask (MSelectionMask::kSelectNurbsCurves );
1310+
1311+ // Only unselected Rprims can be used for point snapping.
1312+ if (_selectionStatus == kUnselected ) {
1313+ selectionMask.addMask (MSelectionMask::kSelectPointsForGravity );
1314+ }
1315+
1316+ // The function is thread-safe, thus called in place to keep simple.
1317+ renderItem->setSelectionMask (selectionMask);
1318+ }
1319+ #endif
1320+
13011321 // Reset dirty bits because we've prepared commit state for this draw item.
13021322 drawItem->ResetDirtyBits ();
13031323
@@ -1637,9 +1657,11 @@ void HdVP2BasisCurves::_InitRepr(TfToken const& reprToken, HdDirtyBits* dirtyBit
16371657 drawItem->AddUsage (HdVP2DrawItem::kSelectionHighlight );
16381658 }
16391659 break ;
1660+ #ifndef MAYA_NEW_POINT_SNAPPING_SUPPORT
16401661 case HdBasisCurvesGeomStylePoints:
16411662 renderItem = _CreatePointsRenderItem (renderItemName);
16421663 break ;
1664+ #endif
16431665 default : TF_WARN (" Unsupported geomStyle" ); break ;
16441666 }
16451667
@@ -1802,7 +1824,14 @@ MHWRender::MRenderItem* HdVP2BasisCurves::_CreateWireRenderItem(const MString& n
18021824 renderItem->castsShadows (false );
18031825 renderItem->receivesShadows (false );
18041826 renderItem->setShader (_delegate->Get3dSolidShader (kOpaqueGray ));
1827+
1828+ #ifdef MAYA_NEW_POINT_SNAPPING_SUPPORT
1829+ MSelectionMask selectionMask (MSelectionMask::kSelectNurbsCurves );
1830+ selectionMask.addMask (MSelectionMask::kSelectPointsForGravity );
1831+ renderItem->setSelectionMask (selectionMask);
1832+ #else
18051833 renderItem->setSelectionMask (MSelectionMask::kSelectNurbsCurves );
1834+ #endif
18061835
18071836#if MAYA_API_VERSION >= 20220000
18081837 renderItem->setObjectTypeExclusionFlag (MHWRender::MFrameContext::kExcludeNurbsCurves );
@@ -1847,7 +1876,14 @@ MHWRender::MRenderItem* HdVP2BasisCurves::_CreatePatchRenderItem(const MString&
18471876 renderItem->castsShadows (false );
18481877 renderItem->receivesShadows (false );
18491878 renderItem->setShader (_delegate->Get3dSolidShader (kOpaqueGray ));
1879+
1880+ #ifdef MAYA_NEW_POINT_SNAPPING_SUPPORT
1881+ MSelectionMask selectionMask (MSelectionMask::kSelectNurbsCurves );
1882+ selectionMask.addMask (MSelectionMask::kSelectPointsForGravity );
1883+ renderItem->setSelectionMask (selectionMask);
1884+ #else
18501885 renderItem->setSelectionMask (MSelectionMask::kSelectNurbsCurves );
1886+ #endif
18511887
18521888#if MAYA_API_VERSION >= 20220000
18531889 renderItem->setObjectTypeExclusionFlag (MHWRender::MFrameContext::kExcludeNurbsCurves );
@@ -1858,6 +1894,7 @@ MHWRender::MRenderItem* HdVP2BasisCurves::_CreatePatchRenderItem(const MString&
18581894 return renderItem;
18591895}
18601896
1897+ #ifndef MAYA_NEW_POINT_SNAPPING_SUPPORT
18611898/* ! \brief Create render item for points repr.
18621899 */
18631900MHWRender::MRenderItem* HdVP2BasisCurves::_CreatePointsRenderItem (const MString& name) const
@@ -1883,5 +1920,6 @@ MHWRender::MRenderItem* HdVP2BasisCurves::_CreatePointsRenderItem(const MString&
18831920
18841921 return renderItem;
18851922}
1923+ #endif
18861924
18871925PXR_NAMESPACE_CLOSE_SCOPE
0 commit comments