From 363feed12778e525e1c2758df197cb67b31032eb Mon Sep 17 00:00:00 2001 From: Michael Koval Date: Thu, 17 Mar 2016 15:05:09 -0400 Subject: [PATCH 1/2] Added get/setLCPSolver to ConstraintSolver. --- dart/constraint/ConstraintSolver.cpp | 14 ++++++++++++++ dart/constraint/ConstraintSolver.h | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/dart/constraint/ConstraintSolver.cpp b/dart/constraint/ConstraintSolver.cpp index eb933407a9190..73acbe78cc027 100644 --- a/dart/constraint/ConstraintSolver.cpp +++ b/dart/constraint/ConstraintSolver.cpp @@ -261,6 +261,20 @@ collision::CollisionDetector* ConstraintSolver::getCollisionDetector() const return mCollisionDetector.get(); } +//============================================================================== +void ConstraintSolver::setLCPSolver(std::unique_ptr _lcpSolver) +{ + assert(_lcpSolver && "Invalid LCP solver."); + + mLCPSolver = std::move(_lcpSolver); +} + +//============================================================================== +LCPSolver* ConstraintSolver::getLCPSolver() const +{ + return mLCPSolver.get(); +} + //============================================================================== void ConstraintSolver::solve() { diff --git a/dart/constraint/ConstraintSolver.h b/dart/constraint/ConstraintSolver.h index 8c662a7342a95..d159055f9e37a 100644 --- a/dart/constraint/ConstraintSolver.h +++ b/dart/constraint/ConstraintSolver.h @@ -115,6 +115,12 @@ class ConstraintSolver /// Get collision detector collision::CollisionDetector* getCollisionDetector() const; + /// Set LCP solver + void setLCPSolver(std::unique_ptr _lcpSolver); + + /// Get LCP solver + LCPSolver* getLCPSolver() const; + /// Solve constraint impulses and apply them to the skeletons void solve(); From cd667d6a09e2522dbeb02a7d497aa951858016d1 Mon Sep 17 00:00:00 2001 From: Michael Koval Date: Thu, 17 Mar 2016 15:05:36 -0400 Subject: [PATCH 2/2] Switch to taking unique_ptr by value. See this StackOverflow post for justification: http://stackoverflow.com/a/8114913/111426 --- dart/constraint/ConstraintSolver.cpp | 2 +- dart/constraint/ConstraintSolver.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dart/constraint/ConstraintSolver.cpp b/dart/constraint/ConstraintSolver.cpp index 73acbe78cc027..d877348f00a81 100644 --- a/dart/constraint/ConstraintSolver.cpp +++ b/dart/constraint/ConstraintSolver.cpp @@ -243,7 +243,7 @@ void ConstraintSolver::setCollisionDetector( //============================================================================== void ConstraintSolver::setCollisionDetector( - std::unique_ptr&& _collisionDetector) + std::unique_ptr _collisionDetector) { assert(_collisionDetector && "Invalid collision detector."); diff --git a/dart/constraint/ConstraintSolver.h b/dart/constraint/ConstraintSolver.h index d159055f9e37a..aa01a7a18e1a8 100644 --- a/dart/constraint/ConstraintSolver.h +++ b/dart/constraint/ConstraintSolver.h @@ -110,7 +110,7 @@ class ConstraintSolver /// Set collision detector void setCollisionDetector( - std::unique_ptr&& _collisionDetector); + std::unique_ptr _collisionDetector); /// Get collision detector collision::CollisionDetector* getCollisionDetector() const;