diff options
author | Luca Rood <dev@lucarood.com> | 2017-07-21 12:53:13 +0300 |
---|---|---|
committer | Luca Rood <dev@lucarood.com> | 2017-07-21 15:47:26 +0300 |
commit | 1c4c288727214fa0588d66556a1cdf71755d70b4 (patch) | |
tree | 1433952be7e88cc7d09e8563831995290e3013ce /intern/itasc | |
parent | 9edb7e49d7e5e69385f3a0434c568c79fad88cd8 (diff) |
Pass EvaluationContext argument everywhere
Note that some little parts of code have been dissabled because eval_ctx
was not available there. This should be resolved once DerivedMesh is
replaced.
Diffstat (limited to 'intern/itasc')
-rw-r--r-- | intern/itasc/FixedObject.hpp | 2 | ||||
-rw-r--r-- | intern/itasc/MovingFrame.cpp | 4 | ||||
-rw-r--r-- | intern/itasc/MovingFrame.hpp | 5 | ||||
-rw-r--r-- | intern/itasc/Scene.cpp | 4 | ||||
-rw-r--r-- | intern/itasc/Scene.hpp | 2 | ||||
-rw-r--r-- | intern/itasc/UncontrolledObject.hpp | 5 | ||||
-rw-r--r-- | intern/itasc/WorldObject.hpp | 2 |
7 files changed, 14 insertions, 10 deletions
diff --git a/intern/itasc/FixedObject.hpp b/intern/itasc/FixedObject.hpp index ad26e7cb2d6..02c1804073c 100644 --- a/intern/itasc/FixedObject.hpp +++ b/intern/itasc/FixedObject.hpp @@ -21,7 +21,7 @@ public: int addFrame(const std::string& name, const Frame& frame); - virtual void updateCoordinates(const Timestamp& timestamp) {}; + virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) {}; virtual int addEndEffector(const std::string& name); virtual bool finalize(); virtual const Frame& getPose(const unsigned int frameIndex); diff --git a/intern/itasc/MovingFrame.cpp b/intern/itasc/MovingFrame.cpp index 90ebe091eb5..b1815ddd0de 100644 --- a/intern/itasc/MovingFrame.cpp +++ b/intern/itasc/MovingFrame.cpp @@ -90,7 +90,7 @@ bool MovingFrame::setCallback(MovingFrameCallback _function, void* _param) return true; } -void MovingFrame::updateCoordinates(const Timestamp& timestamp) +void MovingFrame::updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) { // don't compute the velocity during substepping, it is assumed constant. if (!timestamp.substep) { @@ -98,7 +98,7 @@ void MovingFrame::updateCoordinates(const Timestamp& timestamp) if (!timestamp.reiterate) { cacheAvail = popInternalFrame(timestamp.cacheTimestamp); if (m_function) - (*m_function)(timestamp, m_internalPose, m_nextPose, m_param); + (*m_function)(eval_ctx, timestamp, m_internalPose, m_nextPose, m_param); } // only compute velocity if we have a previous pose if (cacheAvail && timestamp.interpolate) { diff --git a/intern/itasc/MovingFrame.hpp b/intern/itasc/MovingFrame.hpp index d2a956d7312..89519832840 100644 --- a/intern/itasc/MovingFrame.hpp +++ b/intern/itasc/MovingFrame.hpp @@ -11,10 +11,11 @@ #include "UncontrolledObject.hpp" #include <vector> +struct EvaluationContext; namespace iTaSC{ -typedef bool (*MovingFrameCallback)(const Timestamp& timestamp, const Frame& _current, Frame& _next, void *param); +typedef bool (*MovingFrameCallback)(struct EvaluationContext *eval_ctx, const Timestamp& timestamp, const Frame& _current, Frame& _next, void *param); class MovingFrame: public UncontrolledObject { public: @@ -24,7 +25,7 @@ public: bool setFrame(const Frame& frame); bool setCallback(MovingFrameCallback _function, void* _param); - virtual void updateCoordinates(const Timestamp& timestamp); + virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp); virtual void updateKinematics(const Timestamp& timestamp); virtual void pushCache(const Timestamp& timestamp); virtual void initCache(Cache *_cache); diff --git a/intern/itasc/Scene.cpp b/intern/itasc/Scene.cpp index 5768a994970..fd8b006d19c 100644 --- a/intern/itasc/Scene.cpp +++ b/intern/itasc/Scene.cpp @@ -257,7 +257,7 @@ bool Scene::getConstraintPose(ConstraintSet* constraint, void *_param, KDL::Fram return true; } -bool Scene::update(double timestamp, double timestep, unsigned int numsubstep, bool reiterate, bool cache, bool interpolate) +bool Scene::update(struct EvaluationContext *eval_ctx, double timestamp, double timestep, unsigned int numsubstep, bool reiterate, bool cache, bool interpolate) { // we must have valid timestep and timestamp if (timestamp < KDL::epsilon || timestep < 0.0) @@ -316,7 +316,7 @@ bool Scene::update(double timestamp, double timestep, unsigned int numsubstep, b } } if (os->object->getType()==Object::UnControlled && ((UncontrolledObject*)os->object)->getNrOfCoordinates() != 0) { - ((UncontrolledObject*)(os->object))->updateCoordinates(ts); + ((UncontrolledObject*)(os->object))->updateCoordinates(eval_ctx, ts); if (!ts.substep) { // velocity of uncontrolled object remains constant during substepping project(m_xdot,os->coordinaterange) = ((UncontrolledObject*)(os->object))->getXudot(); diff --git a/intern/itasc/Scene.hpp b/intern/itasc/Scene.hpp index 5ed031b543e..0039be07584 100644 --- a/intern/itasc/Scene.hpp +++ b/intern/itasc/Scene.hpp @@ -39,7 +39,7 @@ public: bool addSolver(Solver* _solver); bool addCache(Cache* _cache); bool initialize(); - bool update(double timestamp, double timestep, unsigned int numsubstep=1, bool reiterate=false, bool cache=true, bool interpolate=true); + bool update(struct EvaluationContext *eval_ctx, double timestamp, double timestep, unsigned int numsubstep=1, bool reiterate=false, bool cache=true, bool interpolate=true); bool setParam(SceneParam paramId, double value); EIGEN_MAKE_ALIGNED_OPERATOR_NEW diff --git a/intern/itasc/UncontrolledObject.hpp b/intern/itasc/UncontrolledObject.hpp index 81445538fa6..889bc742c6d 100644 --- a/intern/itasc/UncontrolledObject.hpp +++ b/intern/itasc/UncontrolledObject.hpp @@ -11,6 +11,9 @@ #include "eigen_types.hpp" #include "Object.hpp" + +struct EvaluationContext; + namespace iTaSC{ class UncontrolledObject: public Object { @@ -26,7 +29,7 @@ public: virtual void initialize(unsigned int _nu, unsigned int _nf); virtual const e_matrix& getJu(unsigned int frameIndex) const; virtual const e_vector& getXudot() const {return m_xudot;} - virtual void updateCoordinates(const Timestamp& timestamp)=0; + virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp)=0; virtual const unsigned int getNrOfCoordinates(){return m_nu;}; virtual const unsigned int getNrOfFrames(){return m_nf;}; diff --git a/intern/itasc/WorldObject.hpp b/intern/itasc/WorldObject.hpp index 99756dcd684..b992445ab10 100644 --- a/intern/itasc/WorldObject.hpp +++ b/intern/itasc/WorldObject.hpp @@ -16,7 +16,7 @@ public: WorldObject(); virtual ~WorldObject(); - virtual void updateCoordinates(const Timestamp& timestamp) {}; + virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) {}; virtual void updateKinematics(const Timestamp& timestamp) {}; virtual void pushCache(const Timestamp& timestamp) {}; virtual void initCache(Cache *_cache) {}; |