SurgSim::Collision::ElementContactFilter Class Reference

Given a DeformableCollisionRepresentation this filter can remove contacts on specific elements of that representation. More...

`#include <SurgSim/Collision/ElementContactFilter.h>`

Inheritance diagram for SurgSim::Collision::ElementContactFilter:

## Public Member Functions

| ElementContactFilter (const std::string &name)
| SURGSIM_CLASSNAME (SurgSim::Collision::ElementContactFilter)
bool | doInitialize () override
| Interface to be implemented by derived classes. More...
bool | doWakeUp () override
| Interface to be implemented by derived classes. More...
void | setFilter (const std::shared_ptr< Framework::Component > &other, const std::vector< size_t > &indices)
| Set the filter for one representation, this means any contects on the given indices for that representation will be removed. More...
const std::vector< size_t > & | getFilter (const std::shared_ptr< Framework::Component > &other) const
| Query the filters for one specific representation. More...
void | setRepresentation (const std::shared_ptr< SurgSim::Framework::Component > &val)
| Sets the representation used for filtering, can only be used before initialization. More...
std::shared_ptr< SurgSim::Collision::Representation > | getRepresentation () const
Public Member Functions inherited from SurgSim::Collision::ContactFilter
| ContactFilter (const std::string &name)
| Constructor. More...
void | filterContacts (const std::shared_ptr< Physics::PhysicsManagerState > &state, const std::shared_ptr< CollisionPair > &pair)
| Base function to filter the contacts on a collision pair this will modify the 'contacts' in the collision pair. More...
void | update (double dt)
| Base function to update the internal data structures with regard to the filtering operation, this should only be called once per iteration. More...
Public Member Functions inherited from SurgSim::Framework::Component
| Component (const std::string &name)
| Constructor. More...
virtual | ~Component ()
| Destructor. More...
std::string | getName () const
| Gets component name. More...
std::string | getFullName () const
| Gets a string containing the name of the Component and (if it has one) its SceneElement. More...
void | setName (const std::string &name)
| Sets the name of component. More...
boost::uuids::uuid | getUuid () const
| Gets the id of the component. More...
bool | isInitialized () const
bool | initialize (const std::weak_ptr< Runtime > &runtime)
| Initialize this component, this needs to be called before wakeUp() can be called. More...
bool | isAwake () const
bool | wakeUp ()
| Wakeup this component, this will be called when the component is inserted into the ComponentManager that is responsible for handling this component. More...
void | retire ()
| Retire this component, this will be called when the component is removed from the ComponentManager that is responsible for handling this component. More...
void | setScene (std::weak_ptr< Scene > scene)
| Sets the scene. More...
std::shared_ptr< Scene > | getScene ()
| Gets the scene. More...
void | setSceneElement (std::weak_ptr< SceneElement > sceneElement)
| Sets the scene element. More...
std::shared_ptr< SceneElement > | getSceneElement ()
| Gets the scene element. More...
std::shared_ptr< const SceneElement > | getSceneElement () const
| Gets the scene element, constant version. More...
std::shared_ptr< Runtime > | getRuntime () const
| Get the runtime which contains this component. More...
virtual std::string | getClassName () const
| The class name for this class, this being the base class it should return SurgSim::Framework::Component but this would make missing implemenentations of this hard to catch, therefore this calls SURGSIM_FAILURE. More...
std::shared_ptr< Component > | getSharedPtr ()
| Gets a shared pointer to this component. More...
virtual void | doRetire ()
| Interface to be implemented by derived classes Has a default implementation, does nothing. More...
bool | isActive () const
virtual void | setLocalActive (bool val)
| Set the component's active state. More...
bool | isLocalActive () const
Public Member Functions inherited from SurgSim::Framework::Accessible
| Accessible ()
| Default Constructor. More...
| ~Accessible ()
| Destructor. More...
template<class T >
T | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More...
boost::any | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found. More...
template<class T >
bool | getValue (const std::string &name, T *value) const
| Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More...
void | setValue (const std::string &name, const boost::any &value)
| Sets a value of a property that has setter. More...
bool | isReadable (const std::string &name) const
| Check whether a property is readable. More...
bool | isWriteable (const std::string &name) const
| Check whether a property is writable. More...
void | setGetter (const std::string &name, GetterType func)
| Sets a getter for a given property. More...
void | setSetter (const std::string &name, SetterType func)
| Sets a setter for a given property. More...
void | setAccessors (const std::string &name, GetterType getter, SetterType setter)
| Sets the accessors getter and setter in one function. More...
void | removeAccessors (const std::string &name)
| Removes all the accessors (getter and setter) for a given property. More...
void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty)
| Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More...
void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder)
| Sets the functions used to convert data from and to a YAML::Node. More...
void | setDecoder (const std::string &name, DecoderType decoder)
| Sets the functions used to convert data from a YAML::Node. More...
YAML::Node | encode () const
| Encode this Accessible to a YAML::Node. More...
void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >())
| Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More...
template<>
boost::any | getValue (const std::string &name) const

