aboutsummaryrefslogtreecommitdiff
path: root/NvCloth/samples/SampleBase/scene/Scene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NvCloth/samples/SampleBase/scene/Scene.cpp')
-rw-r--r--NvCloth/samples/SampleBase/scene/Scene.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/NvCloth/samples/SampleBase/scene/Scene.cpp b/NvCloth/samples/SampleBase/scene/Scene.cpp
index 6296a05..00e23ae 100644
--- a/NvCloth/samples/SampleBase/scene/Scene.cpp
+++ b/NvCloth/samples/SampleBase/scene/Scene.cpp
@@ -451,6 +451,24 @@ void Scene::addClothToSolver(ClothActor* clothActor, nv::cloth::Solver* solver)
mClothSolverMap[clothActor] = solver;
}
+void Scene::addClothsToSolver(nv::cloth::Range<ClothActor*> clothActors, nv::cloth::Solver* solver)
+{
+ // A temporary vector of Cloth*, to construct a Range from and pass to solver
+ std::vector<nv::cloth::Cloth*> cloths;
+
+ for (uint32_t i = 0; i < clothActors.size(); ++i)
+ {
+ auto* clothActor = clothActors[i];
+ assert(mClothSolverMap.find(clothActor) == mClothSolverMap.end());
+ mClothSolverMap[clothActor] = solver;
+
+ cloths.push_back(clothActor->mCloth);
+ }
+
+ auto clothsRange = nv::cloth::Range<nv::cloth::Cloth*>(&cloths.front(), &cloths.back() + 1);
+ solver->addCloths(clothsRange);
+}
+
void Scene::trackRenderable(Renderable* renderable)
{
trackT(mRenderableList, renderable);