Go to the documentation of this file.
16 #ifndef SURGSIM_PHYSICS_CCDCOLLISIONLOOP_H
17 #define SURGSIM_PHYSICS_CCDCOLLISIONLOOP_H
38 class ContactFiltering;
40 class ContactConstraintGeneration;
58 std::shared_ptr<PhysicsManagerState>
doUpdate(
const double& dt,
59 const std::shared_ptr<PhysicsManagerState>& state)
override;
90 bool findEarliestContact(
const std::vector<std::shared_ptr<Collision::CollisionPair>>& ccdPairs,
91 double* currentTimeOfImpact);
104 void backupContacts(std::vector<std::shared_ptr<Collision::CollisionPair>>* ccdPairs,
105 std::vector<std::list<std::shared_ptr<Collision::Contact>>>* oldContacts);
111 void restoreContacts(std::vector<std::shared_ptr<Collision::CollisionPair>>* ccdPairs,
112 std::vector<std::list<std::shared_ptr<Collision::Contact>>>* oldContacts);
116 void printContacts(
const std::vector<std::shared_ptr<Collision::CollisionPair>>& ccdPairs);
118 std::shared_ptr<SurgSim::Framework::Logger>
m_logger;
friend class CcdCollisionLoopTest_FilterContactsWithEpsilon_Test
Definition: CcdCollisionLoop.h:64
std::shared_ptr< SurgSim::Framework::Logger > m_logger
Definition: CcdCollisionLoop.h:118
void restoreContacts(std::vector< std::shared_ptr< Collision::CollisionPair >> *ccdPairs, std::vector< std::list< std::shared_ptr< Collision::Contact >>> *oldContacts)
Adds all of the backed up contacts back into the current contacts.
Definition: CcdCollisionLoop.cpp:194
std::unique_ptr< SolveMlcp > m_solveMlcp
Definition: CcdCollisionLoop.h:75
SURGSIM_CLASSNAME(SurgSim::Physics::CcdCollisionLoop)
std::unique_ptr< UpdateCcdData > m_updateCcdData
Definition: CcdCollisionLoop.h:71
std::unique_ptr< BuildMlcp > m_buildMlcp
Definition: CcdCollisionLoop.h:74
Definition: CompoundShapeToGraphics.cpp:29
void printContacts(const std::vector< std::shared_ptr< Collision::CollisionPair >> &ccdPairs)
Logs all of the contacts.
Definition: CcdCollisionLoop.cpp:212
bool findEarliestContact(const std::vector< std::shared_ptr< Collision::CollisionPair >> &ccdPairs, double *currentTimeOfImpact)
Takes all the contacts from ccdPairs, finds the first contact wrt contact time.
Definition: CcdCollisionLoop.cpp:139
std::unique_ptr< CcdCollision > m_ccdCollision
Definition: CcdCollisionLoop.h:70
std::shared_ptr< PhysicsManagerState > doUpdate(const double &dt, const std::shared_ptr< PhysicsManagerState > &state) override
Override this function to implement the computations specific behavior.
Definition: CcdCollisionLoop.cpp:56
std::unique_ptr< ContactConstraintGeneration > m_constraintGeneration
Definition: CcdCollisionLoop.h:73
CcdCollisionLoop(bool copyState)
Constructor.
Definition: CcdCollisionLoop.cpp:36
void filterLaterContacts(std::vector< std::shared_ptr< Collision::CollisionPair >> *ccdPairs, double epsilon, double contactTime)
Removes all contacts with contact time greater than the first contact time + epsilon.
Definition: CcdCollisionLoop.cpp:169
std::unique_ptr< ContactFiltering > m_contactFilter
Definition: CcdCollisionLoop.h:72
size_t m_maxIterations
maximum number of iterations to run
Definition: CcdCollisionLoop.h:79
void backupContacts(std::vector< std::shared_ptr< Collision::CollisionPair >> *ccdPairs, std::vector< std::list< std::shared_ptr< Collision::Contact >>> *oldContacts)
Backs up all current contacts into oldContacts and then clears the ccdPairs.
Definition: CcdCollisionLoop.cpp:183
friend class CcdCollisionLoopTest_FilterContacts_Test
Definition: CcdCollisionLoop.h:63
std::unique_ptr< PushResults > m_pushResults
Definition: CcdCollisionLoop.h:76
Definition: CcdCollisionLoop.h:46
~CcdCollisionLoop()
Destructor.
Definition: CcdCollisionLoop.cpp:51
Encapsulates a calculation over a selection of objects, needs to be subclassed to be used.
Definition: Computation.h:32
double m_epsilonFactor
epsilon as a fraction of dt, i.e.
Definition: CcdCollisionLoop.h:84