From a9913c45580f73f626f34a9e2cbf7ac4990b3502 Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Fri, 6 Feb 2026 17:54:49 +0900 Subject: [PATCH] add bwdInit for subcollision pipelines --- .../detection/algorithm/BaseSubCollisionPipeline.cpp | 5 +++++ .../detection/algorithm/BaseSubCollisionPipeline.h | 3 +++ .../detection/algorithm/CompositeCollisionPipeline.cpp | 7 +++++++ .../detection/algorithm/CompositeCollisionPipeline.h | 1 + 4 files changed, 16 insertions(+) diff --git a/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/BaseSubCollisionPipeline.cpp b/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/BaseSubCollisionPipeline.cpp index b15df4b776e..abead5dfb6a 100644 --- a/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/BaseSubCollisionPipeline.cpp +++ b/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/BaseSubCollisionPipeline.cpp @@ -52,6 +52,11 @@ void BaseSubCollisionPipeline::init() doInit(); } +void BaseSubCollisionPipeline::bwdInit() +{ + doBwdInit(); +} + /** * @brief Queries all registered contact response types from the Contact factory. * diff --git a/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/BaseSubCollisionPipeline.h b/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/BaseSubCollisionPipeline.h index bdf1bab7919..96c6ce3d2b8 100644 --- a/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/BaseSubCollisionPipeline.h +++ b/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/BaseSubCollisionPipeline.h @@ -85,6 +85,9 @@ class SOFA_COMPONENT_COLLISION_DETECTION_ALGORITHM_API BaseSubCollisionPipeline /// @brief Initializes the component. Marked final to enforce Template Method pattern. void init() override final; + + /// @brief Initialization of the component during the bottom-up traversal. Marked final to enforce Template Method pattern. + void bwdInit() override final; /// @brief Renders debug visualization. Marked final to enforce Template Method pattern. void draw(const core::visual::VisualParams* vparams) override final; diff --git a/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/CompositeCollisionPipeline.cpp b/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/CompositeCollisionPipeline.cpp index e50d6e6b0e8..fe2a93d4fe9 100644 --- a/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/CompositeCollisionPipeline.cpp +++ b/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/CompositeCollisionPipeline.cpp @@ -122,6 +122,13 @@ void CompositeCollisionPipeline::init() } } +void CompositeCollisionPipeline::bwdInit() +{ + for(const auto& subPipeline : l_subCollisionPipelines) + { + subPipeline->bwdInit(); + } +} void CompositeCollisionPipeline::reset() { diff --git a/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/CompositeCollisionPipeline.h b/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/CompositeCollisionPipeline.h index 99088c894a5..706e6b8da4c 100644 --- a/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/CompositeCollisionPipeline.h +++ b/Sofa/Component/Collision/Detection/Algorithm/src/sofa/component/collision/detection/algorithm/CompositeCollisionPipeline.h @@ -77,6 +77,7 @@ class SOFA_COMPONENT_COLLISION_DETECTION_ALGORITHM_API CompositeCollisionPipelin /// @brief Delegates response creation to all sub-pipelines. void doCollisionResponse() override; + void bwdInit() override; void reset() override; /// @brief Entry point for collision reset, called by the simulation loop.