## Protected Types

typedef std::vector< std::pair< std::shared_ptr< SurgSim::Framework::Component >, std::vector< size_t > > > | FilterMapType

## Protected Member Functions

void | setFilterElements (const FilterMapType &filterElements)
FilterMapType | getFilterElements ()
void | doFilterContacts (const std::shared_ptr< Physics::PhysicsManagerState > &state, const std::shared_ptr< CollisionPair > &pair) override
| Override this with the implementation of the filter, this has to be threadsafe, it will be called in parallel with different collision pairs. More...
void | doUpdate (double dt) override
Protected Member Functions inherited from SurgSim::Framework::Component
virtual std::shared_ptr< PoseComponent > | getPoseComponent ()
| Get the PoseComponent for this component. More...
virtual std::shared_ptr< const PoseComponent > | getPoseComponent () const
| Get the PoseComponent for this component, constant access. More...

## Private Member Functions

void | executeFilter (const std::shared_ptr< CollisionPair > &pair, size_t pairIndex, const std::vector< size_t > &filter)
| Run the filter over the side of the collision pair indicated by pairIndex. More...

## Private Attributes

std::shared_ptr< SurgSim::Framework::Logger > | m_logger
std::shared_ptr< Collision::Representation > | m_representation
| Representation whose contacts need to be filtered. More...
boost::mutex | m_writeMutex
std::unordered_map< Framework::Component *, std::vector< size_t > > | m_writeBuffer
std::unordered_map< Framework::Component *, std::vector< size_t > > | m_filters

## Additional Inherited Members

Public Types inherited from SurgSim::Framework::Accessible
typedef std::function< boost::any(void)> | GetterType
typedef std::function< void(boost::any)> | SetterType
typedef std::function< YAML::Node(void)> | EncoderType
typedef std::function< void(const YAML::Node *)> | DecoderType
Public Types inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
typedef ObjectFactory1< Component, std::string > | FactoryType
Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
static FactoryType & | getFactory ()

## Detailed Description

Given a DeformableCollisionRepresentation this filter can remove contacts on specific elements of that representation.

The contacts will be flatly removed.

## Member Typedef Documentation

## FilterMapType

typedef std::vector<std::pair<std::shared_ptr<SurgSim::Framework::Component>, std::vector<size_t> > > SurgSim::Collision::ElementContactFilter::FilterMapType

protected

## Constructor & Destructor Documentation

## ElementContactFilter()

SurgSim::Collision::ElementContactFilter::ElementContactFilter | ( | const std::string & | name | ) |

explicit

## Member Function Documentation

## doFilterContacts()

void SurgSim::Collision::ElementContactFilter::doFilterContacts | ( | const std::shared_ptr< Physics::PhysicsManagerState > & | state,
|  | const std::shared_ptr< CollisionPair > & | pair
| ) |  |

