From 1b462e5a51458e36df886838ee272b4bb18ed4da Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Aug 2017 12:45:11 +1000 Subject: Pass EvaluationContext instead of bContext 2.8x branch added bContext arg in many places, pass eval-context instead since its not simple to reason about what what nested functions do when they can access and change almost anything. Also use const to prevent unexpected modifications. This fixes crash loading files with shadows, since off-screen buffers use a NULL context for rendering. --- intern/itasc/FixedObject.hpp | 2 +- intern/itasc/MovingFrame.cpp | 2 +- intern/itasc/MovingFrame.hpp | 9 +++++++-- intern/itasc/Scene.cpp | 2 +- intern/itasc/Scene.hpp | 2 +- intern/itasc/UncontrolledObject.hpp | 2 +- intern/itasc/WorldObject.hpp | 2 +- 7 files changed, 13 insertions(+), 8 deletions(-) (limited to 'intern/itasc') diff --git a/intern/itasc/FixedObject.hpp b/intern/itasc/FixedObject.hpp index 02c1804073c..e768157ed2b 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(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) {}; + virtual void updateCoordinates(const 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 b1815ddd0de..83e15bb59d9 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(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) +void MovingFrame::updateCoordinates(const struct EvaluationContext *eval_ctx, const Timestamp& timestamp) { // don't compute the velocity during substepping, it is assumed constant. if (!timestamp.substep) { diff --git a/intern/itasc/MovingFrame.hpp b/intern/itasc/MovingFrame.hpp index 89519832840..719e06b4bf7 100644 --- a/intern/itasc/MovingFrame.hpp +++ b/intern/itasc/MovingFrame.hpp @@ -15,7 +15,12 @@ struct EvaluationContext; namespace iTaSC{ -typedef bool (*MovingFrameCallback)(struct EvaluationContext *eval_ctx, const Timestamp& timestamp, const Frame& _current, Frame& _next, void *param); +typedef bool (*MovingFrameCallback)( + const struct EvaluationContext *eval_ctx, + const Timestamp& timestamp, + const Frame& _current, + Frame& _next, + void *param); class MovingFrame: public UncontrolledObject { public: @@ -25,7 +30,7 @@ public: bool setFrame(const Frame& frame); bool setCallback(MovingFrameCallback _function, void* _param); - virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp); + virtual void updateCoordinates(const 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 fd8b006d19c..93f316783ba 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(struct EvaluationContext *eval_ctx, double timestamp, double timestep, unsigned int numsubstep, bool reiterate, bool cache, bool interpolate) +bool Scene::update(const 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) diff --git a/intern/itasc/Scene.hpp b/intern/itasc/Scene.hpp index 0039be07584..ebbec561a6e 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(struct EvaluationContext *eval_ctx, double timestamp, double timestep, unsigned int numsubstep=1, bool reiterate=false, bool cache=true, bool interpolate=true); + bool update(const 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 889bc742c6d..d932974a24d 100644 --- a/intern/itasc/UncontrolledObject.hpp +++ b/intern/itasc/UncontrolledObject.hpp @@ -29,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(struct EvaluationContext *eval_ctx, const Timestamp& timestamp)=0; + virtual void updateCoordinates(const 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 b992445ab10..9876090e128 100644 --- a/intern/itasc/WorldObject.hpp +++ b/intern/itasc/WorldObject.hpp @@ -16,7 +16,7 @@ public: WorldObject(); virtual ~WorldObject(); - virtual void updateCoordinates(struct EvaluationContext *eval_ctx, const Timestamp& timestamp) {}; + virtual void updateCoordinates(const struct EvaluationContext *eval_ctx, const Timestamp& timestamp) {}; virtual void updateKinematics(const Timestamp& timestamp) {}; virtual void pushCache(const Timestamp& timestamp) {}; virtual void initCache(Cache *_cache) {}; -- cgit v1.2.3