| 103 | |
| 104 | template <typename HandleDrawItemFuncType, typename HandleGeomSubsetDrawItemFuncType> |
| 105 | void HnMesh::ProcessDrawItems(HandleDrawItemFuncType&& HandleDrawItem, |
| 106 | HandleGeomSubsetDrawItemFuncType&& HandleGeomSubsetDrawItem) |
| 107 | { |
| 108 | const pxr::HdGeomSubsets& GeomSubsets = m_Topology.GetGeomSubsets(); |
| 109 | const size_t NumGeomSubsets = GeomSubsets.size(); |
| 110 | for (auto const& token_repr : _reprs) |
| 111 | { |
| 112 | const pxr::TfToken& Token = token_repr.first; |
| 113 | pxr::HdReprSharedPtr Repr = token_repr.second; |
| 114 | _MeshReprConfig::DescArray Descs = _GetReprDesc(Token); |
| 115 | |
| 116 | size_t DrawItemIdx = 0; |
| 117 | size_t GeomSubsetDescIdx = 0; |
| 118 | for (const pxr::HdMeshReprDesc& Desc : Descs) |
| 119 | { |
| 120 | if (Desc.geomStyle == pxr::HdMeshGeomStyleInvalid) |
| 121 | continue; |
| 122 | |
| 123 | { |
| 124 | pxr::HdDrawItem* Item = Repr->GetDrawItem(DrawItemIdx++); |
| 125 | HandleDrawItem(static_cast<HnDrawItem&>(*Item)); |
| 126 | } |
| 127 | |
| 128 | // Update geom subset draw items if they exist |
| 129 | if (Desc.geomStyle != pxr::HdMeshGeomStylePoints) |
| 130 | { |
| 131 | for (size_t i = 0; i < NumGeomSubsets; ++i) |
| 132 | { |
| 133 | if (pxr::HdDrawItem* Item = Repr->GetDrawItemForGeomSubset(GeomSubsetDescIdx, NumGeomSubsets, i)) |
| 134 | { |
| 135 | HandleGeomSubsetDrawItem(GeomSubsets[i], static_cast<HnDrawItem&>(*Item)); |
| 136 | } |
| 137 | } |
| 138 | ++GeomSubsetDescIdx; |
| 139 | } |
| 140 | } |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | void HnMesh::UpdateReprMaterials(pxr::HdSceneDelegate* SceneDelegate, |
| 145 | pxr::HdRenderParam* RenderParam) |
nothing calls this directly
no outgoing calls
no test coverage detected