override protected virtual

Override this with the implementation of the filter, this has to be threadsafe, it will be called in parallel with different collision pairs.

Implements SurgSim::Collision::ContactFilter.

## doInitialize()

bool SurgSim::Collision::ElementContactFilter::doInitialize | ( |  | ) |

override virtual

Interface to be implemented by derived classes.

Returns
  True if component is initialized successfully; otherwise, false.

Implements SurgSim::Framework::Component.

## doUpdate()

void SurgSim::Collision::ElementContactFilter::doUpdate | ( | double | dt | ) |

override protected virtual

Implements SurgSim::Collision::ContactFilter.

## doWakeUp()

bool SurgSim::Collision::ElementContactFilter::doWakeUp | ( |  | ) |

override virtual

Interface to be implemented by derived classes.

Returns
  True if component is woken up successfully; otherwise, false.

Implements SurgSim::Framework::Component.

## executeFilter()

void SurgSim::Collision::ElementContactFilter::executeFilter | ( | const std::shared_ptr< CollisionPair > & | pair,
|  | size_t | pairIndex,
|  | const std::vector< size_t > & | filter
| ) |  |

private

Run the filter over the side of the collision pair indicated by pairIndex.

Parameters

  pair | the collision pair that is being filtered
  pairIndex | 0/1 representing first, and second values of the pair data structure
  filter | indices to filter

## getFilter()

const std::vector< size_t > & SurgSim::Collision::ElementContactFilter::getFilter | ( | const std::shared_ptr< Framework::Component > & | other | ) | const

Query the filters for one specific representation.

Parameters

  other | the representation

Returns
  the currently ignored indices for a specific element

## getFilterElements()

ElementContactFilter::FilterMapType SurgSim::Collision::ElementContactFilter::getFilterElements | ( |  | ) |

protected

## getRepresentation()

std::shared_ptr< SurgSim::Collision::Representation > SurgSim::Collision::ElementContactFilter::getRepresentation | ( |  | ) | const

Returns
  the collision representation used for filtering

## setFilter()

void SurgSim::Collision::ElementContactFilter::setFilter | ( | const std::shared_ptr< Framework::Component > & | other,
|  | const std::vector< size_t > & | indices
| ) |  |

Set the filter for one representation, this means any contects on the given indices for that representation will be removed.

Parameters

  other | The other side of the collisionpair
  indices | The indices to filter from the list of contacts

## setFilterElements()

void SurgSim::Collision::ElementContactFilter::setFilterElements | ( | const FilterMapType & | filterElements | ) |

protected

## setRepresentation()

void SurgSim::Collision::ElementContactFilter::setRepresentation | ( | const std::shared_ptr< SurgSim::Framework::Component > & | val | ) |

Sets the representation used for filtering, can only be used before initialization.

Parameters

  val | the collision representation to be used for filtering

## SURGSIM_CLASSNAME()

SurgSim::Collision::ElementContactFilter::SURGSIM_CLASSNAME | ( | SurgSim::Collision::ElementContactFilter |  | ) |

## Member Data Documentation

## m_filters

std::unordered_map<Framework::Component*, std::vector<size_t> > SurgSim::Collision::ElementContactFilter::m_filters

private

## m_logger

std::shared_ptr<SurgSim::Framework::Logger> SurgSim::Collision::ElementContactFilter::m_logger

private

## m_representation

std::shared_ptr<Collision::Representation> SurgSim::Collision::ElementContactFilter::m_representation

private

Representation whose contacts need to be filtered.

## m_writeBuffer

std::unordered_map<Framework::Component*, std::vector<size_t> > SurgSim::Collision::ElementContactFilter::m_writeBuffer

private

## m_writeMutex

boost::mutex SurgSim::Collision::ElementContactFilter::m_writeMutex

mutable private

The documentation for this class was generated from the following files:

- SurgSim/Collision/ElementContactFilter.h
- SurgSim/Collision/ElementContactFilter.cpp