16 #ifndef SURGSIM_COLLISION_ELEMENTCONTACTFILTER_H 17 #define SURGSIM_COLLISION_ELEMENTCONTACTFILTER_H 19 #include "SurgSim/Collision/ContactFilter.h" 20 #include "SurgSim/DataStructures/Location.h" 21 #include "SurgSim/Framework/LockedContainer.h" 28 class PhysicsManagerState;
37 SURGSIM_STATIC_REGISTRATION(ElementContactFilter);
48 bool doInitialize()
override;
50 bool doWakeUp()
override;
56 void setFilter(
const std::shared_ptr<Framework::Component>& other,
const std::vector<size_t>& indices);
61 const std::vector<size_t>& getFilter(
const std::shared_ptr<Framework::Component>& other)
const;
65 void setRepresentation(
const std::shared_ptr<SurgSim::Framework::Component>& val);
68 std::shared_ptr<SurgSim::Collision::Representation> getRepresentation()
const;
72 typedef std::vector<std::pair<std::shared_ptr<SurgSim::Framework::Component>, std::vector<size_t>>> FilterMapType;
74 void setFilterElements(
const FilterMapType& filterElements);
76 FilterMapType getFilterElements();
78 void doFilterContacts(
79 const std::shared_ptr<Physics::PhysicsManagerState>& state,
80 const std::shared_ptr<CollisionPair>& pair)
override;
83 void doUpdate(
double dt)
override;
87 std::shared_ptr<SurgSim::Framework::Logger> m_logger;
90 std::shared_ptr<Collision::Representation> m_representation;
92 mutable boost::mutex m_writeMutex;
93 std::unordered_map<Framework::Component*, std::vector<size_t>> m_writeBuffer;
95 std::unordered_map<Framework::Component*, std::vector<size_t>> m_filters;
102 const std::shared_ptr<CollisionPair>& pair,
104 const std::vector<size_t>& filter);
114 const T& pairAt(
const std::pair<T, T>& p,
size_t i)
116 SURGSIM_ASSERT(i == 0 || i == 1) <<
"Index for pair must be 0 or 1.";
117 return (i == 0) ? p.first : p.second;
127 T& pairAt(std::pair<T, T>& p,
size_t i)
129 SURGSIM_ASSERT(i == 0 || i == 1) <<
"Index for pair must be 0 or 1.";
130 return (i == 0) ? p.first : p.second;
Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
#define SURGSIM_ASSERT(condition)
Assert that condition is true.
Definition: Assert.h:77