#include <CompositeCollisionPipeline.h>
A collision pipeline that aggregates multiple sub-pipelines using the Composite pattern. More...

A collision pipeline that aggregates multiple sub-pipelines using the Composite pattern.
CompositeCollisionPipeline enables partitioning collision detection into independent groups, where each group is handled by its own SubCollisionPipeline. This architecture provides several benefits:
Public Attributes | |
| sofa::Data< int > | d_depth |
| sofa::Data< bool > | d_parallelDetection |
| When true, collision detection across sub-pipelines runs in parallel using the task scheduler. More... | |
| sofa::MultiLink< CompositeCollisionPipeline, BaseSubCollisionPipeline, sofa::BaseLink::FLAG_DUPLICATE > | l_subCollisionPipelines |
| List of sub-pipelines to aggregate. Each handles an independent set of collision models. More... | |
Public Attributes inherited from sofa::core::objectmodel::BaseComponent | |
| Data< bool > | f_listening |
| if true, handle the events, otherwise ignore the events More... | |
Public Attributes inherited from sofa::core::objectmodel::Base | |
| std::vector< lifecycle::DeprecatedData * > | m_oldAttributes |
| Data< int > | d_messageLogCount |
| Data< std::string > | name |
| Name of the object. More... | |
| Data< bool > | f_printLog |
| if true, emits extra messages at runtime. More... | |
| Data< sofa::core::objectmodel::TagSet > | f_tags |
| list of the subsets the object belongs to More... | |
| Data< sofa::type::BoundingBox > | f_bbox |
| this object bounding box More... | |
| Data< sofa::core::objectmodel::ComponentState > | d_componentState |
| The state of the component among (Dirty, Valid, Undefined, Loading, Invalid). More... | |
| std::string | m_definitionSourceFileName {""} |
| int | m_definitionSourceFilePos {-1} |
| std::string | m_instanciationSourceFileName {""} |
| int | m_instanciationSourceFilePos {-1} |
Public Attributes inherited from sofa::simulation::TaskSchedulerUser | |
| sofa::Data< int > | d_nbThreads |
| sofa::Data< std::string > | d_taskSchedulerType |
| Type of task scheduler to use. More... | |
Public Member Functions | |
| SOFA_CLASS2 (CompositeCollisionPipeline, sofa::core::collision::Pipeline, sofa::simulation::TaskSchedulerUser) | |
| void | init () override |
| Initializes the pipeline and validates sub-pipeline configuration. More... | |
| std::set< std::string > | getResponseList () const override |
| Returns the set of available collision response types. More... | |
Public Member Functions inherited from sofa::core::collision::Pipeline | |
| SOFA_ABSTRACT_CLASS (Pipeline, sofa::core::objectmodel::BaseComponent) | |
| void | computeCollisions () |
| const BroadPhaseDetection * | getBroadPhaseDetection () const |
| Broad phase collision detection method accessor. More... | |
| const NarrowPhaseDetection * | getNarrowPhaseDetection () const |
| Narrow phase collision detection method accessor. More... | |
| bool | insertInNode (objectmodel::BaseNode *node) override |
| bool | removeInNode (objectmodel::BaseNode *node) override |
Public Member Functions inherited from sofa::core::objectmodel::BaseComponent | |
| SOFA_CLASS (BaseComponent, Base) | |
| virtual void | draw (const core::visual::VisualParams *) |
| Render internal data of this object, for debugging purposes. More... | |
| virtual void | computeBBox (const core::ExecParams *, bool=false) |
| void | setSrc (const std::string &v, std::vector< std::string > *attributeList=nullptr) |
| Sets a source Object and parses it to collect dependent Data. More... | |
| void | setSrc (const std::string &v, const BaseComponent *loader, std::vector< std::string > *attributeList=nullptr) |
| Base * | findLinkDestClass (const BaseClass *destType, const std::string &path, const BaseLink *link) override |
| virtual std::string | getPathName () const override |
| Return the full path name of this object. More... | |
| SReal | getTime () const |
| Current time. More... | |
| const BaseContext * | getContext () const |
| BaseContext * | getContext () |
| const BaseComponent * | getMaster () const |
| BaseComponent * | getMaster () |
| const VecSlaves & | getSlaves () const |
| BaseComponent * | getSlave (const std::string &name) const |
| virtual void | addSlave (BaseComponent::SPtr s) |
| virtual void | removeSlave (BaseComponent::SPtr s) |
| virtual void | handleEvent (Event *) |
| Handle an event. More... | |
| virtual void | handleTopologyChange () |
| virtual void | handleTopologyChange (core::topology::Topology *t) |
| void | parse (BaseObjectDescription *arg) override |
| Parse the given description to assign values to this object's fields and potentially other parameters. More... | |
| virtual void | reinit () |
| Update method called when variables used in precomputation are modified. More... | |
| void | updateInternal () |
| Update method called when variables (used to compute other internal variables) are modified. More... | |
| virtual void | storeResetState () |
| Save the initial state for later uses in reset() More... | |
| virtual void | cleanup () |
Public Member Functions inherited from sofa::core::objectmodel::Base | |
| virtual const BaseClass * | getClass () const |
| void | addDeprecatedAttribute (lifecycle::DeprecatedData *attribute) |
| void | addUpdateCallback (const std::string &name, std::initializer_list< BaseData * > inputs, std::function< sofa::core::objectmodel::ComponentState(const DataTracker &)> function, std::initializer_list< BaseData * > outputs) |
| void | addOutputsToCallback (const std::string &name, std::initializer_list< BaseData * > outputs) |
| const std::string & | getName () const |
| Accessor to the object name. More... | |
| void | setName (const std::string &n) |
| Set the name of this object. More... | |
| void | setName (const std::string &n, int counter) |
| Set the name of this object, adding an integer counter. More... | |
| std::string | getTypeName () const |
| Get the type name of this object (i.e. class and template types) More... | |
| virtual std::string | getClassName () const |
| Get the class name of this object. More... | |
| virtual std::string | getTemplateName () const final |
| Get the template type names (if any) used to instantiate this object. More... | |
| std::string | getNameSpaceName () const |
| Get the template type names (if any) used to instantiate this object. More... | |
| void | setDefinitionSourceFileName (const std::string &sourceFileName) |
| Set the source filename (where the component is implemented) More... | |
| const std::string & | getDefinitionSourceFileName () const |
| Get the source filename (where the component is implemented) More... | |
| void | setDefinitionSourceFilePos (const int) |
| Set the source location (where the component is implemented) More... | |
| int | getDefinitionSourceFilePos () const |
| Get the source location (where the component is implemented) More... | |
| void | setInstanciationSourceFileName (const std::string &sourceFileName) |
| const std::string & | getInstanciationSourceFileName () const |
| void | setInstanciationSourceFilePos (const int) |
| int | getInstanciationSourceFilePos () const |
| void | addMessage (const sofa::helper::logging::Message &m) const |
| size_t | countLoggedMessages (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const |
| const std::deque< sofa::helper::logging::Message > & | getLoggedMessages () const |
| const std::string | getLoggedMessagesAsString (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const |
| void | clearLoggedMessages () const |
| bool | notMuted () const |
| const sofa::core::objectmodel::TagSet & | getTags () const |
| Represents the subsets the object belongs to. More... | |
| bool | hasTag (Tag t) const |
| Return true if the object belong to the given subset. More... | |
| void | addTag (Tag t) |
| Add a subset qualification to the object. More... | |
| void | removeTag (Tag t) |
| Remove a subset qualification to the object. More... | |
| ComponentState | getComponentState () const |
| bool | isComponentStateValid () const |
| bool | isComponentStateInvalid () const |
| SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior | |
| SOFA_ATTRIBUTE_DEPRECATED__TOBASEOBJECT () virtual const objectmodel | |
| virtual bool | parseField (const std::string &attribute, const std::string &value) |
| Assign one field value (Data or Link) More... | |
| virtual bool | hasField (const std::string &attribute) const |
| Check if a given Data field or Link exists. More... | |
| void | parseFields (const std::list< std::string > &str) |
| Assign the field values stored in the given list of name + value pairs of strings. More... | |
| virtual void | parseFields (const std::map< std::string, std::string * > &str) |
| Assign the field values stored in the given map of name -> value pairs. More... | |
| void | writeDatas (std::ostream &out, const std::string &separator=" ") |
| BaseData * | findData (const std::string &name) const |
| std::vector< BaseData * > | findGlobalField (const std::string &name) const |
| Find data fields given a name: several can be found as we look into the alias map. More... | |
| BaseLink * | findLink (const std::string &name) const |
| std::vector< BaseLink * > | findLinks (const std::string &name) const |
| Find link fields given a name: several can be found as we look into the alias map. More... | |
| virtual void | updateLinks (bool logErrors=true) |
| Update pointers in case the pointed-to objects have appeared. More... | |
| template<class T > | |
| BaseData::BaseInitData | initData (::sofa::core::objectmodel::Data< T > *field, const char *n, const char *help, ::sofa::core::objectmodel::BaseData::DataFlags dataflags) |
| Helper method used to initialize a data field containing a value of type T. More... | |
| template<class T > | |
| BaseData::BaseInitData | initData (Data< T > *field, const char *n, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
| Helper method used to initialize a data field containing a value of type T. More... | |
| template<class T > | |
| Data< T >::InitData | initData (Data< T > *field, const T &value, const char *n, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
| Helper method used to initialize a data field containing a value of type T. More... | |
| void | addData (BaseData *f, const std::string &name) |
| void | addData (BaseData *f) |
| void | removeData (BaseData *f) |
| Remove a data field. More... | |
| void | addAlias (BaseData *field, const char *alias) |
| Add an alias to a Data. More... | |
| void | addLink (BaseLink *l) |
| Add a link. More... | |
| void | addAlias (BaseLink *link, const char *alias) |
| Add an alias to a Link. More... | |
| const VecData & | getDataFields () const |
| Accessor to the vector containing all the fields of this object. More... | |
| const MapData & | getDataAliases () const |
| Accessor to the map containing all the aliases of this object. More... | |
| const VecLink & | getLinks () const |
| Accessor to the vector containing all the fields of this object. More... | |
| const MapLink & | getLinkAliases () const |
| Accessor to the map containing all the aliases of this object. More... | |
| virtual bool | findDataLinkDest (BaseData *&ptr, const std::string &path, const BaseLink *link) |
| template<class T > | |
| bool | findLinkDest (T *&ptr, const std::string &path, const BaseLink *link) |
Protected Member Functions | |
| CompositeCollisionPipeline () | |
| void | doCollisionReset () override |
| Delegates reset to all sub-pipelines to clear previous contacts. More... | |
| void | doCollisionDetection (const sofa::type::vector< sofa::core::CollisionModel * > &collisionModels) override |
| Delegates collision detection to all sub-pipelines (optionally in parallel). More... | |
| void | doCollisionResponse () override |
| Delegates response creation to all sub-pipelines. More... | |
| void | bwdInit () override |
| Initialization method called at graph creation and modification, during bottom-up traversal. More... | |
| void | reset () override |
| Reset to initial state. More... | |
| virtual void | computeCollisionReset () override final |
| Entry point for collision reset, called by the simulation loop. More... | |
| virtual void | computeCollisionDetection () override final |
| Entry point for collision detection, called by the simulation loop. More... | |
| virtual void | computeCollisionResponse () override final |
| Entry point for collision response, called by the simulation loop. More... | |
Protected Member Functions inherited from sofa::core::collision::Pipeline | |
| Pipeline () | |
| ~Pipeline () override | |
Protected Member Functions inherited from sofa::core::objectmodel::BaseComponent | |
| BaseComponent () | |
| ~BaseComponent () override | |
| virtual void | doUpdateInternal () |
| Implementation of the internal update. More... | |
| void | changeContextLink (BaseContext *before, BaseContext *&after) |
| void | changeSlavesLink (BaseComponent::SPtr ptr, std::size_t, bool add) |
| This method insures that slaves objects have master and context links set correctly. More... | |
| void | trackInternalData (const BaseData &data) |
| Method called to add the Data to the DataTracker (listing the Data to track) More... | |
| void | cleanTracker () |
| bool | hasDataChanged (const BaseData &data) |
| Method called to know if a tracked Data has changed. More... | |
Protected Member Functions inherited from sofa::core::objectmodel::Base | |
| Base () | |
| virtual | ~Base () |
| void | initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
| Helper method used by initData() More... | |
| void | initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, BaseData::DataFlags dataFlags) |
| Helper method used by initData() More... | |
| template<class T > | |
| void | initData0 (Data< T > *field, typename Data< T >::InitData &res, const T &value, const char *n, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
| Helper method used by initData() More... | |
Protected Member Functions inherited from sofa::core::IntrusiveObject | |
| virtual | ~IntrusiveObject ()=default |
Protected Member Functions inherited from sofa::simulation::TaskSchedulerUser | |
| TaskSchedulerUser () | |
| void | initTaskScheduler (bool forceInit=false) |
| void | reinitTaskScheduler () |
| void | stopTaskSchduler () |
Friends | |
| class | CollisionPipeline |
| sofa::Data<int> sofa::component::collision::detection::algorithm::CompositeCollisionPipeline::d_depth |
| sofa::Data<bool> sofa::component::collision::detection::algorithm::CompositeCollisionPipeline::d_parallelDetection |
When true, collision detection across sub-pipelines runs in parallel using the task scheduler.
| sofa::MultiLink< CompositeCollisionPipeline, BaseSubCollisionPipeline, sofa::BaseLink::FLAG_DUPLICATE > sofa::component::collision::detection::algorithm::CompositeCollisionPipeline::l_subCollisionPipelines |
List of sub-pipelines to aggregate. Each handles an independent set of collision models.
|
protected |
|
overrideprotectedvirtual |
Initialization method called at graph creation and modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseComponent.
|
finaloverrideprotectedvirtual |
Entry point for collision detection, called by the simulation loop.
Entry point for collision detection phase, called by the simulation loop.
Implements sofa::core::collision::Pipeline.
|
finaloverrideprotectedvirtual |
Entry point for collision reset, called by the simulation loop.
Entry point for collision reset phase, called by the simulation loop.
Implements sofa::core::collision::Pipeline.
|
finaloverrideprotectedvirtual |
Entry point for collision response, called by the simulation loop.
Entry point for collision response phase, called by the simulation loop.
Implements sofa::core::collision::Pipeline.
|
overrideprotectedvirtual |
Delegates collision detection to all sub-pipelines (optionally in parallel).
Executes collision detection across all sub-pipelines.
If parallel detection is enabled and a task scheduler is available, the detection phase of each sub-pipeline runs concurrently. This can significantly improve performance when there are multiple independent collision groups.
| collisionModels | Ignored - each sub-pipeline uses its own linked collision models. |
Implements sofa::core::collision::Pipeline.
|
overrideprotectedvirtual |
Delegates reset to all sub-pipelines to clear previous contacts.
Delegates collision reset to all sub-pipelines sequentially.
Implements sofa::core::collision::Pipeline.
|
overrideprotectedvirtual |
Delegates response creation to all sub-pipelines.
Delegates collision response creation to all sub-pipelines sequentially.
Implements sofa::core::collision::Pipeline.
|
overridevirtual |
Returns the set of available collision response types.
Returns the list of available contact response types from the contact factory.
Implements sofa::core::collision::Pipeline.
|
overridevirtual |
Initializes the pipeline and validates sub-pipeline configuration.
Initializes the composite pipeline and validates its configuration.
This method performs several validation and setup steps:
Reimplemented from sofa::core::objectmodel::BaseComponent.
|
overrideprotectedvirtual |
Reset to initial state.
Implements sofa::core::collision::Pipeline.
| sofa::component::collision::detection::algorithm::CompositeCollisionPipeline::SOFA_CLASS2 | ( | CompositeCollisionPipeline | , |
| sofa::core::collision::Pipeline | , | ||
| sofa::simulation::TaskSchedulerUser | |||
| ) |
|
friend |