16 #ifndef SURGSIM_PHYSICS_PHYSICSMANAGER_H 17 #define SURGSIM_PHYSICS_PHYSICSMANAGER_H 19 #include <boost/thread/mutex.hpp> 44 class ConstraintComponent;
45 class ContactConstraintGeneration;
53 class UpdateCollisionRepresentations;
66 virtual int getType()
const override;
68 friend class PhysicsManagerTest;
78 void addExcludedCollisionPair(std::shared_ptr<SurgSim::Collision::Representation> representation1,
79 std::shared_ptr<SurgSim::Collision::Representation> representation2);
84 void removeExcludedCollisionPair(std::shared_ptr<SurgSim::Collision::Representation> representation1,
85 std::shared_ptr<SurgSim::Collision::Representation> representation2);
90 bool executeAdditions(
const std::shared_ptr<SurgSim::Framework::Component>& component)
override;
91 bool executeRemovals(
const std::shared_ptr<SurgSim::Framework::Component>& component)
override;
96 virtual bool doInitialize()
override;
97 virtual bool doStartUp()
override;
98 virtual bool doUpdate(
double dt)
override;
101 void initializeComputations(
bool copyState);
109 std::vector<std::shared_ptr<SurgSim::Collision::CollisionPair>>::iterator findExcludedCollisionPair(
110 std::shared_ptr<SurgSim::Collision::Representation> representation1,
111 std::shared_ptr<SurgSim::Collision::Representation> representation2);
Definition: DriveElementFromInputBehavior.cpp:27
PhyicsManager handles the physics and motion calculation, it uses Computations to separate the algori...
Definition: PhysicsManager.h:57
std::unique_ptr< PreUpdate > m_preUpdateStep
Definition: PhysicsManager.h:127
std::unique_ptr< DcdCollision > m_dcdCollisionStep
Definition: PhysicsManager.h:129
std::vector< std::shared_ptr< SurgSim::Collision::Representation > > m_collisionRepresentations
Definition: PhysicsManager.h:115
Base Component Manager class.
Definition: ComponentManager.h:49
std::unique_ptr< SolveMlcp > m_solveMlcpStep
Definition: PhysicsManager.h:132
std::unique_ptr< BuildMlcp > m_buildMlcpStep
Definition: PhysicsManager.h:131
std::unique_ptr< PushResults > m_pushResultsStep
Definition: PhysicsManager.h:133
std::unique_ptr< FreeMotion > m_freeMotionStep
Definition: PhysicsManager.h:128
std::vector< std::shared_ptr< Representation > > m_representations
Definition: PhysicsManager.h:113
std::unique_ptr< PostUpdate > m_postUpdateStep
Definition: PhysicsManager.h:134
A simple thread-safe data container that can support multiple writers and readers.
Definition: LockedContainer.h:54
Definition: PhysicsManagerState.h:46
boost::mutex m_excludedCollisionPairMutex
Mutex to protect m_excludedCollisionPairs from being read/written simultaneously. ...
Definition: PhysicsManager.h:123
std::unique_ptr< ContactConstraintGeneration > m_constraintGenerationStep
Definition: PhysicsManager.h:130
std::vector< std::shared_ptr< SurgSim::Collision::CollisionPair > > m_excludedCollisionPairs
List of Collision::Representation pairs to be excluded from contact generation.
Definition: PhysicsManager.h:120
SurgSim::Framework::LockedContainer< SurgSim::Physics::PhysicsManagerState > m_finalState
A thread-safe copy of the last PhysicsManagerState in the previous update.
Definition: PhysicsManager.h:139
std::unique_ptr< UpdateCollisionRepresentations > m_updateCollisionRepresentationsStep
Definition: PhysicsManager.h:135
std::vector< std::shared_ptr< ConstraintComponent > > m_constraintComponents
Definition: PhysicsManager.h:117