Pass EvaluationContext instead of bContext
authorCampbell Barton <ideasman42@gmail.com>
Wed, 16 Aug 2017 02:45:11 +0000 (12:45 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 16 Aug 2017 02:46:04 +0000 (12:46 +1000)
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.

185 files changed:
intern/itasc/FixedObject.hpp
intern/itasc/MovingFrame.cpp
intern/itasc/MovingFrame.hpp
intern/itasc/Scene.cpp
intern/itasc/Scene.hpp
intern/itasc/UncontrolledObject.hpp
intern/itasc/WorldObject.hpp
source/blender/blenkernel/BKE_DerivedMesh.h
source/blender/blenkernel/BKE_anim.h
source/blender/blenkernel/BKE_animsys.h
source/blender/blenkernel/BKE_armature.h
source/blender/blenkernel/BKE_cloth.h
source/blender/blenkernel/BKE_constraint.h
source/blender/blenkernel/BKE_crazyspace.h
source/blender/blenkernel/BKE_curve.h
source/blender/blenkernel/BKE_data_transfer.h
source/blender/blenkernel/BKE_displist.h
source/blender/blenkernel/BKE_dynamicpaint.h
source/blender/blenkernel/BKE_editmesh.h
source/blender/blenkernel/BKE_effect.h
source/blender/blenkernel/BKE_fluidsim.h
source/blender/blenkernel/BKE_group.h
source/blender/blenkernel/BKE_lattice.h
source/blender/blenkernel/BKE_layer.h
source/blender/blenkernel/BKE_material.h
source/blender/blenkernel/BKE_mball.h
source/blender/blenkernel/BKE_mball_tessellate.h
source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/BKE_modifier.h
source/blender/blenkernel/BKE_multires.h
source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/BKE_paint.h
source/blender/blenkernel/BKE_particle.h
source/blender/blenkernel/BKE_rigidbody.h
source/blender/blenkernel/BKE_scene.h
source/blender/blenkernel/BKE_sequencer.h
source/blender/blenkernel/BKE_smoke.h
source/blender/blenkernel/BKE_softbody.h
source/blender/blenkernel/BKE_world.h
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/anim_sys.c
source/blender/blenkernel/intern/armature.c
source/blender/blenkernel/intern/armature_update.c
source/blender/blenkernel/intern/cloth.c
source/blender/blenkernel/intern/constraint.c
source/blender/blenkernel/intern/crazyspace.c
source/blender/blenkernel/intern/curve.c
source/blender/blenkernel/intern/data_transfer.c
source/blender/blenkernel/intern/displist.c
source/blender/blenkernel/intern/dynamicpaint.c
source/blender/blenkernel/intern/editderivedmesh.c
source/blender/blenkernel/intern/effect.c
source/blender/blenkernel/intern/fluidsim.c
source/blender/blenkernel/intern/group.c
source/blender/blenkernel/intern/lattice.c
source/blender/blenkernel/intern/layer.c
source/blender/blenkernel/intern/material.c
source/blender/blenkernel/intern/mball.c
source/blender/blenkernel/intern/mball_tessellate.c
source/blender/blenkernel/intern/mesh.c
source/blender/blenkernel/intern/modifier.c
source/blender/blenkernel/intern/multires.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/object_dupli.c
source/blender/blenkernel/intern/object_update.c
source/blender/blenkernel/intern/paint.c
source/blender/blenkernel/intern/particle.c
source/blender/blenkernel/intern/particle_system.c
source/blender/blenkernel/intern/rigidbody.c
source/blender/blenkernel/intern/scene.c
source/blender/blenkernel/intern/smoke.c
source/blender/blenkernel/intern/softbody.c
source/blender/blenkernel/intern/world.c
source/blender/collada/AnimationExporter.cpp
source/blender/collada/AnimationExporter.h
source/blender/collada/ArmatureExporter.cpp
source/blender/collada/ArmatureExporter.h
source/blender/collada/ControllerExporter.cpp
source/blender/collada/ControllerExporter.h
source/blender/collada/DocumentExporter.cpp
source/blender/collada/DocumentExporter.h
source/blender/collada/GeometryExporter.cpp
source/blender/collada/GeometryExporter.h
source/blender/collada/SceneExporter.cpp
source/blender/collada/SceneExporter.h
source/blender/collada/collada.cpp
source/blender/collada/collada.h
source/blender/collada/collada_utils.cpp
source/blender/collada/collada_utils.h
source/blender/editors/armature/armature_select.c
source/blender/editors/armature/editarmature_sketch.c
source/blender/editors/curve/editcurve_paint.c
source/blender/editors/gpencil/gpencil_edit.c
source/blender/editors/gpencil/gpencil_paint.c
source/blender/editors/gpencil/gpencil_utils.c
source/blender/editors/include/ED_mesh.h
source/blender/editors/include/ED_particle.h
source/blender/editors/include/ED_view3d.h
source/blender/editors/interface/interface_eyedropper.c
source/blender/editors/manipulator_library/manipulator_library_presets.c
source/blender/editors/mesh/editface.c
source/blender/editors/mesh/editmesh_knife.c
source/blender/editors/mesh/editmesh_loopcut.c
source/blender/editors/mesh/editmesh_path.c
source/blender/editors/mesh/editmesh_select.c
source/blender/editors/mesh/meshtools.c
source/blender/editors/metaball/mball_edit.c
source/blender/editors/object/object_transform.c
source/blender/editors/physics/particle_edit.c
source/blender/editors/physics/particle_object.c
source/blender/editors/sculpt_paint/paint_image_proj.c
source/blender/editors/sculpt_paint/paint_utils.c
source/blender/editors/sculpt_paint/paint_vertex.c
source/blender/editors/space_view3d/drawarmature.c
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/view3d_draw.c
source/blender/editors/space_view3d/view3d_draw_legacy.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/space_view3d/view3d_intern.h
source/blender/editors/space_view3d/view3d_iterators.c
source/blender/editors/space_view3d/view3d_select.c
source/blender/editors/space_view3d/view3d_view.c
source/blender/editors/transform/transform_conversions.c
source/blender/ikplugin/BIK_api.h
source/blender/ikplugin/intern/ikplugin_api.c
source/blender/ikplugin/intern/ikplugin_api.h
source/blender/ikplugin/intern/iksolver_plugin.c
source/blender/ikplugin/intern/iksolver_plugin.h
source/blender/ikplugin/intern/itasc_plugin.cpp
source/blender/ikplugin/intern/itasc_plugin.h
source/blender/modifiers/intern/MOD_armature.c
source/blender/modifiers/intern/MOD_array.c
source/blender/modifiers/intern/MOD_bevel.c
source/blender/modifiers/intern/MOD_boolean.c
source/blender/modifiers/intern/MOD_build.c
source/blender/modifiers/intern/MOD_cast.c
source/blender/modifiers/intern/MOD_cloth.c
source/blender/modifiers/intern/MOD_collision.c
source/blender/modifiers/intern/MOD_correctivesmooth.c
source/blender/modifiers/intern/MOD_curve.c
source/blender/modifiers/intern/MOD_datatransfer.c
source/blender/modifiers/intern/MOD_decimate.c
source/blender/modifiers/intern/MOD_displace.c
source/blender/modifiers/intern/MOD_dynamicpaint.c
source/blender/modifiers/intern/MOD_edgesplit.c
source/blender/modifiers/intern/MOD_explode.c
source/blender/modifiers/intern/MOD_fluidsim.c
source/blender/modifiers/intern/MOD_hook.c
source/blender/modifiers/intern/MOD_laplaciandeform.c
source/blender/modifiers/intern/MOD_laplaciansmooth.c
source/blender/modifiers/intern/MOD_lattice.c
source/blender/modifiers/intern/MOD_mask.c
source/blender/modifiers/intern/MOD_meshcache.c
source/blender/modifiers/intern/MOD_meshdeform.c
source/blender/modifiers/intern/MOD_meshsequencecache.c
source/blender/modifiers/intern/MOD_mirror.c
source/blender/modifiers/intern/MOD_multires.c
source/blender/modifiers/intern/MOD_normal_edit.c
source/blender/modifiers/intern/MOD_ocean.c
source/blender/modifiers/intern/MOD_particleinstance.c
source/blender/modifiers/intern/MOD_particlesystem.c
source/blender/modifiers/intern/MOD_remesh.c
source/blender/modifiers/intern/MOD_screw.c
source/blender/modifiers/intern/MOD_shapekey.c
source/blender/modifiers/intern/MOD_shrinkwrap.c
source/blender/modifiers/intern/MOD_simpledeform.c
source/blender/modifiers/intern/MOD_skin.c
source/blender/modifiers/intern/MOD_smoke.c
source/blender/modifiers/intern/MOD_smooth.c
source/blender/modifiers/intern/MOD_softbody.c
source/blender/modifiers/intern/MOD_solidify.c
source/blender/modifiers/intern/MOD_subsurf.c
source/blender/modifiers/intern/MOD_surface.c
source/blender/modifiers/intern/MOD_surfacedeform.c
source/blender/modifiers/intern/MOD_triangulate.c
source/blender/modifiers/intern/MOD_uvproject.c
source/blender/modifiers/intern/MOD_uvwarp.c
source/blender/modifiers/intern/MOD_warp.c
source/blender/modifiers/intern/MOD_wave.c
source/blender/modifiers/intern/MOD_weightvgedit.c
source/blender/modifiers/intern/MOD_weightvgmix.c
source/blender/modifiers/intern/MOD_weightvgproximity.c
source/blender/modifiers/intern/MOD_wireframe.c
source/blender/windowmanager/manipulators/intern/wm_manipulator_map.c
source/blenderplayer/bad_level_call_stubs/stubs.c

index 02c1804073c4e1f37ad0b051c4768de372b075e3..e768157ed2b306760855a177b7cd6e8ae0c6a545 100644 (file)
@@ -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);
index b1815ddd0de175477e3acab4650a886d178060c2..83e15bb59d99b64eab6d1e95b73b2760cb6fb444 100644 (file)
@@ -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) {
index 89519832840dacfe5aa980c4e51c0dcf323f74d8..719e06b4bf7999a23e2a0ccce02c93679fbdd972 100644 (file)
@@ -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);
index fd8b006d19c40ead041e0c65de72fe81ba1df255..93f316783ba2a83fc09aa23ab58a6c245827ec02 100644 (file)
@@ -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)
index 0039be07584451b8309e3fb2afc14308683e1362..ebbec561a6e28fb64f72fcf87d864e56b6bc4bf8 100644 (file)
@@ -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
index 889bc742c6da1a82b1aebefebc6513912a31afd6..d932974a24d5d46a5b00c44ff15dc775dcb6ba3b 100644 (file)
@@ -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;};
 
index b992445ab10afdf836ad5fd291dbad0490bc6162..9876090e1280f9438e426496d344ce6159ecec8f 100644 (file)
@@ -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) {};
index 6c4a090904a0cdfce67b890c05c0ebea4d5b53c8..c86595cd50918048a052e1580c77c890e414cf28 100644 (file)
@@ -658,18 +658,18 @@ void mesh_get_mapped_verts_coords(DerivedMesh *dm, float (*r_cos)[3], const int
 
 /* */
 DerivedMesh *mesh_get_derived_final(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 DerivedMesh *mesh_get_derived_deform(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 
 DerivedMesh *mesh_create_derived_for_modifier(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
         struct ModifierData *md, int build_shapekey_layers);
 
 DerivedMesh *mesh_create_derived_render(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 
 DerivedMesh *getEditDerivedBMesh(
@@ -677,37 +677,37 @@ DerivedMesh *getEditDerivedBMesh(
         float (*vertexCos)[3]);
 
 DerivedMesh *mesh_create_derived_index_render(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask, int index);
 
 /* same as above but wont use render settings */
 DerivedMesh *mesh_create_derived(struct Mesh *me, float (*vertCos)[3]);
 DerivedMesh *mesh_create_derived_view(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 DerivedMesh *mesh_create_derived_no_deform(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob, float (*vertCos)[3],
         CustomDataMask dataMask);
 DerivedMesh *mesh_create_derived_no_deform_render(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob, float (*vertCos)[3],
         CustomDataMask dataMask);
 /* for gameengine */
 DerivedMesh *mesh_create_derived_no_virtual(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask);
 DerivedMesh *mesh_create_derived_physics(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask);
 
 DerivedMesh *editbmesh_get_derived_base(
         struct Object *ob, struct BMEditMesh *em, CustomDataMask data_mask);
 DerivedMesh *editbmesh_get_derived_cage(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *,
         struct BMEditMesh *em, CustomDataMask dataMask);
 DerivedMesh *editbmesh_get_derived_cage_and_final(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *,
         struct BMEditMesh *em, CustomDataMask dataMask,
         DerivedMesh **r_final);
 
@@ -716,7 +716,7 @@ DerivedMesh *object_get_derived_final(struct Object *ob, const bool for_render);
 float (*editbmesh_get_vertex_cos(struct BMEditMesh *em, int *r_numVerts))[3];
 bool editbmesh_modifier_is_enabled(struct Scene *scene, struct ModifierData *md, DerivedMesh *dm);
 void makeDerivedMesh(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct BMEditMesh *em,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct BMEditMesh *em,
         CustomDataMask dataMask, const bool build_shapekey_layers);
 
 void weight_to_rgb(float r_rgb[3], const float weight);
index ef8a1c7e417cdbbfd534bbeb3736135af055ee8d..9beff85b87c8a0b41439e2d2c0737abf47a2a48e 100644 (file)
@@ -66,8 +66,8 @@ int where_on_path(struct Object *ob, float ctime, float vec[4], float dir[3], fl
 /* ---------------------------------------------------- */
 /* Dupli-Geometry */
 
-struct ListBase *object_duplilist_ex(struct EvaluationContext *eval_ctx, struct Scene *sce, struct Object *ob, bool update);
-struct ListBase *object_duplilist(struct EvaluationContext *eval_ctx, struct Scene *sce, struct Object *ob);
+struct ListBase *object_duplilist_ex(const struct EvaluationContext *eval_ctx, struct Scene *sce, struct Object *ob, bool update);
+struct ListBase *object_duplilist(const struct EvaluationContext *eval_ctx, struct Scene *sce, struct Object *ob);
 void free_object_duplilist(struct ListBase *lb);
 int count_duplilist(struct Object *ob);
 
@@ -81,7 +81,7 @@ typedef struct DupliApplyData {
        DupliExtraData *extra;
 } DupliApplyData;
 
-DupliApplyData *duplilist_apply(struct EvaluationContext *eval_ctx, struct Object *ob, struct Scene *scene, struct ListBase *duplilist);
+DupliApplyData *duplilist_apply(const struct EvaluationContext *eval_ctx, struct Object *ob, struct Scene *scene, struct ListBase *duplilist);
 void duplilist_restore(struct ListBase *duplilist, DupliApplyData *apply_data);
 void duplilist_free_apply_data(DupliApplyData *apply_data);
 
index 7984202f03fc295cec49fe785e9258f7412f738f..622767baa1039addf9876e5cc8358dde58ccff9c 100644 (file)
@@ -195,8 +195,8 @@ void animsys_evaluate_action_group(struct PointerRNA *ptr, struct bAction *act,
 
 struct EvaluationContext;
 
-void BKE_animsys_eval_animdata(struct EvaluationContext *eval_ctx, struct ID *id);
-void BKE_animsys_eval_driver(struct EvaluationContext *eval_ctx, struct ID *id, struct FCurve *fcurve);
+void BKE_animsys_eval_animdata(const struct EvaluationContext *eval_ctx, struct ID *id);
+void BKE_animsys_eval_driver(const struct EvaluationContext *eval_ctx, struct ID *id, struct FCurve *fcurve);
 
 /* ************************************* */
 
index 8e67bc43b3fe42ed575dc883bfa7fd3d9a2c768b..453a6432d830bf52eb0daeac788d6089d9dafc0a 100644 (file)
@@ -100,8 +100,8 @@ void BKE_armature_where_is(struct bArmature *arm);
 void BKE_armature_where_is_bone(struct Bone *bone, struct Bone *prevbone, const bool use_recursion);
 void BKE_pose_clear_pointers(struct bPose *pose);
 void BKE_pose_rebuild(struct Object *ob, struct bArmature *arm);
-void BKE_pose_where_is(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
-void BKE_pose_where_is_bone(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan, float ctime, bool do_extra);
+void BKE_pose_where_is(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void BKE_pose_where_is_bone(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan, float ctime, bool do_extra);
 void BKE_pose_where_is_bone_tail(struct bPoseChannel *pchan);
 
 /* get_objectspace_bone_matrix has to be removed still */
@@ -118,7 +118,7 @@ void BKE_armature_loc_pose_to_bone(struct bPoseChannel *pchan, const float inloc
 void BKE_armature_mat_bone_to_pose(struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
 void BKE_armature_mat_pose_to_delta(float delta_mat[4][4], float pose_mat[4][4], float arm_mat[4][4]);
 
-void BKE_armature_mat_pose_to_bone_ex(struct EvaluationContext *eval_ctx, struct Object *ob, struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
+void BKE_armature_mat_pose_to_bone_ex(const struct EvaluationContext *eval_ctx, struct Object *ob, struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
 
 void BKE_pchan_mat3_to_rot(struct bPoseChannel *pchan, float mat[3][3], bool use_compat);
 void BKE_pchan_apply_mat4(struct bPoseChannel *pchan, float mat[4][4], bool use_comat);
@@ -165,42 +165,44 @@ struct bPoseChannel *BKE_armature_splineik_solver_find_root(
         struct bSplineIKConstraint *data);
 
 void BKE_pose_splineik_init_tree(struct Scene *scene, struct Object *ob, float ctime);
-void BKE_splineik_execute_tree(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan_root, float ctime);
+void BKE_splineik_execute_tree(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Object *ob, struct bPoseChannel *pchan_root, float ctime);
 
-void BKE_pose_eval_init(struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_init(const struct EvaluationContext *eval_ctx,
                         struct Scene *scene,
                         struct Object *ob,
                         struct bPose *pose);
 
-void BKE_pose_eval_bone(struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_bone(const struct EvaluationContext *eval_ctx,
                         struct Scene *scene,
                         struct Object *ob,
                         struct bPoseChannel *pchan);
 
-void BKE_pose_constraints_evaluate(struct EvaluationContext *eval_ctx,
+void BKE_pose_constraints_evaluate(const struct EvaluationContext *eval_ctx,
                                    struct Scene *scene,
                                    struct Object *ob,
                                    struct bPoseChannel *pchan);
 
-void BKE_pose_bone_done(struct EvaluationContext *eval_ctx,
+void BKE_pose_bone_done(const struct EvaluationContext *eval_ctx,
                         struct bPoseChannel *pchan);
 
-void BKE_pose_iktree_evaluate(struct EvaluationContext *eval_ctx,
+void BKE_pose_iktree_evaluate(const struct EvaluationContext *eval_ctx,
                               struct Scene *scene,
                               struct Object *ob,
                               struct bPoseChannel *rootchan);
 
-void BKE_pose_splineik_evaluate(struct EvaluationContext *eval_ctx,
+void BKE_pose_splineik_evaluate(const struct EvaluationContext *eval_ctx,
                                 struct Scene *scene,
                                 struct Object *ob,
                                 struct bPoseChannel *rootchan);
 
-void BKE_pose_eval_flush(struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_flush(const struct EvaluationContext *eval_ctx,
                          struct Scene *scene,
                          struct Object *ob,
                          struct bPose *pose);
 
-void BKE_pose_eval_proxy_copy(struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_proxy_copy(const struct EvaluationContext *eval_ctx,
                               struct Object *ob);
 
 #ifdef __cplusplus
index 67723209e75b79c0c5c1211f8fbc05a707f6fca3..7f7cbd678e28817ac1a52ede210082e72ac89b02 100644 (file)
@@ -227,7 +227,7 @@ void cloth_free_contacts(ColliderContacts *collider_contacts, int totcolliders);
 void cloth_free_modifier_extern (struct ClothModifierData *clmd );
 void cloth_free_modifier (struct ClothModifierData *clmd );
 void cloth_init (struct ClothModifierData *clmd );
-void clothModifier_do (struct ClothModifierData *clmd, struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm, float (*vertexCos)[3]);
+void clothModifier_do(struct ClothModifierData *clmd, const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm, float (*vertexCos)[3]);
 
 int cloth_uses_vgroup(struct ClothModifierData *clmd);
 
index 33fc91b2c3ca3a2e81dc7cc26cf9186eede5057b..cf7e290836057dc2f1fcd902845a84c933729c93 100644 (file)
@@ -103,7 +103,7 @@ typedef struct bConstraintTypeInfo {
        
        /* evaluation */
        /* set the ct->matrix for the given constraint target (at the given ctime) */
-       void (*get_target_matrix)(struct EvaluationContext *eval_ctx, struct bConstraint *con, struct bConstraintOb *cob, struct bConstraintTarget *ct, float ctime);
+       void (*get_target_matrix)(const struct EvaluationContext *eval_ctx, struct bConstraint *con, struct bConstraintOb *cob, struct bConstraintTarget *ct, float ctime);
        /* evaluate the constraint for the given time */
        void (*evaluate_constraint)(struct bConstraint *con, struct bConstraintOb *cob, struct ListBase *targets);
 } bConstraintTypeInfo;
@@ -148,10 +148,10 @@ void                  BKE_constraints_clear_evalob(struct bConstraintOb *cob);
 void BKE_constraint_mat_convertspace(
         struct Object *ob, struct bPoseChannel *pchan, float mat[4][4], short from, short to, const bool keep_scale);
 
-void BKE_constraint_target_matrix_get(struct EvaluationContext *eval_ctx, struct Scene *scene, struct bConstraint *con,
+void BKE_constraint_target_matrix_get(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct bConstraint *con,
                                       int n, short ownertype, void *ownerdata, float mat[4][4], float ctime);
-void BKE_constraint_targets_for_solving_get(struct EvaluationContext *eval_ctx, struct bConstraint *con, struct bConstraintOb *ob, struct ListBase *targets, float ctime);
-void BKE_constraints_solve(struct EvaluationContext *eval_ctx, struct ListBase *conlist, struct bConstraintOb *cob, float ctime);
+void BKE_constraint_targets_for_solving_get(const struct EvaluationContext *eval_ctx, struct bConstraint *con, struct bConstraintOb *ob, struct ListBase *targets, float ctime);
+void BKE_constraints_solve(const struct EvaluationContext *eval_ctx, struct ListBase *conlist, struct bConstraintOb *cob, float ctime);
 
 #ifdef __cplusplus
 }
index 4fe52370f4718291cac135542c8f57c55137c862..31542cd6f8af3a39fb78b8e8b5b624de6f2d41ae 100644 (file)
@@ -42,20 +42,20 @@ struct EvaluationContext;
 
 /* crazyspace.c */
 float (*BKE_crazyspace_get_mapped_editverts(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *obedit))[3];
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *obedit))[3];
 void BKE_crazyspace_set_quats_editmesh(
         struct BMEditMesh *em, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4],
         const bool use_select);
 void BKE_crazyspace_set_quats_mesh(
         struct Mesh *me, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4]);
 int BKE_crazyspace_get_first_deform_matrices_editbmesh(
-        struct EvaluationContext *eval_ctx, struct Scene *, struct Object *, struct BMEditMesh *em,
+        const struct EvaluationContext *eval_ctx, struct Scene *, struct Object *, struct BMEditMesh *em,
         float (**deformmats)[3][3], float (**deformcos)[3]);
 int BKE_sculpt_get_first_deform_matrices(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
         float (**deformmats)[3][3], float (**deformcos)[3]);
 void BKE_crazyspace_build_sculpt(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
         float (**deformmats)[3][3], float (**deformcos)[3]);
 
 #ifdef __cplusplus
index ebce4643a878f61a2102265bb9c07c7eda08eed3..1ebb092a93964cc104d3a0897128c5fe50585a81 100644 (file)
@@ -123,13 +123,14 @@ void BKE_curve_editNurb_keyIndex_free(struct GHash **keyindex);
 void BKE_curve_editNurb_free(struct Curve *cu);
 struct ListBase *BKE_curve_editNurbs_get(struct Curve *cu);
 
-float *BKE_curve_make_orco(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, int *r_numVerts);
+float *BKE_curve_make_orco(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, int *r_numVerts);
 float *BKE_curve_surf_make_orco(struct Object *ob);
 
 void BKE_curve_bevelList_free(struct ListBase *bev);
 void BKE_curve_bevelList_make(struct Object *ob, struct ListBase *nurbs, bool for_render);
-void BKE_curve_bevel_make(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,  struct ListBase *disp,
-                          const bool for_render, const bool use_render_resolution);
+void BKE_curve_bevel_make(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,  struct ListBase *disp,
+        const bool for_render, const bool use_render_resolution);
 
 void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride);
 void BKE_curve_forward_diff_tangent_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride);
@@ -214,11 +215,13 @@ void BKE_nurb_handles_test(struct Nurb *nu, const bool use_handles);
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_curve_eval_geometry(struct EvaluationContext *eval_ctx,
-                             struct Curve *curve);
+void BKE_curve_eval_geometry(
+        const struct EvaluationContext *eval_ctx,
+        struct Curve *curve);
 
-void BKE_curve_eval_path(struct EvaluationContext *eval_ctx,
-                         struct Curve *curve);
+void BKE_curve_eval_path(
+        const struct EvaluationContext *eval_ctx,
+        struct Curve *curve);
 
 /* Draw Cache */
 enum {
index 497319819de476dccbe4c8fd8fb5c6ad2659dac0..d5f0313ca649b987267df96c74c5401f34a8df92 100644 (file)
@@ -130,12 +130,12 @@ enum {
 };
 
 void BKE_object_data_transfer_layout(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob_src,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob_src,
         struct Object *ob_dst, const int data_types, const bool use_delete,
         const int fromlayers_select[DT_MULTILAYER_INDEX_MAX], const int tolayers_select[DT_MULTILAYER_INDEX_MAX]);
 
 bool BKE_object_data_transfer_mesh(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob_src, struct Object *ob_dst, const int data_types, const bool use_create,
         const int map_vert_mode, const int map_edge_mode, const int map_loop_mode, const int map_poly_mode,
         struct SpaceTransform *space_transform, const bool auto_transform,
@@ -144,7 +144,7 @@ bool BKE_object_data_transfer_mesh(
         const int mix_mode, const float mix_factor, const char *vgroup_name, const bool invert_vgroup,
         struct ReportList *reports);
 bool BKE_object_data_transfer_dm(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob_src, struct Object *ob_dst, struct DerivedMesh *dm_dst,
         const int data_types, bool use_create,
         const int map_vert_mode, const int map_edge_mode, const int map_loop_mode, const int map_poly_mode,
index 641abc54216f915a41504bb2febfa20d99179855..c2229976dd982e412724d78bbe4e169cfd5705fc 100644 (file)
@@ -86,23 +86,30 @@ void BKE_displist_count(struct ListBase *lb, int *totvert, int *totface, int *to
 void BKE_displist_free(struct ListBase *lb);
 bool BKE_displist_has_faces(struct ListBase *lb);
 
-void BKE_displist_make_surf(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase,
-                            struct DerivedMesh **r_dm_final, const bool for_render, const bool for_orco, const bool use_render_resolution);
-void BKE_displist_make_curveTypes(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, const bool for_orco);
-void BKE_displist_make_curveTypes_forRender(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase,
-                                            struct DerivedMesh **r_dm_final, const bool for_orco, const bool use_render_resolution);
-void BKE_displist_make_curveTypes_forOrco(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
-void BKE_displist_make_mball(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
-void BKE_displist_make_mball_forRender(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
+void BKE_displist_make_surf(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase,
+        struct DerivedMesh **r_dm_final, const bool for_render, const bool for_orco, const bool use_render_resolution);
+void BKE_displist_make_curveTypes(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, const bool for_orco);
+void BKE_displist_make_curveTypes_forRender(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase,
+        struct DerivedMesh **r_dm_final, const bool for_orco, const bool use_render_resolution);
+void BKE_displist_make_curveTypes_forOrco(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
+void BKE_displist_make_mball(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void BKE_displist_make_mball_forRender(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
 
 bool BKE_displist_surfindex_get(DispList *dl, int a, int *b, int *p1, int *p2, int *p3, int *p4);
 void BKE_displist_fill(struct ListBase *dispbase, struct ListBase *to, const float normal_proj[3], const bool flipnormal);
 
-float BKE_displist_calc_taper(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *taperobj, int cur, int tot);
+float BKE_displist_calc_taper(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *taperobj, int cur, int tot);
 
 /* add Orco layer to the displist object which has got derived mesh and return orco */
-float *BKE_displist_make_orco(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm_final,
-                              const bool for_render, const bool use_render_resolution);
+float *BKE_displist_make_orco(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm_final,
+        const bool for_render, const bool use_render_resolution);
 
 void BKE_displist_minmax(struct ListBase *dispbase, float min[3], float max[3]);
 
index 1360d0c730fb9bfd1c5aecbbd7040c1f4a46c3ea..cee10d2bd562c6c8701ff94e7fe00d9192034c1f 100644 (file)
@@ -62,7 +62,7 @@ typedef struct PaintWavePoint {
        short state;
 } PaintWavePoint;
 
-struct DerivedMesh *dynamicPaint_Modifier_do(struct DynamicPaintModifierData *pmd, struct EvaluationContext *eval_ctx, struct Scene *scene,
+struct DerivedMesh *dynamicPaint_Modifier_do(struct DynamicPaintModifierData *pmd, const struct EvaluationContext *eval_ctx, struct Scene *scene,
                                              struct Object *ob, struct DerivedMesh *dm);
 void dynamicPaint_Modifier_free(struct DynamicPaintModifierData *pmd);
 void dynamicPaint_Modifier_copy(struct DynamicPaintModifierData *pmd, struct DynamicPaintModifierData *tsmd);
@@ -86,7 +86,7 @@ struct DynamicPaintSurface *get_activeSurface(struct DynamicPaintCanvasSettings
 
 /* image sequence baking */
 int dynamicPaint_createUVSurface(struct Scene *scene, struct DynamicPaintSurface *surface, float *progress, short *do_update);
-int dynamicPaint_calculateFrame(struct DynamicPaintSurface *surface, struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *cObject, int frame);
+int dynamicPaint_calculateFrame(struct DynamicPaintSurface *surface, const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *cObject, int frame);
 void dynamicPaint_outputSurfaceImage(struct DynamicPaintSurface *surface, char *filename, short output_layer);
 
 /* PaintPoint state */
index 02ad8777e60f9555aa7c4816bbf23792a841da6f..af1aeff230fac87acf3bc45be63ec801ad8c85b0 100644 (file)
@@ -99,6 +99,7 @@ float     (*BKE_editmesh_vertexCos_get_orco(BMEditMesh *em, int *r_numVerts))[3]
 void        BKE_editmesh_statvis_calc(BMEditMesh *em, struct DerivedMesh *dm,
                                       const struct MeshStatVis *statvis);
 
-float (*BKE_editmesh_vertexCos_get(struct EvaluationContext *eval_ctx, struct BMEditMesh *em, struct Scene *scene, int *r_numVerts))[3];
+float (*BKE_editmesh_vertexCos_get(
+           const struct EvaluationContext *eval_ctx, struct BMEditMesh *em, struct Scene *scene, int *r_numVerts))[3];
 
 #endif /* __BKE_EDITMESH_H__ */
index 383e6d0cb6297ea8a97efedceb1eb815db7069a5..6fa19d4aaf65cf00bd33868a7afbec7010d2eae2 100644 (file)
@@ -94,7 +94,7 @@ typedef struct EffectorData {
 typedef struct EffectorCache {
        struct EffectorCache *next, *prev;
 
-       struct EvaluationContext *eval_ctx;
+       const struct EvaluationContext *eval_ctx;
        struct Scene *scene;
        struct Object *ob;
        struct ParticleSystem *psys;
@@ -112,10 +112,11 @@ typedef struct EffectorCache {
 } EffectorCache;
 
 void            free_partdeflect(struct PartDeflect *pd);
-struct ListBase *pdInitEffectors(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob_src, struct ParticleSystem *psys_src,
-                                 struct EffectorWeights *weights, bool for_simulation);
+struct ListBase *pdInitEffectors(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob_src, struct ParticleSystem *psys_src,
+        struct EffectorWeights *weights, bool for_simulation);
 void            pdEndEffectors(struct ListBase **effectors);
-void            pdPrecalculateEffectors(struct EvaluationContext *eval_ctx, struct ListBase *effectors);
+void            pdPrecalculateEffectors(const struct EvaluationContext *eval_ctx, struct ListBase *effectors);
 void            pdDoEffectors(struct ListBase *effectors, struct ListBase *colliders, struct EffectorWeights *weights, struct EffectedPoint *point, float *force, float *impulse);
 
 void pd_point_from_particle(struct ParticleSimulationData *sim, struct ParticleData *pa, struct ParticleKey *state, struct EffectedPoint *point);
index 0345382271b9d389a6e0764ca1a1adeac0e7bc58..4ec58b2a0e5cb494eb34f13560d7b3ec3b67aa69 100644 (file)
@@ -40,7 +40,7 @@ struct EvaluationContext;
 
 /* old interface */
 
-void initElbeemMesh(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+void initElbeemMesh(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
                     int *numVertices, float **vertices,
                     int *numTriangles, int **triangles,
                     int useGlobalCoords, int modifierIndex);
index fd0b23b242a90214ed579c30961f4ba307e3e508..205f42d66435ac33fb6ccac5f5db6f44dfe7917f 100644 (file)
@@ -54,6 +54,6 @@ bool          BKE_group_object_cyclic_check(struct Main *bmain, struct Object *o
 bool          BKE_group_is_animated(struct Group *group, struct Object *parent);
 
 void          BKE_group_tag_recalc(struct Group *group);
-void          BKE_group_handle_recalc_and_update(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *parent, struct Group *group);
+void          BKE_group_handle_recalc_and_update(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *parent, struct Group *group);
 
 #endif  /* __BKE_GROUP_H__ */
index 181dc5d31ae7401addce028d8a48bd71d09639c0..52d6dc538081e83bd9e155f3b2822c476c1edf4b 100644 (file)
@@ -62,10 +62,12 @@ void end_latt_deform(struct LatticeDeformData *lattice_deform_data);
 bool object_deform_mball(struct Object *ob, struct ListBase *dispbase);
 void outside_lattice(struct Lattice *lt);
 
-void curve_deform_verts(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *cuOb, struct Object *target,
-                        struct DerivedMesh *dm, float (*vertexCos)[3],
+void curve_deform_verts(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Object *cuOb, struct Object *target,
+        struct DerivedMesh *dm, float (*vertexCos)[3],
                         int numVerts, const char *vgroup, short defaxis);
-void curve_deform_vector(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *cuOb, struct Object *target,
+void curve_deform_vector(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *cuOb, struct Object *target,
                          float orco[3], float vec[3], float mat[3][3], int no_rot_axis);
 
 void lattice_deform_verts(struct Object *laOb, struct Object *target,
@@ -78,7 +80,7 @@ void armature_deform_verts(struct Object *armOb, struct Object *target,
 
 float (*BKE_lattice_vertexcos_get(struct Object *ob, int *r_numVerts))[3];
 void    BKE_lattice_vertexcos_apply(struct Object *ob, float (*vertexCos)[3]);
-void    BKE_lattice_modifiers_calc(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void    BKE_lattice_modifiers_calc(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
 
 struct MDeformVert *BKE_lattice_deform_verts_get(struct Object *lattice);
 struct BPoint *BKE_lattice_active_point_get(struct Lattice *lt);
@@ -102,7 +104,7 @@ void BKE_lattice_bitmap_from_flag(struct Lattice *lt, unsigned int *bitmap, cons
 
 struct EvaluationContext;
 
-void BKE_lattice_eval_geometry(struct EvaluationContext *eval_ctx,
+void BKE_lattice_eval_geometry(const struct EvaluationContext *eval_ctx,
                                struct Lattice *latt);
 
 /* Draw Cache */
index 0a26fe0801614e39fc1a04a617406c0932ed7f78..5f95a69ed1e30f96564de99bbdc991675274ad90 100644 (file)
@@ -144,13 +144,13 @@ void BKE_collection_engine_property_value_set_bool(struct IDProperty *props, con
 
 /* evaluation */
 
-void BKE_layer_eval_layer_collection_pre(struct EvaluationContext *eval_ctx,
+void BKE_layer_eval_layer_collection_pre(const struct EvaluationContext *eval_ctx,
                                          struct Scene *scene,
                                          struct SceneLayer *scene_layer);
-void BKE_layer_eval_layer_collection(struct EvaluationContext *eval_ctx,
+void BKE_layer_eval_layer_collection(const struct EvaluationContext *eval_ctx,
                                      struct LayerCollection *layer_collection,
                                      struct LayerCollection *parent_layer_collection);
-void BKE_layer_eval_layer_collection_post(struct EvaluationContext *eval_ctx,
+void BKE_layer_eval_layer_collection_post(const struct EvaluationContext *eval_ctx,
                                           struct SceneLayer *scene_layer);
 
 /* iterators */
index d42bd1c8c35812de2db38305a870ad4de5196e6d..49fb128417ea6aeadfc38ff0f1727b1254ffc02e 100644 (file)
@@ -123,7 +123,7 @@ void paste_matcopybuf(struct Material *ma);
 
 struct EvaluationContext;
 
-void BKE_material_eval(struct EvaluationContext *eval_ctx, struct Material *material);
+void BKE_material_eval(const struct EvaluationContext *eval_ctx, struct Material *material);
 
 #ifdef __cplusplus
 }
index f02704ba90352bb5ba0decbe259ecd18867ad653..0c07ce55781f613f460fe361d4499800ef0f59c1 100644 (file)
@@ -73,7 +73,7 @@ void BKE_mball_select_swap(struct MetaBall *mb);
 
 struct EvaluationContext;
 
-void BKE_mball_eval_geometry(struct EvaluationContext *eval_ctx,
+void BKE_mball_eval_geometry(const struct EvaluationContext *eval_ctx,
                              struct MetaBall *mball);
 
 #endif
index 361f31b704cdd1fa78339388aa3f5bd88e2ef231..40cdc80e280ae9f0b8f161653db08dab7907927f 100644 (file)
@@ -28,7 +28,7 @@ struct Object;
 struct Scene;
 
 void BKE_mball_polygonize(
-        struct EvaluationContext *eval_ctx, struct Scene *scene,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
         struct Object *ob, struct ListBase *dispbase);
 
 void BKE_mball_cubeTable_free(void);
index 4ec2594b599fa495b2d2a73b130943590d087816..d68712202c906a704cd009994f48ac9a901ce3a3 100644 (file)
@@ -119,7 +119,7 @@ void BKE_mesh_from_nurbs_displist(
         struct Object *ob, struct ListBase *dispbase, const bool use_orco_uv, const char *obdata_name);
 void BKE_mesh_from_nurbs(struct Object *ob);
 void BKE_mesh_to_curve_nurblist(struct DerivedMesh *dm, struct ListBase *nurblist, const int edge_users_test);
-void BKE_mesh_to_curve(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void BKE_mesh_to_curve(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
 void BKE_mesh_material_index_remove(struct Mesh *me, short index);
 void BKE_mesh_material_index_clear(struct Mesh *me);
 void BKE_mesh_material_remap(struct Mesh *me, const unsigned int *remap, unsigned int remap_len);
@@ -140,7 +140,7 @@ float (*BKE_mesh_vertexCos_get(const struct Mesh *me, int *r_numVerts))[3];
 
 void BKE_mesh_split_faces(struct Mesh *mesh, bool free_loop_normals);
 
-struct Mesh *BKE_mesh_new_from_object(struct EvaluationContext *eval_ctx, struct Main *bmain, struct Scene *sce, struct Object *ob,
+struct Mesh *BKE_mesh_new_from_object(const struct EvaluationContext *eval_ctx, struct Main *bmain, struct Scene *sce, struct Object *ob,
                                       int apply_modifiers, int settings, int calc_tessface, int calc_undeformed);
 
 /* vertex level transformations & checks (no derived mesh) */
@@ -401,7 +401,7 @@ void BKE_mesh_calc_edges(struct Mesh *mesh, bool update, const bool select);
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_mesh_eval_geometry(struct EvaluationContext *eval_ctx,
+void BKE_mesh_eval_geometry(const struct EvaluationContext *eval_ctx,
                             struct Mesh *mesh);
 
 /* Draw Cache */
index 412805e6cc6e3bd92b41f96ede77d354ebe2e577..76a36bdf3ff5e35d546ce726855e0898570a0d8f 100644 (file)
@@ -159,25 +159,25 @@ typedef struct ModifierTypeInfo {
         * the object it can obtain it from the derivedData argument if non-NULL,
         * and otherwise the ob argument.
         */
-       void (*deformVerts)(struct ModifierData *md, struct EvaluationContext *eval_ctx,
+       void (*deformVerts)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
                            struct Object *ob, struct DerivedMesh *derivedData,
                            float (*vertexCos)[3], int numVerts,
                            ModifierApplyFlag flag);
 
        /* Like deformMatricesEM but called from object mode (for supporting modifiers in sculpt mode) */
-       void (*deformMatrices)(struct ModifierData *md, struct EvaluationContext *eval_ctx,
+       void (*deformMatrices)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
                               struct Object *ob, struct DerivedMesh *derivedData,
                               float (*vertexCos)[3], float (*defMats)[3][3], int numVerts);
 
        /* Like deformVerts but called during editmode (for supporting modifiers)
         */
-       void (*deformVertsEM)(struct ModifierData *md, struct EvaluationContext *eval_ctx,
+       void (*deformVertsEM)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
                              struct Object *ob, struct BMEditMesh *editData,
                              struct DerivedMesh *derivedData,
                              float (*vertexCos)[3], int numVerts);
 
        /* Set deform matrix per vertex for crazyspace correction */
-       void (*deformMatricesEM)(struct ModifierData *md, struct EvaluationContext *eval_ctx,
+       void (*deformMatricesEM)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
                                 struct Object *ob, struct BMEditMesh *editData,
                                 struct DerivedMesh *derivedData,
                                 float (*vertexCos)[3], float (*defMats)[3][3], int numVerts);
@@ -203,7 +203,7 @@ typedef struct ModifierTypeInfo {
         * The modifier may reuse the derivedData argument (i.e. return it in
         * modified form), but must not release it.
         */
-       struct DerivedMesh *(*applyModifier)(struct ModifierData *md, struct EvaluationContext *eval_ctx,
+       struct DerivedMesh *(*applyModifier)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
                                             struct Object *ob, struct DerivedMesh *derivedData,
                                             ModifierApplyFlag flag);
 
@@ -214,7 +214,7 @@ typedef struct ModifierTypeInfo {
         * are expected from editmode objects. The same qualifications regarding
         * derivedData apply as for applyModifier.
         */
-       struct DerivedMesh *(*applyModifierEM)(struct ModifierData *md, struct EvaluationContext *eval_ctx,
+       struct DerivedMesh *(*applyModifierEM)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
                                               struct Object *ob, struct BMEditMesh *editData,
                                               struct DerivedMesh *derivedData, ModifierApplyFlag flag);
 
@@ -420,24 +420,24 @@ const char *modifier_path_relbase(struct Object *ob);
 /* wrappers for modifier callbacks */
 
 struct DerivedMesh *modwrap_applyModifier(
-        ModifierData *md, struct EvaluationContext *eval_ctx,
+        ModifierData *md, const struct EvaluationContext *eval_ctx,
         struct Object *ob, struct DerivedMesh *dm,
         ModifierApplyFlag flag);
 
 struct DerivedMesh *modwrap_applyModifierEM(
-        ModifierData *md, struct EvaluationContext *eval_ctx,
+        ModifierData *md, const struct EvaluationContext *eval_ctx,
         struct Object *ob, struct BMEditMesh *em,
         struct DerivedMesh *dm,
         ModifierApplyFlag flag);
 
 void modwrap_deformVerts(
-        ModifierData *md, struct EvaluationContext *eval_ctx,
+        ModifierData *md, const struct EvaluationContext *eval_ctx,
         struct Object *ob, struct DerivedMesh *dm,
         float (*vertexCos)[3], int numVerts,
         ModifierApplyFlag flag);
 
 void modwrap_deformVertsEM(
-        ModifierData *md, struct EvaluationContext *eval_ctx, struct Object *ob,
+        ModifierData *md, const struct EvaluationContext *eval_ctx, struct Object *ob,
         struct BMEditMesh *em, struct DerivedMesh *dm,
         float (*vertexCos)[3], int numVerts);
 
index 5ddc67b7a8cd4bf69e4355b2e602792544e15176..761bb7e8acb2c6a51cd697ee79f63f83ce4a4775 100644 (file)
@@ -81,18 +81,18 @@ struct DerivedMesh *multires_make_derived_from_derived(struct DerivedMesh *dm,
 struct MultiresModifierData *find_multires_modifier_before(struct Scene *scene,
                                                            struct ModifierData *lastmd);
 struct MultiresModifierData *get_multires_modifier(struct Scene *scene, struct Object *ob, bool use_first);
-struct DerivedMesh *get_multires_dm(struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
+struct DerivedMesh *get_multires_dm(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
                                     struct Object *ob);
 void multiresModifier_del_levels(struct MultiresModifierData *, struct Object *, int direction);
 void multiresModifier_base_apply(struct MultiresModifierData *mmd, struct Object *ob);
 void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob, int updateblock, int simple);
 void multiresModifier_sync_levels_ex(
         struct Object *ob_dst, struct MultiresModifierData *mmd_src, struct MultiresModifierData *mmd_dst);
-int multiresModifier_reshape(struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
+int multiresModifier_reshape(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
                              struct Object *dst, struct Object *src);
-int multiresModifier_reshapeFromDM(struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
+int multiresModifier_reshapeFromDM(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
                                    struct Object *ob, struct DerivedMesh *srcdm);
-int multiresModifier_reshapeFromDeformMod(struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
+int multiresModifier_reshapeFromDeformMod(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
                                           struct Object *ob, struct ModifierData *md);
 
 void multires_stitch_grids(struct Object *);
@@ -110,8 +110,8 @@ void multires_free(struct Multires *mr);
 void multires_load_old(struct Object *ob, struct Mesh *me);
 void multires_load_old_250(struct Mesh *);
 
-void multiresModifier_scale_disp(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
-void multiresModifier_prepare_join(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct Object *to_ob);
+void multiresModifier_scale_disp(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void multiresModifier_prepare_join(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct Object *to_ob);
 
 int multires_mdisp_corners(struct MDisps *s);
 
index b63a7173d7dbad09c9bde556d48a4551ec317c67..35cde742ff06923245b4f51da04ba8bd3964b203 100644 (file)
@@ -51,7 +51,7 @@ struct HookModifierData;
 struct ModifierData;
 
 void BKE_object_workob_clear(struct Object *workob);
-void BKE_object_workob_calc_parent(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct Object *workob);
+void BKE_object_workob_calc_parent(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct Object *workob);
 
 void BKE_object_transform_copy(struct Object *ob_tar, const struct Object *ob_src);
 struct SoftBody *copy_softbody(const struct SoftBody *sb, const int flag);
@@ -128,10 +128,10 @@ struct Object *BKE_object_pose_armature_get(struct Object *ob);
 
 void BKE_object_get_parent_matrix(struct Scene *scene, struct Object *ob,
                                   struct Object *par, float parentmat[4][4]);
-void BKE_object_where_is_calc(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
-void BKE_object_where_is_calc_ex(struct EvaluationContext *eval_ctx, struct Scene *scene, struct RigidBodyWorld *rbw, struct Object *ob, float r_originmat[3][3]);
-void BKE_object_where_is_calc_time(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, float ctime);
-void BKE_object_where_is_calc_time_ex(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, float ctime,
+void BKE_object_where_is_calc(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void BKE_object_where_is_calc_ex(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct RigidBodyWorld *rbw, struct Object *ob, float r_originmat[3][3]);
+void BKE_object_where_is_calc_time(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, float ctime);
+void BKE_object_where_is_calc_time_ex(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, float ctime,
                                       struct RigidBodyWorld *rbw, float r_originmat[3][3]);
 void BKE_object_where_is_calc_mat4(struct Scene *scene, struct Object *ob, float obmat[4][4]);
 
@@ -179,39 +179,43 @@ void BKE_object_tfm_protected_restore(struct Object *ob,
                                       const short protectflag);
 
 /* Dependency graph evaluation callbacks. */
-void BKE_object_eval_local_transform(struct EvaluationContext *eval_ctx,
+void BKE_object_eval_local_transform(const struct EvaluationContext *eval_ctx,
                                      struct Scene *scene,
                                      struct Object *ob);
-void BKE_object_eval_parent(struct EvaluationContext *eval_ctx,
+void BKE_object_eval_parent(const struct EvaluationContext *eval_ctx,
                             struct Scene *scene,
                             struct Object *ob);
-void BKE_object_eval_constraints(struct EvaluationContext *eval_ctx,
+void BKE_object_eval_constraints(const struct EvaluationContext *eval_ctx,
                                  struct Scene *scene,
                                  struct Object *ob);
-void BKE_object_eval_done(struct EvaluationContext *eval_ctx, struct Object *ob);
+void BKE_object_eval_done(const struct EvaluationContext *eval_ctx, struct Object *ob);
 
-void BKE_object_eval_uber_transform(struct EvaluationContext *eval_ctx,
+void BKE_object_eval_uber_transform(const struct EvaluationContext *eval_ctx,
                                     struct Scene *scene,
                                     struct Object *ob);
-void BKE_object_eval_uber_data(struct EvaluationContext *eval_ctx,
+void BKE_object_eval_uber_data(const struct EvaluationContext *eval_ctx,
                                struct Scene *scene,
                                struct Object *ob);
 
-void BKE_object_eval_cloth(struct EvaluationContext *eval_ctx,
+void BKE_object_eval_cloth(const struct EvaluationContext *eval_ctx,
                            struct Scene *scene,
                            struct Object *object);
 
-void BKE_object_eval_update_shading(struct EvaluationContext *eval_ctx,
+void BKE_object_eval_update_shading(const struct EvaluationContext *eval_ctx,
                                     struct Object *object);
 
-void BKE_object_handle_data_update(struct EvaluationContext *eval_ctx,
-                                   struct Scene *scene,
-                                   struct Object *ob);
-void BKE_object_handle_update(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
-void BKE_object_handle_update_ex(struct EvaluationContext *eval_ctx,
-                                 struct Scene *scene, struct Object *ob,
-                                 struct RigidBodyWorld *rbw,
-                                 const bool do_proxy_update);
+void BKE_object_handle_data_update(
+        const struct EvaluationContext *eval_ctx,
+        struct Scene *scene,
+        struct Object *ob);
+void BKE_object_handle_update(
+        const struct EvaluationContext *eval_ctx,
+        struct Scene *scene, struct Object *ob);
+void BKE_object_handle_update_ex(
+        const struct EvaluationContext *eval_ctx,
+        struct Scene *scene, struct Object *ob,
+        struct RigidBodyWorld *rbw,
+        const bool do_proxy_update);
 void BKE_object_sculpt_modifiers_changed(struct Object *ob);
 
 int BKE_object_obdata_texspace_get(struct Object *ob, short **r_texflag, float **r_loc, float **r_size, float **r_rot);
@@ -262,7 +266,7 @@ struct KDTree *BKE_object_as_kdtree(struct Object *ob, int *r_tot);
 
 bool BKE_object_modifier_use_time(struct Object *ob, struct ModifierData *md);
 
-bool BKE_object_modifier_update_subframe(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+bool BKE_object_modifier_update_subframe(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
                                          bool update_mesh, int parent_recursion, float frame, int type);
 
 #ifdef __cplusplus
index e73e3800af0fd15c20a26e8081999857b5ab594d..3f4941f222e900d6a2c3da15eb5126a4c49c0169 100644 (file)
@@ -213,8 +213,9 @@ void BKE_sculptsession_free(struct Object *ob);
 void BKE_sculptsession_free_deformMats(struct SculptSession *ss);
 void BKE_sculptsession_bm_to_me(struct Object *ob, bool reorder);
 void BKE_sculptsession_bm_to_me_for_render(struct Object *object);
-void BKE_sculpt_update_mesh_elements(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Sculpt *sd, struct Object *ob,
-                                     bool need_pmap, bool need_mask);
+void BKE_sculpt_update_mesh_elements(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Sculpt *sd, struct Object *ob,
+        bool need_pmap, bool need_mask);
 struct MultiresModifierData *BKE_sculpt_multires_active(struct Scene *scene, struct Object *ob);
 int BKE_sculpt_mask_layers_ensure(struct Object *ob,
                                   struct MultiresModifierData *mmd);
index fed4e98c9f91bbefb5c6b444d613c9c2fec88128..a563fcbc99e496fc8258c4731b6a8135b803f656 100644 (file)
@@ -78,7 +78,7 @@ struct EvaluationContext;
 
 /* common stuff that many particle functions need */
 typedef struct ParticleSimulationData {
-       struct EvaluationContext *eval_ctx;
+       const struct EvaluationContext *eval_ctx;
        struct Scene *scene;
        struct Object *ob;
        struct ParticleSystem *psys;
@@ -337,9 +337,9 @@ void psys_reset(struct ParticleSystem *psys, int mode);
 void psys_find_parents(struct ParticleSimulationData *sim, const bool use_render_params);
 
 void psys_cache_paths(struct ParticleSimulationData *sim, float cfra, const bool use_render_params);
-void psys_cache_edit_paths(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct PTCacheEdit *edit, float cfra, const bool use_render_params);
+void psys_cache_edit_paths(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct PTCacheEdit *edit, float cfra, const bool use_render_params);
 void psys_cache_child_paths(struct ParticleSimulationData *sim, float cfra, const bool editupdate, const bool use_render_params);
-int do_guides(struct EvaluationContext *eval_ctx, struct ParticleSettings *part, struct ListBase *effectors, ParticleKey *state, int pa_num, float time);
+int do_guides(const struct EvaluationContext *eval_ctx, struct ParticleSettings *part, struct ListBase *effectors, ParticleKey *state, int pa_num, float time);
 void precalc_guides(struct ParticleSimulationData *sim, struct ListBase *effectors);
 float psys_get_timestep(struct ParticleSimulationData *sim);
 float psys_get_child_time(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *birthtime, float *dietime);
@@ -371,7 +371,7 @@ void psys_tasks_create(struct ParticleThreadContext *ctx, int startpart, int end
 void psys_tasks_free(struct ParticleTask *tasks, int numtasks);
 
 void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3], float zvec[3], float center[3]);
-void psys_apply_hair_lattice(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys);
+void psys_apply_hair_lattice(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys);
 
 /* particle_system.c */
 struct ParticleSystem *psys_get_target_system(struct Object *ob, struct ParticleTarget *pt);
@@ -386,7 +386,7 @@ void psys_check_boid_data(struct ParticleSystem *psys);
 
 void psys_get_birth_coords(struct ParticleSimulationData *sim, struct ParticleData *pa, struct ParticleKey *state, float dtime, float cfra);
 
-void particle_system_update(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys, const bool use_render_params);
+void particle_system_update(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys, const bool use_render_params);
 
 /* Callback format for performing operations on ID-pointers for particle systems */
 typedef void (*ParticleSystemIDFunc)(struct ParticleSystem *psys, struct ID **idpoin, void *userdata, int cb_flag);
@@ -478,12 +478,12 @@ typedef struct ParticleRenderData {
 
 struct EvaluationContext;
 
-void BKE_particle_system_settings_eval(struct EvaluationContext *eval_ctx,
+void BKE_particle_system_settings_eval(const struct EvaluationContext *eval_ctx,
                                        struct ParticleSystem *psys);
 void BKE_particle_system_settings_recalc_clear(struct EvaluationContext *UNUSED(eval_ctx),
                                                struct ParticleSettings *particle_settings);
 
-void BKE_particle_system_eval_init(struct EvaluationContext *eval_ctx,
+void BKE_particle_system_eval_init(const struct EvaluationContext *eval_ctx,
                                    struct Scene *scene,
                                    struct Object *ob);
 
index ec68253e162acc57cd6f7378f1b211ab26d13280..6aa43665427b39625c0037a0d210371da662eaf2 100644 (file)
@@ -100,19 +100,19 @@ void BKE_rigidbody_aftertrans_update(struct Object *ob, float loc[3], float rot[
 void BKE_rigidbody_sync_transforms(struct RigidBodyWorld *rbw, struct Object *ob, float ctime);
 bool BKE_rigidbody_check_sim_running(struct RigidBodyWorld *rbw, float ctime);
 void BKE_rigidbody_cache_reset(struct RigidBodyWorld *rbw);
-void BKE_rigidbody_rebuild_world(struct EvaluationContext *eval_ctx, struct Scene *scene, float ctime);
-void BKE_rigidbody_do_simulation(struct EvaluationContext *eval_ctx, struct Scene *scene, float ctime);
+void BKE_rigidbody_rebuild_world(const struct EvaluationContext *eval_ctx, struct Scene *scene, float ctime);
+void BKE_rigidbody_do_simulation(const struct EvaluationContext *eval_ctx, struct Scene *scene, float ctime);
 
 /* -------------------- */
 /* Depsgraph evaluation */
 
-void BKE_rigidbody_rebuild_sim(struct EvaluationContext *eval_ctx,
+void BKE_rigidbody_rebuild_sim(const struct EvaluationContext *eval_ctx,
                                struct Scene *scene);
 
-void BKE_rigidbody_eval_simulation(struct EvaluationContext *eval_ctx,
+void BKE_rigidbody_eval_simulation(const struct EvaluationContext *eval_ctx,
                                    struct Scene *scene);
 
-void BKE_rigidbody_object_sync_transforms(struct EvaluationContext *eval_ctx,
+void BKE_rigidbody_object_sync_transforms(const struct EvaluationContext *eval_ctx,
                                           struct Scene *scene,
                                           struct Object *ob);
 
index 0ceaa9bdd7134d11acc87361b876c23e41b5e5d6..d0c913d72357e633a7fb5c2f485f97c24a6e3e80 100644 (file)
@@ -99,8 +99,9 @@ typedef struct SceneBaseIter {
        int phase;
 } SceneBaseIter;
 
-int BKE_scene_base_iter_next(struct EvaluationContext *eval_ctx, struct SceneBaseIter *iter,
-                             struct Scene **scene, int val, struct BaseLegacy **base, struct Object **ob);
+int BKE_scene_base_iter_next(
+        const struct EvaluationContext *eval_ctx, struct SceneBaseIter *iter,
+        struct Scene **scene, int val, struct BaseLegacy **base, struct Object **ob);
 
 void BKE_scene_base_flag_to_objects(struct SceneLayer *sl);
 void BKE_scene_base_flag_from_objects(struct Scene *scene);
index 6e29db9529d6fff715f28aa72b10f2990ae2529f..bcc06a4ab2516fcb0077f7bb0a9fcadbe4ce3bf7 100644 (file)
@@ -422,7 +422,7 @@ struct Sequence *BKE_sequencer_add_movie_strip(struct bContext *C, ListBase *seq
 
 /* view3d draw callback, run when not in background view */
 typedef struct ImBuf *(*SequencerDrawView)(
-        struct EvaluationContext *eval_ctx, struct Scene *, struct SceneLayer *sl, struct Object *, int, int,
+        const struct EvaluationContext *eval_ctx, struct Scene *, struct SceneLayer *sl, struct Object *, int, int,
         unsigned int, int, bool, bool, bool,
         int, int, bool, const char *,
         struct GPUFX *, struct GPUOffScreen *, char[256]);
index 40b349c9cbce44ad4ab573449a9426070dfc3d5f..64d70e8e209842e065c39aae64f03a0f5c947f72 100644 (file)
@@ -35,7 +35,7 @@
 
 typedef float (*bresenham_callback)(float *result, float *input, int res[3], int *pixel, float *tRay, float correct);
 
-struct DerivedMesh *smokeModifier_do(struct SmokeModifierData *smd, struct EvaluationContext *eval_ctx,
+struct DerivedMesh *smokeModifier_do(struct SmokeModifierData *smd, const struct EvaluationContext *eval_ctx,
                                      struct Scene *scene,
                                      struct Object *ob, struct DerivedMesh *dm);
 
index 89aaf4b39ec1a46da46cc55539f3c3f584ddb168..e2255bdb779cf93628b2ffceaf5adb8c8a6ecef4 100644 (file)
@@ -60,7 +60,7 @@ extern void             sbFree(struct SoftBody *sb);
 extern void             sbFreeSimulation(struct SoftBody *sb);
 
 /* do one simul step, reading and writing vertex locs from given array */
-extern void             sbObjectStep(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+extern void             sbObjectStep(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
                                      float framnr, float (*vertexCos)[3], int numVerts);
 
 /* makes totally fresh start situation, resets time */
index f612795659700f76aa8ac9f147ab7825906ae123..ea0cd125b06aa0b2ea1fa1c58e8a0ef3e0ca3781 100644 (file)
@@ -48,7 +48,7 @@ void BKE_world_make_local(struct Main *bmain, struct World *wrld, const bool lib
 
 struct EvaluationContext;
 
-void BKE_world_eval(struct EvaluationContext *eval_ctx, struct World *world);
+void BKE_world_eval(const struct EvaluationContext *eval_ctx, struct World *world);
 
 #endif
 
index 90e228d04940b2d9f559d39225ea165ce9e49d71..309fcad0d0a4f9ba2473b968112ae4f3a374ae71 100644 (file)
@@ -1136,7 +1136,7 @@ DerivedMesh *mesh_create_derived(Mesh *me, float (*vertCos)[3])
 }
 
 DerivedMesh *mesh_create_derived_for_modifier(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         ModifierData *md, int build_shapekey_layers)
 {
        Mesh *me = ob->data;
@@ -1742,7 +1742,7 @@ static void dm_ensure_display_normals(DerivedMesh *dm)
  * - apply deform modifiers and input vertexco
  */
 static void mesh_calc_modifiers(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float (*inputVertexCos)[3],
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float (*inputVertexCos)[3],
         const bool useRenderParams, int useDeform,
         const bool need_mapping, CustomDataMask dataMask,
         const int index, const bool useCache, const bool build_shapekey_layers,
@@ -2297,7 +2297,7 @@ bool editbmesh_modifier_is_enabled(Scene *scene, ModifierData *md, DerivedMesh *
 }
 
 static void editbmesh_calc_modifiers(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         BMEditMesh *em, CustomDataMask dataMask,
         /* return args */
         DerivedMesh **r_cage, DerivedMesh **r_final)
@@ -2627,7 +2627,7 @@ static bool calc_modifiers_skip_orco(Scene *scene,
 #endif
 
 static void mesh_build_data(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask,
         const bool build_shapekey_layers, const bool need_mapping)
 {
        BLI_assert(ob->type == OB_MESH);
@@ -2663,7 +2663,9 @@ static void mesh_build_data(
        BLI_assert(!(ob->derivedFinal->dirty & DM_DIRTY_NORMALS));
 }
 
-static void editbmesh_build_data(struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit, BMEditMesh *em, CustomDataMask dataMask)
+static void editbmesh_build_data(
+        const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *obedit, BMEditMesh *em, CustomDataMask dataMask)
 {
        BKE_object_free_derived_caches(obedit);
        BKE_object_sculpt_modifiers_changed(obedit);
@@ -2730,7 +2732,7 @@ static CustomDataMask object_get_datamask(const Scene *scene, Object *ob, bool *
 }
 
 void makeDerivedMesh(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BMEditMesh *em,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BMEditMesh *em,
         CustomDataMask dataMask, const bool build_shapekey_layers)
 {
        bool need_mapping;
@@ -2746,7 +2748,8 @@ void makeDerivedMesh(
 
 /***/
 
-DerivedMesh *mesh_get_derived_final(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
+DerivedMesh *mesh_get_derived_final(
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
@@ -2765,7 +2768,7 @@ DerivedMesh *mesh_get_derived_final(struct EvaluationContext *eval_ctx, Scene *s
        return ob->derivedFinal;
 }
 
-DerivedMesh *mesh_get_derived_deform(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
+DerivedMesh *mesh_get_derived_deform(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
@@ -2784,7 +2787,7 @@ DerivedMesh *mesh_get_derived_deform(struct EvaluationContext *eval_ctx, Scene *
        return ob->derivedDeform;
 }
 
-DerivedMesh *mesh_create_derived_render(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
+DerivedMesh *mesh_create_derived_render(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
        DerivedMesh *final;
        
@@ -2795,7 +2798,7 @@ DerivedMesh *mesh_create_derived_render(struct EvaluationContext *eval_ctx, Scen
        return final;
 }
 
-DerivedMesh *mesh_create_derived_index_render(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask, int index)
+DerivedMesh *mesh_create_derived_index_render(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask, int index)
 {
        DerivedMesh *final;
 
@@ -2807,7 +2810,7 @@ DerivedMesh *mesh_create_derived_index_render(struct EvaluationContext *eval_ctx
 }
 
 DerivedMesh *mesh_create_derived_view(
-        struct EvaluationContext *eval_ctx, Scene *scene,
+        const struct EvaluationContext *eval_ctx, Scene *scene,
         Object *ob, CustomDataMask dataMask)
 {
        DerivedMesh *final;
@@ -2828,7 +2831,7 @@ DerivedMesh *mesh_create_derived_view(
 }
 
 DerivedMesh *mesh_create_derived_no_deform(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask)
 {
        DerivedMesh *final;
@@ -2841,7 +2844,7 @@ DerivedMesh *mesh_create_derived_no_deform(
 }
 
 DerivedMesh *mesh_create_derived_no_virtual(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask)
 {
        DerivedMesh *final;
@@ -2854,7 +2857,7 @@ DerivedMesh *mesh_create_derived_no_virtual(
 }
 
 DerivedMesh *mesh_create_derived_physics(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask)
 {
        DerivedMesh *final;
@@ -2867,7 +2870,7 @@ DerivedMesh *mesh_create_derived_physics(
 }
 
 DerivedMesh *mesh_create_derived_no_deform_render(
-        struct EvaluationContext *eval_ctx, Scene *scene,
+        const struct EvaluationContext *eval_ctx, Scene *scene,
         Object *ob, float (*vertCos)[3],
         CustomDataMask dataMask)
 {
@@ -2883,7 +2886,7 @@ DerivedMesh *mesh_create_derived_no_deform_render(
 /***/
 
 DerivedMesh *editbmesh_get_derived_cage_and_final(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit, BMEditMesh *em,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit, BMEditMesh *em,
         CustomDataMask dataMask,
         /* return args */
         DerivedMesh **r_final)
@@ -2904,7 +2907,9 @@ DerivedMesh *editbmesh_get_derived_cage_and_final(
        return em->derivedCage;
 }
 
-DerivedMesh *editbmesh_get_derived_cage(struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit, BMEditMesh *em, CustomDataMask dataMask)
+DerivedMesh *editbmesh_get_derived_cage(
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit, BMEditMesh *em,
+        CustomDataMask dataMask)
 {
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
index 68556354a6c7174ba5f773970f970e9ba1e74cff..f71238031a25329ee3d61f2791cf3d04d598c5ed 100644 (file)
@@ -2850,7 +2850,7 @@ void BKE_animsys_evaluate_all_animation(Main *main, Scene *scene, float ctime)
 
 #define DEBUG_PRINT if (G.debug & G_DEBUG_DEPSGRAPH) printf
 
-void BKE_animsys_eval_animdata(EvaluationContext *eval_ctx, ID *id)
+void BKE_animsys_eval_animdata(const EvaluationContext *eval_ctx, ID *id)
 {
        AnimData *adt = BKE_animdata_from_id(id);
        Scene *scene = NULL; /* XXX: this is only needed for flushing RNA updates,
@@ -2860,7 +2860,7 @@ void BKE_animsys_eval_animdata(EvaluationContext *eval_ctx, ID *id)
        BKE_animsys_evaluate_animdata(scene, id, adt, eval_ctx->ctime, ADT_RECALC_ANIM);
 }
 
-void BKE_animsys_eval_driver(EvaluationContext *eval_ctx,
+void BKE_animsys_eval_driver(const EvaluationContext *eval_ctx,
                              ID *id,
                              FCurve *fcu)
 {
index 0f989f0a8ed9b31c80d9987d328329cce358ace5..7dfc4df114ce87f0b038da84eb8b07d1c02ddb97 100644 (file)
@@ -1461,7 +1461,7 @@ void BKE_armature_loc_pose_to_bone(bPoseChannel *pchan, const float inloc[3], fl
        copy_v3_v3(outloc, nLocMat[3]);
 }
 
-void BKE_armature_mat_pose_to_bone_ex(struct EvaluationContext *eval_ctx, Object *ob, bPoseChannel *pchan, float inmat[4][4], float outmat[4][4])
+void BKE_armature_mat_pose_to_bone_ex(const struct EvaluationContext *eval_ctx, Object *ob, bPoseChannel *pchan, float inmat[4][4], float outmat[4][4])
 {
        bPoseChannel work_pchan = *pchan;
 
@@ -2194,7 +2194,9 @@ void BKE_pose_where_is_bone_tail(bPoseChannel *pchan)
 /* pchan is validated, as having bone and parent pointer
  * 'do_extra': when zero skips loc/size/rot, constraints and strip modifiers.
  */
-void BKE_pose_where_is_bone(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, bPoseChannel *pchan, float ctime, bool do_extra)
+void BKE_pose_where_is_bone(
+        const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *ob, bPoseChannel *pchan, float ctime, bool do_extra)
 {
        /* This gives a chan_mat with actions (ipos) results. */
        if (do_extra)
@@ -2255,7 +2257,7 @@ void BKE_pose_where_is_bone(struct EvaluationContext *eval_ctx, Scene *scene, Ob
 
 /* This only reads anim data from channels, and writes to channels */
 /* This is the only function adding poses */
-void BKE_pose_where_is(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_pose_where_is(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
        bArmature *arm;
        Bone *bone;
index 5d579b97619e762cf184933bb25eccce832d6ac9..0bd4d3b864ff445a256aeb2332b61563cd9ec7f7 100644 (file)
@@ -266,8 +266,9 @@ static void splineik_init_tree(Scene *scene, Object *ob, float UNUSED(ctime))
 /* ----------- */
 
 /* Evaluate spline IK for a given bone */
-static void splineik_evaluate_bone(struct EvaluationContext *eval_ctx, tSplineIK_Tree *tree, Scene *scene, Object *ob, bPoseChannel *pchan,
-                                   int index, float ctime)
+static void splineik_evaluate_bone(
+        const struct EvaluationContext *eval_ctx, tSplineIK_Tree *tree, Scene *scene, Object *ob, bPoseChannel *pchan,
+        int index, float ctime)
 {
        bSplineIKConstraint *ikData = tree->ikData;
        float poseHead[3], poseTail[3], poseMat[4][4];
@@ -516,7 +517,7 @@ static void splineik_evaluate_bone(struct EvaluationContext *eval_ctx, tSplineIK
 }
 
 /* Evaluate the chain starting from the nominated bone */
-static void splineik_execute_tree(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, bPoseChannel *pchan_root, float ctime)
+static void splineik_execute_tree(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, bPoseChannel *pchan_root, float ctime)
 {
        tSplineIK_Tree *tree;
 
@@ -549,14 +550,16 @@ void BKE_pose_splineik_init_tree(Scene *scene, Object *ob, float ctime)
        splineik_init_tree(scene, ob, ctime);
 }
 
-void BKE_splineik_execute_tree(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, bPoseChannel *pchan_root, float ctime)
+void BKE_splineik_execute_tree(
+        const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *ob, bPoseChannel *pchan_root, float ctime)
 {
        splineik_execute_tree(eval_ctx, scene, ob, pchan_root, ctime);
 }
 
 /* *************** Depsgraph evaluation callbacks ************ */
 
-void BKE_pose_eval_init(struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_init(const struct EvaluationContext *eval_ctx,
                         Scene *scene,
                         Object *ob,
                         bPose *pose)
@@ -590,7 +593,7 @@ void BKE_pose_eval_init(struct EvaluationContext *eval_ctx,
        BKE_pose_splineik_init_tree(scene, ob, ctime);
 }
 
-void BKE_pose_eval_bone(struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_bone(const struct EvaluationContext *eval_ctx,
                         Scene *scene,
                         Object *ob,
                         bPoseChannel *pchan)
@@ -625,7 +628,7 @@ void BKE_pose_eval_bone(struct EvaluationContext *eval_ctx,
        }
 }
 
-void BKE_pose_constraints_evaluate(struct EvaluationContext *eval_ctx,
+void BKE_pose_constraints_evaluate(const struct EvaluationContext *eval_ctx,
                                    Scene *scene,
                                    Object *ob,
                                    bPoseChannel *pchan)
@@ -646,7 +649,7 @@ void BKE_pose_constraints_evaluate(struct EvaluationContext *eval_ctx,
        }
 }
 
-void BKE_pose_bone_done(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_pose_bone_done(const struct EvaluationContext *UNUSED(eval_ctx),
                         bPoseChannel *pchan)
 {
        float imat[4][4];
@@ -657,7 +660,7 @@ void BKE_pose_bone_done(struct EvaluationContext *UNUSED(eval_ctx),
        }
 }
 
-void BKE_pose_iktree_evaluate(struct EvaluationContext *eval_ctx,
+void BKE_pose_iktree_evaluate(const struct EvaluationContext *eval_ctx,
                               Scene *scene,
                               Object *ob,
                               bPoseChannel *rootchan)
@@ -667,7 +670,7 @@ void BKE_pose_iktree_evaluate(struct EvaluationContext *eval_ctx,
        BIK_execute_tree(eval_ctx, scene, ob, rootchan, ctime);
 }
 
-void BKE_pose_splineik_evaluate(struct EvaluationContext *eval_ctx,
+void BKE_pose_splineik_evaluate(const struct EvaluationContext *eval_ctx,
                                 Scene *scene,
                                 Object *ob,
                                 bPoseChannel *rootchan)
@@ -677,7 +680,7 @@ void BKE_pose_splineik_evaluate(struct EvaluationContext *eval_ctx,
        BKE_splineik_execute_tree(eval_ctx, scene, ob, rootchan, ctime);
 }
 
-void BKE_pose_eval_flush(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_pose_eval_flush(const struct EvaluationContext *UNUSED(eval_ctx),
                          Scene *scene,
                          Object *ob,
                          bPose *UNUSED(pose))
@@ -692,7 +695,7 @@ void BKE_pose_eval_flush(struct EvaluationContext *UNUSED(eval_ctx),
        ob->recalc &= ~OB_RECALC_ALL;
 }
 
-void BKE_pose_eval_proxy_copy(struct EvaluationContext *UNUSED(eval_ctx), Object *ob)
+void BKE_pose_eval_proxy_copy(const struct EvaluationContext *UNUSED(eval_ctx), Object *ob)
 {
        BLI_assert(ID_IS_LINKED_DATABLOCK(ob) && ob->proxy_from != NULL);
        DEBUG_PRINT("%s on %s\n", __func__, ob->id.name);
index 825a5870e54667e674f50b298cd6f8a4244c8065..09b793629f7317a238f1e4e427856d56fde66c3e 100644 (file)
@@ -345,7 +345,7 @@ static int do_init_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *resul
        return 1;
 }
 
-static int do_step_cloth(struct EvaluationContext *eval_ctx, Object *ob, ClothModifierData *clmd, DerivedMesh *result, int framenr)
+static int do_step_cloth(const struct EvaluationContext *eval_ctx, Object *ob, ClothModifierData *clmd, DerivedMesh *result, int framenr)
 {
        ClothVertex *verts = NULL;
        Cloth *cloth;
@@ -400,7 +400,7 @@ static int do_step_cloth(struct EvaluationContext *eval_ctx, Object *ob, ClothMo
 /************************************************
  * clothModifier_do - main simulation function
  ************************************************/
-void clothModifier_do(ClothModifierData *clmd, struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm, float (*vertexCos)[3])
+void clothModifier_do(ClothModifierData *clmd, const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm, float (*vertexCos)[3])
 {
        PointCache *cache;
        PTCacheID pid;
index 1bd7a01b1b861b12c7dd89841718fec2023514b8..e87086380bd0a578ed84bdd914a25567ac918502 100644 (file)
@@ -689,7 +689,7 @@ static bConstraintTypeInfo CTI_CONSTRNAME = {
 /* This function should be used for the get_target_matrix member of all 
  * constraints that are not picky about what happens to their target matrix.
  */
-static void default_get_tarmat(struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *UNUSED(cob), bConstraintTarget *ct, float UNUSED(ctime))
+static void default_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *UNUSED(cob), bConstraintTarget *ct, float UNUSED(ctime))
 {
        if (VALID_CONS_TARGET(ct))
                constraint_target_to_mat4(ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->flag, con->headtail);
@@ -1155,7 +1155,7 @@ static void kinematic_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
        }
 }
 
-static void kinematic_get_tarmat(struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void kinematic_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
        bKinematicConstraint *data = con->data;
        
@@ -1242,7 +1242,7 @@ static void followpath_flush_tars(bConstraint *con, ListBase *list, bool no_copy
        }
 }
 
-static void followpath_get_tarmat(struct EvaluationContext *eval_ctx, bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void followpath_get_tarmat(const struct EvaluationContext *eval_ctx, bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
        bFollowPathConstraint *data = con->data;
        
@@ -2024,7 +2024,7 @@ static void pycon_id_looper(bConstraint *con, ConstraintIDFunc func, void *userd
 }
 
 /* Whether this approach is maintained remains to be seen (aligorith) */
-static void pycon_get_tarmat(struct EvaluationContext *eval_ctx, bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void pycon_get_tarmat(const struct EvaluationContext *eval_ctx, bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
 #ifdef WITH_PYTHON
        bPythonConstraint *data = con->data;
@@ -2142,7 +2142,7 @@ static void actcon_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
        }
 }
 
-static void actcon_get_tarmat(struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void actcon_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
        bActionConstraint *data = con->data;
        
@@ -3131,7 +3131,7 @@ static void clampto_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
        }
 }
 
-static void clampto_get_tarmat(struct EvaluationContext *eval_ctx, bConstraint *UNUSED(con), bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void clampto_get_tarmat(const struct EvaluationContext *eval_ctx, bConstraint *UNUSED(con), bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
 #ifdef CYCLIC_DEPENDENCY_WORKAROUND
        if (VALID_CONS_TARGET(ct)) {
@@ -3474,7 +3474,7 @@ static void shrinkwrap_flush_tars(bConstraint *con, ListBase *list, bool no_copy
 }
 
 
-static void shrinkwrap_get_tarmat(struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void shrinkwrap_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
        bShrinkwrapConstraint *scon = (bShrinkwrapConstraint *) con->data;
        
@@ -3806,7 +3806,7 @@ static void splineik_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
        }
 }
 
-static void splineik_get_tarmat(struct EvaluationContext *eval_ctx, bConstraint *UNUSED(con), bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void splineik_get_tarmat(const struct EvaluationContext *eval_ctx, bConstraint *UNUSED(con), bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
 #ifdef CYCLIC_DEPENDENCY_WORKAROUND
        if (VALID_CONS_TARGET(ct)) {
@@ -4864,7 +4864,7 @@ bool BKE_constraints_proxylocked_owner(Object *ob, bPoseChannel *pchan)
  * None of the actual calculations of the matrices should be done here! Also, this function is
  * not to be used by any new constraints, particularly any that have multiple targets.
  */
-void BKE_constraint_target_matrix_get(struct EvaluationContext *eval_ctx, Scene *scene, bConstraint *con, int index, short ownertype, void *ownerdata, float mat[4][4], float ctime)
+void BKE_constraint_target_matrix_get(const struct EvaluationContext *eval_ctx, Scene *scene, bConstraint *con, int index, short ownertype, void *ownerdata, float mat[4][4], float ctime)
 {
        const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con);
        ListBase targets = {NULL, NULL};
@@ -4931,7 +4931,7 @@ void BKE_constraint_target_matrix_get(struct EvaluationContext *eval_ctx, Scene
 }
 
 /* Get the list of targets required for solving a constraint */
-void BKE_constraint_targets_for_solving_get(struct EvaluationContext *eval_ctx, bConstraint *con, bConstraintOb *cob, ListBase *targets, float ctime)
+void BKE_constraint_targets_for_solving_get(const struct EvaluationContext *eval_ctx, bConstraint *con, bConstraintOb *cob, ListBase *targets, float ctime)
 {
        const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con);
        
@@ -4966,7 +4966,7 @@ void BKE_constraint_targets_for_solving_get(struct EvaluationContext *eval_ctx,
  * BKE_constraints_make_evalob and BKE_constraints_clear_evalob should be called before and 
  * after running this function, to sort out cob
  */
-void BKE_constraints_solve(struct EvaluationContext *eval_ctx, ListBase *conlist, bConstraintOb *cob, float ctime)
+void BKE_constraints_solve(const struct EvaluationContext *eval_ctx, ListBase *conlist, bConstraintOb *cob, float ctime)
 {
        bConstraint *con;
        float oldmat[4][4];
index da05c05a694e951fa1c3dc83505e2d6496936530..d2ffbbcf27b61eb2194b3653d313bb20f5df825d 100644 (file)
@@ -99,7 +99,8 @@ static int modifiers_disable_subsurf_temporary(Object *ob)
 }
 
 /* disable subsurf temporal, get mapped cos, and enable it */
-float (*BKE_crazyspace_get_mapped_editverts(struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit))[3]
+float (*BKE_crazyspace_get_mapped_editverts(
+           const struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit))[3]
 {
        Mesh *me = obedit->data;
        DerivedMesh *dm;
@@ -250,8 +251,9 @@ void BKE_crazyspace_set_quats_mesh(Mesh *me, float (*origcos)[3], float (*mapped
 
 /** returns an array of deform matrices for crazyspace correction, and the
  * number of modifiers left */
-int BKE_crazyspace_get_first_deform_matrices_editbmesh(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BMEditMesh *em,
-                                        float (**deformmats)[3][3], float (**deformcos)[3])
+int BKE_crazyspace_get_first_deform_matrices_editbmesh(
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BMEditMesh *em,
+        float (**deformmats)[3][3], float (**deformcos)[3])
 {
        ModifierData *md;
        DerivedMesh *dm;
@@ -310,7 +312,9 @@ int BKE_crazyspace_get_first_deform_matrices_editbmesh(struct EvaluationContext
        return numleft;
 }
 
-int BKE_sculpt_get_first_deform_matrices(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float (**deformmats)[3][3], float (**deformcos)[3])
+int BKE_sculpt_get_first_deform_matrices(
+        const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *ob, float (**deformmats)[3][3], float (**deformcos)[3])
 {
        ModifierData *md;
        DerivedMesh *dm;
@@ -369,7 +373,7 @@ int BKE_sculpt_get_first_deform_matrices(struct EvaluationContext *eval_ctx, Sce
        return numleft;
 }
 
-void BKE_crazyspace_build_sculpt(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float (**deformmats)[3][3], float (**deformcos)[3])
+void BKE_crazyspace_build_sculpt(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float (**deformmats)[3][3], float (**deformcos)[3])
 {
        int totleft = BKE_sculpt_get_first_deform_matrices(eval_ctx, scene, ob, deformmats, deformcos);
 
index d44ddd8171cbe14e37941f3312b7d21a31261a8c..351f443cbc96d5fdd061e2b3de45ac2c04f0cde7 100644 (file)
@@ -1622,7 +1622,7 @@ float *BKE_curve_surf_make_orco(Object *ob)
 /* NOTE: This routine is tied to the order of vertex
  * built by displist and as passed to the renderer.
  */
-float *BKE_curve_make_orco(EvaluationContext *eval_ctx, Scene *scene, Object *ob, int *r_numVerts)
+float *BKE_curve_make_orco(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, int *r_numVerts)
 {
        Curve *cu = ob->data;
        DispList *dl;
@@ -1721,8 +1721,9 @@ float *BKE_curve_make_orco(EvaluationContext *eval_ctx, Scene *scene, Object *ob
 
 /* ***************** BEVEL ****************** */
 
-void BKE_curve_bevel_make(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *disp,
-                          const bool for_render, const bool use_render_resolution)
+void BKE_curve_bevel_make(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *disp,
+        const bool for_render, const bool use_render_resolution)
 {
        DispList *dl, *dlnew;
        Curve *bevcu, *cu;
@@ -4674,7 +4675,7 @@ void BKE_curve_rect_from_textbox(const struct Curve *cu, const struct TextBox *t
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_curve_eval_geometry(EvaluationContext *UNUSED(eval_ctx),
+void BKE_curve_eval_geometry(const EvaluationContext *UNUSED(eval_ctx),
                              Curve *curve)
 {
        if (G.debug & G_DEBUG_DEPSGRAPH) {
@@ -4685,7 +4686,7 @@ void BKE_curve_eval_geometry(EvaluationContext *UNUSED(eval_ctx),
        }
 }
 
-void BKE_curve_eval_path(EvaluationContext *UNUSED(eval_ctx),
+void BKE_curve_eval_path(const EvaluationContext *UNUSED(eval_ctx),
                          Curve *curve)
 {
        /* TODO(sergey): This will probably need to be a part of
index 0b88cc48a96085305b216d5bac29b5b3fa2bc671..00b8063110d14fc77871880033a5be4abe25d2a6 100644 (file)
@@ -1010,7 +1010,8 @@ static bool data_transfer_layersmapping_generate(
  * to get (as much as possible) exact copy of source data layout.
  */
 void BKE_object_data_transfer_layout(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, Object *ob_dst, const int data_types, const bool use_delete,
+        const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *ob_src, Object *ob_dst, const int data_types, const bool use_delete,
         const int fromlayers_select[DT_MULTILAYER_INDEX_MAX], const int tolayers_select[DT_MULTILAYER_INDEX_MAX])
 {
        DerivedMesh *dm_src;
@@ -1085,7 +1086,7 @@ void BKE_object_data_transfer_layout(
 }
 
 bool BKE_object_data_transfer_dm(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, Object *ob_dst, DerivedMesh *dm_dst,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, Object *ob_dst, DerivedMesh *dm_dst,
         const int data_types, bool use_create, const int map_vert_mode, const int map_edge_mode,
         const int map_loop_mode, const int map_poly_mode, SpaceTransform *space_transform, const bool auto_transform,
         const float max_distance, const float ray_radius, const float islands_handling_precision,
@@ -1457,7 +1458,7 @@ bool BKE_object_data_transfer_dm(
 }
 
 bool BKE_object_data_transfer_mesh(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, Object *ob_dst, const int data_types,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, Object *ob_dst, const int data_types,
         const bool use_create, const int map_vert_mode, const int map_edge_mode, const int map_loop_mode,
         const int map_poly_mode, SpaceTransform *space_transform, const bool auto_transform,
         const float max_distance, const float ray_radius, const float islands_handling_precision,
index fd22aaa291bc020a1b4e635d9fe1bfb461d29b49..8316d68b35c749030f1f30f0add42414999eb110 100644 (file)
@@ -678,7 +678,7 @@ static void curve_to_filledpoly(Curve *cu, ListBase *UNUSED(nurb), ListBase *dis
  * - first point left, last point right
  * - based on subdivided points in original curve, not on points in taper curve (still)
  */
-static float displist_calc_taper(EvaluationContext *eval_ctx, Scene *scene, Object *taperobj, float fac)
+static float displist_calc_taper(const EvaluationContext *eval_ctx, Scene *scene, Object *taperobj, float fac)
 {
        DispList *dl;
 
@@ -718,14 +718,14 @@ static float displist_calc_taper(EvaluationContext *eval_ctx, Scene *scene, Obje
        return 1.0;
 }
 
-float BKE_displist_calc_taper(EvaluationContext *eval_ctx, Scene *scene, Object *taperobj, int cur, int tot)
+float BKE_displist_calc_taper(const EvaluationContext *eval_ctx, Scene *scene, Object *taperobj, int cur, int tot)
 {
        float fac = ((float)cur) / (float)(tot - 1);
 
        return displist_calc_taper(eval_ctx, scene, taperobj, fac);
 }
 
-void BKE_displist_make_mball(EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_displist_make_mball(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
        if (!ob || ob->type != OB_MBALL)
                return;
@@ -748,7 +748,7 @@ void BKE_displist_make_mball(EvaluationContext *eval_ctx, Scene *scene, Object *
        }
 }
 
-void BKE_displist_make_mball_forRender(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
+void BKE_displist_make_mball_forRender(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
 {
        BKE_mball_polygonize(eval_ctx, scene, ob, dispbase);
        BKE_mball_texspace_calc(ob);
@@ -798,8 +798,9 @@ static ModifierData *curve_get_tessellate_point(Scene *scene, Object *ob,
        return pretessellatePoint;
 }
 
-static void curve_calc_modifiers_pre(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *nurb,
-                                     const bool for_render, const bool use_render_resolution)
+static void curve_calc_modifiers_pre(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *nurb,
+        const bool for_render, const bool use_render_resolution)
 {
        VirtualModifierData virtualModifierData;
        ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
@@ -908,9 +909,10 @@ static void displist_apply_allverts(ListBase *dispbase, float (*allverts)[3])
        }
 }
 
-static void curve_calc_modifiers_post(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *nurb,
-                                      ListBase *dispbase, DerivedMesh **r_dm_final,
-                                      const bool for_render, const bool use_render_resolution)
+static void curve_calc_modifiers_post(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *nurb,
+        ListBase *dispbase, DerivedMesh **r_dm_final,
+        const bool for_render, const bool use_render_resolution)
 {
        VirtualModifierData virtualModifierData;
        ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
@@ -1090,7 +1092,7 @@ static void displist_surf_indices(DispList *dl)
        }
 }
 
-static DerivedMesh *create_orco_dm(EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+static DerivedMesh *create_orco_dm(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
        DerivedMesh *dm;
        ListBase disp = {NULL, NULL};
@@ -1134,8 +1136,9 @@ static void add_orco_dm(Object *ob, DerivedMesh *dm, DerivedMesh *orcodm)
                DM_add_vert_layer(dm, CD_ORCO, CD_ASSIGN, orco);
 }
 
-static void curve_calc_orcodm(EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm_final,
-                              const bool for_render, const bool use_render_resolution)
+static void curve_calc_orcodm(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm_final,
+        const bool for_render, const bool use_render_resolution)
 {
        /* this function represents logic of mesh's orcodm calculation
         * for displist-based objects
@@ -1201,9 +1204,10 @@ static void curve_calc_orcodm(EvaluationContext *eval_ctx, Scene *scene, Object
        orcodm->release(orcodm);
 }
 
-void BKE_displist_make_surf(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
-                            DerivedMesh **r_dm_final,
-                            const bool for_render, const bool for_orco, const bool use_render_resolution)
+void BKE_displist_make_surf(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
+        DerivedMesh **r_dm_final,
+        const bool for_render, const bool for_orco, const bool use_render_resolution)
 {
        ListBase nubase = {NULL, NULL};
        Nurb *nu;
@@ -1513,9 +1517,10 @@ static void calc_bevfac_mapping(Curve *cu, BevList *bl, Nurb *nu,
        }
 }
 
-static void do_makeDispListCurveTypes(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
-                                      DerivedMesh **r_dm_final,
-                                      const bool for_render, const bool for_orco, const bool use_render_resolution)
+static void do_makeDispListCurveTypes(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
+        DerivedMesh **r_dm_final,
+        const bool for_render, const bool for_orco, const bool use_render_resolution)
 {
        Curve *cu = ob->data;
 
@@ -1761,7 +1766,7 @@ static void do_makeDispListCurveTypes(EvaluationContext *eval_ctx, Scene *scene,
        }
 }
 
-void BKE_displist_make_curveTypes(EvaluationContext *eval_ctx, Scene *scene, Object *ob, const bool for_orco)
+void BKE_displist_make_curveTypes(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, const bool for_orco)
 {
        ListBase *dispbase;
 
@@ -1784,9 +1789,10 @@ void BKE_displist_make_curveTypes(EvaluationContext *eval_ctx, Scene *scene, Obj
        boundbox_displist_object(ob);
 }
 
-void BKE_displist_make_curveTypes_forRender(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
-                                            DerivedMesh **r_dm_final, const bool for_orco,
-                                            const bool use_render_resolution)
+void BKE_displist_make_curveTypes_forRender(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
+        DerivedMesh **r_dm_final, const bool for_orco,
+        const bool use_render_resolution)
 {
        if (ob->curve_cache == NULL) {
                ob->curve_cache = MEM_callocN(sizeof(CurveCache), "CurveCache for Curve");
@@ -1795,7 +1801,8 @@ void BKE_displist_make_curveTypes_forRender(EvaluationContext *eval_ctx, Scene *
        do_makeDispListCurveTypes(eval_ctx, scene, ob, dispbase, r_dm_final, true, for_orco, use_render_resolution);
 }
 
-void BKE_displist_make_curveTypes_forOrco(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
+void BKE_displist_make_curveTypes_forOrco(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
 {
        if (ob->curve_cache == NULL) {
                ob->curve_cache = MEM_callocN(sizeof(CurveCache), "CurveCache for Curve");
@@ -1805,9 +1812,10 @@ void BKE_displist_make_curveTypes_forOrco(EvaluationContext *eval_ctx, Scene *sc
 }
 
 /* add Orco layer to the displist object which has got derived mesh and return orco */
-float *BKE_displist_make_orco(EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm_final,
-                              const bool for_render,
-                              const bool use_render_resolution)
+float *BKE_displist_make_orco(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm_final,
+        const bool for_render,
+        const bool use_render_resolution)
 {
        float *orco;
 
index 50a476c3fdeedddcba9cc7316e808ad9cd209d7b..724b30d0cb1f40ff1d77ae2f1f78393cdb60a21d 100644 (file)
@@ -1975,7 +1975,9 @@ static void canvas_copyDerivedMesh(DynamicPaintCanvasSettings *canvas, DerivedMe
 /*
  *     Updates derived mesh copy and processes dynamic paint step / caches.
  */
-static void dynamicPaint_frameUpdate(DynamicPaintModifierData *pmd, struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm)
+static void dynamicPaint_frameUpdate(
+        DynamicPaintModifierData *pmd, const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *ob, DerivedMesh *dm)
 {
        if (pmd->canvas) {
                DynamicPaintCanvasSettings *canvas = pmd->canvas;
@@ -2057,7 +2059,9 @@ static void dynamicPaint_frameUpdate(DynamicPaintModifierData *pmd, struct Evalu
 }
 
 /* Modifier call. Processes dynamic paint modifier step. */
-DerivedMesh *dynamicPaint_Modifier_do(DynamicPaintModifierData *pmd, struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm)
+DerivedMesh *dynamicPaint_Modifier_do(
+        DynamicPaintModifierData *pmd, const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *ob, DerivedMesh *dm)
 {
        if (pmd->canvas) {
                DerivedMesh *ret;
@@ -3578,7 +3582,8 @@ static void dynamic_paint_brush_velocity_compute_cb(void *userdata, const int i)
 }
 
 static void dynamicPaint_brushMeshCalculateVelocity(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DynamicPaintBrushSettings *brush, Vec3f **brushVel, float timescale)
+        const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *ob, DynamicPaintBrushSettings *brush, Vec3f **brushVel, float timescale)
 {
        float prev_obmat[4][4];
        DerivedMesh *dm_p, *dm_c;
@@ -3636,7 +3641,7 @@ static void dynamicPaint_brushMeshCalculateVelocity(
 }
 
 /* calculate velocity for object center point */
-static void dynamicPaint_brushObjectCalculateVelocity(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, Vec3f *brushVel, float timescale)
+static void dynamicPaint_brushObjectCalculateVelocity(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, Vec3f *brushVel, float timescale)
 {
        float prev_obmat[4][4];
        float cur_loc[3] = {0.0f}, prev_loc[3] = {0.0f};
@@ -4032,7 +4037,7 @@ static void dynamic_paint_paint_mesh_cell_point_cb_ex(
        }
 }
 
-static int dynamicPaint_paintMesh(struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface,
+static int dynamicPaint_paintMesh(const struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface,
                                   DynamicPaintBrushSettings *brush,
                                   Object *brushOb,
                                   BrushMaterials *bMats,
@@ -4526,7 +4531,7 @@ static void dynamic_paint_paint_single_point_cb_ex(
 }
 
 static int dynamicPaint_paintSinglePoint(
-        struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface, float *pointCoord, DynamicPaintBrushSettings *brush,
+        const struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface, float *pointCoord, DynamicPaintBrushSettings *brush,
         Object *brushOb, BrushMaterials *bMats, Scene *scene, float timescale)
 {
        PaintSurfaceData *sData = surface->data;
@@ -4841,7 +4846,7 @@ static void dynamic_paint_prepare_effect_cb(void *userdata, const int index)
 }
 
 static int dynamicPaint_prepareEffectStep(
-        struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface, Scene *scene, Object *ob, float **force, float timescale)
+        const struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface, Scene *scene, Object *ob, float **force, float timescale)
 {
        double average_force = 0.0f;
        float shrink_speed = 0.0f, spread_speed = 0.0f;
@@ -5754,7 +5759,7 @@ static int dynamicPaint_generateBakeData(DynamicPaintSurface *surface, const Sce
 /*
  * Do Dynamic Paint step. Paints scene brush objects of current state/frame to the surface.
  */
-static int dynamicPaint_doStep(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DynamicPaintSurface *surface, float timescale, float subframe)
+static int dynamicPaint_doStep(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DynamicPaintSurface *surface, float timescale, float subframe)
 {
        PaintSurfaceData *sData = surface->data;
        PaintBakeData *bData = sData->bData;
@@ -5925,7 +5930,9 @@ static int dynamicPaint_doStep(struct EvaluationContext *eval_ctx, Scene *scene,
 /*
  * Calculate a single frame and included subframes for surface
  */
-int dynamicPaint_calculateFrame(DynamicPaintSurface *surface, struct EvaluationContext *eval_ctx, Scene *scene, Object *cObject, int frame)
+int dynamicPaint_calculateFrame(
+        DynamicPaintSurface *surface, const struct EvaluationContext *eval_ctx,
+        Scene *scene, Object *cObject, int frame)
 {
        float timescale = 1.0f;
 
index 040768dddef509da36c9f7ee74b0eb87fa7e3901..2beb15ed995d599e60138282cfe833e90677ec49 100644 (file)
@@ -2169,7 +2169,7 @@ static void cage_mapped_verts_callback(
        }
 }
 
-float (*BKE_editmesh_vertexCos_get(struct EvaluationContext *eval_ctx, BMEditMesh *em, Scene *scene, int *r_numVerts))[3]
+float (*BKE_editmesh_vertexCos_get(const struct EvaluationContext *eval_ctx, BMEditMesh *em, Scene *scene, int *r_numVerts))[3]
 {
        DerivedMesh *cage, *final;
        BLI_bitmap *visit_bitmap;
index 521f91b2afa1d723d02cdaa7007aed254f568161..36f7f6d604ebfc7c44f8f02d9e30632e88e4d074 100644 (file)
@@ -147,7 +147,7 @@ void free_partdeflect(PartDeflect *pd)
        MEM_freeN(pd);
 }
 
-static EffectorCache *new_effector_cache(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, ParticleSystem *psys, PartDeflect *pd)
+static EffectorCache *new_effector_cache(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, ParticleSystem *psys, PartDeflect *pd)
 {
        EffectorCache *eff = MEM_callocN(sizeof(EffectorCache), "EffectorCache");
        eff->eval_ctx = eval_ctx;
@@ -158,7 +158,7 @@ static EffectorCache *new_effector_cache(struct EvaluationContext *eval_ctx, Sce
        eff->frame = -1;
        return eff;
 }
-static void add_object_to_effectors(ListBase **effectors, struct EvaluationContext *eval_ctx, Scene *scene, EffectorWeights *weights, Object *ob, Object *ob_src, bool for_simulation)
+static void add_object_to_effectors(ListBase **effectors, const struct EvaluationContext *eval_ctx, Scene *scene, EffectorWeights *weights, Object *ob, Object *ob_src, bool for_simulation)
 {
        EffectorCache *eff = NULL;
 
@@ -183,7 +183,7 @@ static void add_object_to_effectors(ListBase **effectors, struct EvaluationConte
 
        BLI_addtail(*effectors, eff);
 }
-static void add_particles_to_effectors(ListBase **effectors, struct EvaluationContext *eval_ctx, Scene *scene, EffectorWeights *weights, Object *ob, ParticleSystem *psys, ParticleSystem *psys_src, bool for_simulation)
+static void add_particles_to_effectors(ListBase **effectors, const struct EvaluationContext *eval_ctx, Scene *scene, EffectorWeights *weights, Object *ob, ParticleSystem *psys, ParticleSystem *psys_src, bool for_simulation)
 {
        ParticleSettings *part= psys->part;
 
@@ -209,8 +209,9 @@ static void add_particles_to_effectors(ListBase **effectors, struct EvaluationCo
 }
 
 /* returns ListBase handle with objects taking part in the effecting */
-ListBase *pdInitEffectors(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, ParticleSystem *psys_src,
-                          EffectorWeights *weights, bool for_simulation)
+ListBase *pdInitEffectors(
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, ParticleSystem *psys_src,
+        EffectorWeights *weights, bool for_simulation)
 {
        SceneLayer *sl;
        Base *base;
@@ -278,7 +279,7 @@ void pdEndEffectors(ListBase **effectors)
        }
 }
 
-static void precalculate_effector(struct EvaluationContext *eval_ctx, EffectorCache *eff)
+static void precalculate_effector(const struct EvaluationContext *eval_ctx, EffectorCache *eff)
 {
        unsigned int cfra = (unsigned int)(eff->scene->r.cfra >= 0 ? eff->scene->r.cfra : -eff->scene->r.cfra);
        if (!eff->pd->rng)
@@ -318,7 +319,7 @@ static void precalculate_effector(struct EvaluationContext *eval_ctx, EffectorCa
        }
 }
 
-void pdPrecalculateEffectors(struct EvaluationContext *eval_ctx, ListBase *effectors)
+void pdPrecalculateEffectors(const struct EvaluationContext *eval_ctx, ListBase *effectors)
 {
        if (effectors) {
                EffectorCache *eff = effectors->first;
index 96637fa54584b5c03798a36e47e5ac95779454b6..12b9abc6d03164f9f5c6f1ffd5ea841fd2fa23d2 100644 (file)
@@ -65,7 +65,7 @@
 // file handling
 //-------------------------------------------------------------------------------
 
-void initElbeemMesh(struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+void initElbeemMesh(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
                     int *numVertices, float **vertices,
                     int *numTriangles, int **triangles,
                     int useGlobalCoords, int modifierIndex)
index d584cb03b906079b51d50df015010191c36cb7fa..5ccbe9f705449bfd2774e9c0c3e12186874b332d 100644 (file)
@@ -327,7 +327,7 @@ static void group_replaces_nla(Object *parent, Object *target, char mode)
  * you can draw everything, leaves tags in objects to signal it needs further updating */
 
 /* note: does not work for derivedmesh and render... it recreates all again in convertblender.c */
-void BKE_group_handle_recalc_and_update(struct EvaluationContext *eval_ctx, Scene *scene, Object *UNUSED(parent), Group *group)
+void BKE_group_handle_recalc_and_update(const struct EvaluationContext *eval_ctx, Scene *scene, Object *UNUSED(parent), Group *group)
 {
        GroupObject *go;
        
index 9f3820205554f0f85f25853eec9c2909cd7d5b2b..0f26f53113fde7806e64714ea4f782157ff9efa6 100644 (file)
@@ -603,7 +603,7 @@ static bool where_on_path_deform(Object *ob, float ctime, float vec[4], float di
 /* co: local coord, result local too */
 /* returns quaternion for rotation, using cd->no_rot_axis */
 /* axis is using another define!!! */
-static bool calc_curve_deform(struct EvaluationContext *eval_ctx, Scene *scene, Object *par, float co[3],
+static bool calc_curve_deform(const struct EvaluationContext *eval_ctx, Scene *scene, Object *par, float co[3],
                               const short axis, CurveDeform *cd, float r_quat[4])
 {
        Curve *cu = par->data;
@@ -707,7 +707,8 @@ static bool calc_curve_deform(struct EvaluationContext *eval_ctx, Scene *scene,
 }
 
 void curve_deform_verts(
-        struct EvaluationContext *eval_ctx, Scene *scene, Object *cuOb, Object *target, DerivedMesh *dm, float (*vertexCos)[3],
+        const struct EvaluationContext *eval_ctx, Scene *scene,
+        Object *cuOb, Object *target, DerivedMesh *dm, float (*vertexCos)[3],
         int numVerts, const char *vgroup, short defaxis)
 {
        Curve *cu;
@@ -825,7 +826,7 @@ void curve_deform_verts(
 /* input vec and orco = local coord in armature space */
 /* orco is original not-animated or deformed reference point */
 /* result written in vec and mat */
-void curve_deform_vector(struct EvaluationContext *eval_ctx, Scene *scene, Object *cuOb, Object *target,
+void curve_deform_vector(const struct EvaluationContext *eval_ctx, Scene *scene, Object *cuOb, Object *target,
                          float orco[3], float vec[3], float mat[3][3], int no_rot_axis)
 {
        CurveDeform cd;
@@ -1034,7 +1035,7 @@ void BKE_lattice_vertexcos_apply(struct Object *ob, float (*vertexCos)[3])
        }
 }
 
-void BKE_lattice_modifiers_calc(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_lattice_modifiers_calc(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
        Lattice *lt = ob->data;
        VirtualModifierData virtualModifierData;
@@ -1235,7 +1236,7 @@ void BKE_lattice_translate(Lattice *lt, float offset[3], bool do_keys)
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_lattice_eval_geometry(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_lattice_eval_geometry(const struct EvaluationContext *UNUSED(eval_ctx),
                                Lattice *UNUSED(latt))
 {
 }
index 56b9bd2cc1e61b70acaf583745f5435dd119998e..16a4477977f202f42a3d990f2c33a2727ed83a28 100644 (file)
@@ -1734,7 +1734,7 @@ static void idproperty_reset(IDProperty **props, IDProperty *props_ref)
        }
 }
 
-void BKE_layer_eval_layer_collection_pre(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_layer_eval_layer_collection_pre(const struct EvaluationContext *UNUSED(eval_ctx),
                                          Scene *scene, SceneLayer *scene_layer)
 {
        DEBUG_PRINT("%s on %s (%p)\n", __func__, scene_layer->name, scene_layer);
@@ -1751,7 +1751,7 @@ void BKE_layer_eval_layer_collection_pre(struct EvaluationContext *UNUSED(eval_c
        scene_layer->flag |= SCENE_LAYER_ENGINE_DIRTY;
 }
 
-void BKE_layer_eval_layer_collection(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_layer_eval_layer_collection(const struct EvaluationContext *UNUSED(eval_ctx),
                                      LayerCollection *layer_collection,
                                      LayerCollection *parent_layer_collection)
 {
@@ -1798,7 +1798,7 @@ void BKE_layer_eval_layer_collection(struct EvaluationContext *UNUSED(eval_ctx),
        }
 }
 
-void BKE_layer_eval_layer_collection_post(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_layer_eval_layer_collection_post(const struct EvaluationContext *UNUSED(eval_ctx),
                                           SceneLayer *scene_layer)
 {
        DEBUG_PRINT("%s on %s (%p)\n", __func__, scene_layer->name, scene_layer);
index 5caeff4df1cc2ec77e95fbbd84a5c5cc91d56708..be3cc288818f31de9ce4c7c842dbaedfed68c70b 100644 (file)
@@ -1815,7 +1815,7 @@ bool BKE_object_material_edit_image_set(Object *ob, short mat_nr, Image *image)
        return false;
 }
 
-void BKE_material_eval(struct EvaluationContext *UNUSED(eval_ctx), Material *material)
+void BKE_material_eval(const struct EvaluationContext *UNUSED(eval_ctx), Material *material)
 {
        if (G.debug & G_DEBUG_DEPSGRAPH) {
                printf("%s on %s (%p)\n", __func__, material->id.name, material);
index fe3ae9ccb18f85aed8568a483d2bf6cc30c49bcf..f1e549b14006091f8bd93bce55d0e4e7d6064c22 100644 (file)
@@ -538,7 +538,7 @@ void BKE_mball_select_swap(struct MetaBall *mb)
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_mball_eval_geometry(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_mball_eval_geometry(const struct EvaluationContext *UNUSED(eval_ctx),
                              MetaBall *UNUSED(mball))
 {
 }
index d897213d3626399132169535dfd0aa0828b63dc0..1d9c580d45b32bcefea583b681cd1c18b3a7c93a 100644 (file)
@@ -1079,7 +1079,7 @@ static void polygonize(PROCESS *process)
  * Iterates over ALL objects in the scene and all of its sets, including
  * making all duplis(not only metas). Copies metas to mainb array.
  * Computes bounding boxes for building BVH. */
-static void init_meta(EvaluationContext *eval_ctx, PROCESS *process, Scene *scene, Object *ob)
+static void init_meta(const EvaluationContext *eval_ctx, PROCESS *process, Scene *scene, Object *ob)
 {
        Scene *sce_iter = scene;
        BaseLegacy *base;
@@ -1256,7 +1256,7 @@ static void init_meta(EvaluationContext *eval_ctx, PROCESS *process, Scene *scen
        }
 }
 
-void BKE_mball_polygonize(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
+void BKE_mball_polygonize(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
 {
        MetaBall *mb;
        DispList *dl;
index a52b8cc030d090b9d8edba7073bc95daef12aa95..a0edc75a7b4b468b615cd5584099defba4c61001 100644 (file)
@@ -1631,7 +1631,7 @@ void BKE_mesh_to_curve_nurblist(DerivedMesh *dm, ListBase *nurblist, const int e
        }
 }
 
-void BKE_mesh_to_curve(EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_mesh_to_curve(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
        /* make new mesh data from the original copy */
        DerivedMesh *dm = mesh_get_derived_final(eval_ctx, scene, ob, CD_MASK_MESH);
@@ -2469,7 +2469,7 @@ void BKE_mesh_split_faces(Mesh *mesh, bool free_loop_normals)
 
 /* settings: 1 - preview, 2 - render */
 Mesh *BKE_mesh_new_from_object(
-        EvaluationContext *eval_ctx, Main *bmain, Scene *sce, Object *ob,
+        const EvaluationContext *eval_ctx, Main *bmain, Scene *sce, Object *ob,
         int apply_modifiers, int settings, int calc_tessface, int calc_undeformed)
 {
        Mesh *tmpmesh;
@@ -2706,7 +2706,7 @@ Mesh *BKE_mesh_new_from_object(
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_mesh_eval_geometry(EvaluationContext *UNUSED(eval_ctx),
+void BKE_mesh_eval_geometry(const EvaluationContext *UNUSED(eval_ctx),
                             Mesh *mesh)
 {
        if (G.debug & G_DEBUG_DEPSGRAPH) {
index cefdbc3edc1efd6901ff9088968e5676208b0f44..1a146dc67d14c0178c803a90f49b571db9ebaed9 100644 (file)
@@ -757,7 +757,7 @@ void modifier_path_init(char *path, int path_maxlen, const char *name)
 /* wrapper around ModifierTypeInfo.applyModifier that ensures valid normals */
 
 struct DerivedMesh *modwrap_applyModifier(
-        ModifierData *md, struct EvaluationContext *eval_ctx,
+        ModifierData *md, const struct EvaluationContext *eval_ctx,
         Object *ob, struct DerivedMesh *dm,
         ModifierApplyFlag flag)
 {
@@ -771,7 +771,7 @@ struct DerivedMesh *modwrap_applyModifier(
 }
 
 struct DerivedMesh *modwrap_applyModifierEM(
-        ModifierData *md, struct EvaluationContext *eval_ctx,
+        ModifierData *md, const struct EvaluationContext *eval_ctx,
         Object *ob, struct BMEditMesh *em,
         DerivedMesh *dm,
         ModifierApplyFlag flag)
@@ -786,7 +786,7 @@ struct DerivedMesh *modwrap_applyModifierEM(
 }
 
 void modwrap_deformVerts(
-        ModifierData *md, struct EvaluationContext *eval_ctx,
+        ModifierData *md, const struct EvaluationContext *eval_ctx,
         Object *ob, DerivedMesh *dm,
         float (*vertexCos)[3], int numVerts,
         ModifierApplyFlag flag)
@@ -801,7 +801,7 @@ void modwrap_deformVerts(
 }
 
 void modwrap_deformVertsEM(
-        ModifierData *md, struct EvaluationContext *eval_ctx, Object *ob,
+        ModifierData *md, const struct EvaluationContext *eval_ctx, Object *ob,
         struct BMEditMesh *em, DerivedMesh *dm,
         float (*vertexCos)[3], int numVerts)
 {
index 3e4828afb55c27bf9a9382f6bace73dbcd3d5f90..7ef4b588dcd74f9b4c1a20ae2a4800f2b8a3f4de 100644 (file)
@@ -276,7 +276,7 @@ static MDisps *multires_mdisps_initialize_hidden(Mesh *me, int level)
        return mdisps;
 }
 
-DerivedMesh *get_multires_dm(struct EvaluationContext *eval_ctx, Scene *scene, MultiresModifierData *mmd, Object *ob)
+DerivedMesh *get_multires_dm(const struct EvaluationContext *eval_ctx, Scene *scene, MultiresModifierData *mmd, Object *ob)
 {
        ModifierData *md = (ModifierData *)mmd;
        const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
@@ -397,7 +397,7 @@ void multires_force_render_update(Object *ob)
                multires_force_update(ob);
 }
 
-int multiresModifier_reshapeFromDM(struct EvaluationContext *eval_ctx, Scene *scene, MultiresModifierData *mmd,
+int multiresModifier_reshapeFromDM(const struct EvaluationContext *eval_ctx, Scene *scene, MultiresModifierData *mmd,
                                    Object *ob, DerivedMesh *srcdm)
 {
        DerivedMesh *mrdm = get_multires_dm(eval_ctx, scene, mmd, ob);
@@ -419,13 +419,13 @@ int multiresModifier_reshapeFromDM(struct EvaluationContext *eval_ctx, Scene *sc
 }
 
 /* Returns 1 on success, 0 if the src's totvert doesn't match */
-int multiresModifier_reshape(struct EvaluationContext *eval_ctx, Scene *scene, MultiresModifierData *mmd, Object *dst, Object *src)
+int multiresModifier_reshape(const struct EvaluationContext *eval_ctx, Scene *scene, MultiresModifierData *mmd, Object *dst, Object *src)
 {
        DerivedMesh *srcdm = mesh_get_derived_final(eval_ctx, scene, src, CD_MASK_BAREMESH);
        return multiresModifier_reshapeFromDM(eval_ctx, scene, mmd, dst, srcdm);
 }
 
-int multiresModifier_reshapeFromDeformMod(struct EvaluationContext *eval_ctx, Scene *scene, MultiresModifierData *mmd,
+int multiresModifier_reshapeFromDeformMod(const struct EvaluationContext *eval_ctx, Scene *scene, MultiresModifierData *mmd,
                                           Object *ob, ModifierData *md)
 {
        const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
@@ -2174,7 +2174,7 @@ static void multires_sync_levels(Scene *scene, Object *ob_src, Object *ob_dst)
        }
 }
 
-static void multires_apply_smat(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float smat[3][3])
+static void multires_apply_smat(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float smat[3][3])
 {
        DerivedMesh *dm = NULL, *cddm = NULL, *subdm = NULL;
        CCGElem **gridData, **subGridData;
@@ -2276,7 +2276,7 @@ int multires_mdisp_corners(MDisps *s)
        return 0;
 }
 
-void multiresModifier_scale_disp(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void multiresModifier_scale_disp(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
        float smat[3][3];
 
@@ -2286,7 +2286,7 @@ void multiresModifier_scale_disp(struct EvaluationContext *eval_ctx, Scene *scen
        multires_apply_smat(eval_ctx, scene, ob, smat);
 }
 
-void multiresModifier_prepare_join(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, Object *to_ob)
+void multiresModifier_prepare_join(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, Object *to_ob)
 {
        float smat[3][3], tmat[3][3], mat[3][3];
        multires_sync_levels(scene, to_ob, ob);
index b90371a448e368cf1bcfc2ac2730f0aecc86dcda..9f48d8f6b110375fa9981a206ec7290383061e82 100644 (file)
@@ -2104,8 +2104,9 @@ static bool where_is_object_parslow(Object *ob, float obmat[4][4], float slowmat
 }
 
 /* note, scene is the active scene while actual_scene is the scene the object resides in */
-void BKE_object_where_is_calc_time_ex(EvaluationContext *eval_ctx, Scene *scene, Object *ob, float ctime,
-                                      RigidBodyWorld *rbw, float r_originmat[3][3])
+void BKE_object_where_is_calc_time_ex(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, float ctime,
+        RigidBodyWorld *rbw, float r_originmat[3][3])
 {
        if (ob == NULL) return;
        
@@ -2149,7 +2150,7 @@ void BKE_object_where_is_calc_time_ex(EvaluationContext *eval_ctx, Scene *scene,
        else ob->transflag &= ~OB_NEG_SCALE;
 }
 
-void BKE_object_where_is_calc_time(EvaluationContext *eval_ctx, Scene *scene, Object *ob, float ctime)
+void BKE_object_where_is_calc_time(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, float ctime)
 {
        BKE_object_where_is_calc_time_ex(eval_ctx, scene, ob, ctime, NULL, NULL);
 }
@@ -2176,17 +2177,17 @@ void BKE_object_where_is_calc_mat4(Scene *scene, Object *ob, float obmat[4][4])
        }
 }
 
-void BKE_object_where_is_calc_ex(EvaluationContext *eval_ctx, Scene *scene, RigidBodyWorld *rbw, Object *ob, float r_originmat[3][3])
+void BKE_object_where_is_calc_ex(const EvaluationContext *eval_ctx, Scene *scene, RigidBodyWorld *rbw, Object *ob, float r_originmat[3][3])
 {
        BKE_object_where_is_calc_time_ex(eval_ctx, scene, ob, BKE_scene_frame_get(scene), rbw, r_originmat);
 }
-void BKE_object_where_is_calc(EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_object_where_is_calc(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
        BKE_object_where_is_calc_time_ex(eval_ctx, scene, ob, BKE_scene_frame_get(scene), NULL, NULL);
 }
 
 /* for calculation of the inverse parent transform, only used for editor */
-void BKE_object_workob_calc_parent(EvaluationContext *eval_ctx, Scene *scene, Object *ob, Object *workob)
+void BKE_object_workob_calc_parent(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, Object *workob)
 {
        BKE_object_workob_clear(workob);
        
@@ -2638,7 +2639,7 @@ bool BKE_object_parent_loop_check(const Object *par, const Object *ob)
 /* the main object update call, for object matrix, constraints, keys and displist (modifiers) */
 /* requires flags to be set! */
 /* Ideally we shouldn't have to pass the rigid body world, but need bigger restructuring to avoid id */
-void BKE_object_handle_update_ex(EvaluationContext *eval_ctx,
+void BKE_object_handle_update_ex(const EvaluationContext *eval_ctx,
                                  Scene *scene, Object *ob,
                                  RigidBodyWorld *rbw,
                                  const bool do_proxy_update)
@@ -2717,7 +2718,7 @@ void BKE_object_handle_update_ex(EvaluationContext *eval_ctx,
  * e.g. "scene" <-- set 1 <-- set 2 ("ob" lives here) <-- set 3 <-- ... <-- set n
  * rigid bodies depend on their world so use BKE_object_handle_update_ex() to also pass along the corrent rigid body world
  */
-void BKE_object_handle_update(EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_object_handle_update(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
        BKE_object_handle_update_ex(eval_ctx, scene, ob, NULL, true);
 }
@@ -3633,9 +3634,9 @@ static void object_cacheIgnoreClear(Object *ob, int state)
 /* Note: this function should eventually be replaced by depsgraph functionality.
  * Avoid calling this in new code unless there is a very good reason for it!
  */
-bool BKE_object_modifier_update_subframe(EvaluationContext *eval_ctx, Scene *scene, Object *ob, bool update_mesh,
-                                         int parent_recursion, float frame,
-                                         int type)
+bool BKE_object_modifier_update_subframe(
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, bool update_mesh,
+        int parent_recursion, float frame, int type)
 {
        ModifierData *md = modifiers_findByType(ob, (ModifierType)type);
        bConstraint *con;
index 66cacd67a85447d3feead407f8e011fc3758c7e3..c25207d81bf91fc541db75112cfc9b322200cee1 100644 (file)
@@ -69,7 +69,7 @@
 /* Dupli-Geometry */
 
 typedef struct DupliContext {
-       EvaluationContext *eval_ctx;
+       const EvaluationContext *eval_ctx;
        bool do_update;
        bool animated;
        Group *group; /* XXX child objects are selected from this group if set, could be nicer */
@@ -95,7 +95,7 @@ typedef struct DupliGenerator {
 static const DupliGenerator *get_dupli_generator(const DupliContext *ctx);
 
 /* create initial context for root object */
-static void init_context(DupliContext *r_ctx, EvaluationContext *eval_ctx, Scene *scene, Object *ob, float space_mat[4][4], bool update)
+static void init_context(DupliContext *r_ctx, const EvaluationContext *eval_ctx, Scene *scene, Object *ob, float space_mat[4][4], bool update)
 {
        r_ctx->eval_ctx = eval_ctx;
        r_ctx->scene = scene;
@@ -1216,7 +1216,7 @@ static const DupliGenerator *get_dupli_generator(const DupliContext *ctx)
 /* ---- ListBase dupli container implementation ---- */
 
 /* Returns a list of DupliObject */
-ListBase *object_duplilist_ex(EvaluationContext *eval_ctx, Scene *scene, Object *ob, bool update)
+ListBase *object_duplilist_ex(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, bool update)
 {
        ListBase *duplilist = MEM_callocN(sizeof(ListBase), "duplilist");
        DupliContext ctx;
@@ -1231,7 +1231,7 @@ ListBase *object_duplilist_ex(EvaluationContext *eval_ctx, Scene *scene, Object
 
 /* note: previously updating was always done, this is why it defaults to be on
  * but there are likely places it can be called without updating */
-ListBase *object_duplilist(EvaluationContext *eval_ctx, Scene *sce, Object *ob)
+ListBase *object_duplilist(const EvaluationContext *eval_ctx, Scene *sce, Object *ob)
 {
        return object_duplilist_ex(eval_ctx, sce, ob, true);
 }
@@ -1272,7 +1272,7 @@ int count_duplilist(Object *ob)
        return 1;
 }
 
-DupliApplyData *duplilist_apply(EvaluationContext *eval_ctx, Object *ob, Scene *scene, ListBase *duplilist)
+DupliApplyData *duplilist_apply(const EvaluationContext *eval_ctx, Object *ob, Scene *scene, ListBase *duplilist)
 {
        DupliApplyData *apply_data = NULL;
        int num_objects = BLI_listbase_count(duplilist);
index 0bbfbb8a4e70852ac0ed4d5fa644c2f3f90756dd..c5d267ace9db6e3875725106e6bf3b7bcf979163 100644 (file)
@@ -69,7 +69,7 @@
 
 static ThreadMutex material_lock = BLI_MUTEX_INITIALIZER;
 
-void BKE_object_eval_local_transform(EvaluationContext *UNUSED(eval_ctx),
+void BKE_object_eval_local_transform(const EvaluationContext *UNUSED(eval_ctx),
                                      Scene *UNUSED(scene),
                                      Object *ob)
 {
@@ -81,7 +81,7 @@ void BKE_object_eval_local_transform(EvaluationContext *UNUSED(eval_ctx),
 
 /* Evaluate parent */
 /* NOTE: based on solve_parenting(), but with the cruft stripped out */
-void BKE_object_eval_parent(EvaluationContext *UNUSED(eval_ctx),
+void BKE_object_eval_parent(const EvaluationContext *UNUSED(eval_ctx),
                             Scene *scene,
                             Object *ob)
 {
@@ -113,7 +113,7 @@ void BKE_object_eval_parent(EvaluationContext *UNUSED(eval_ctx),
        }
 }
 
-void BKE_object_eval_constraints(EvaluationContext *eval_ctx,
+void BKE_object_eval_constraints(const EvaluationContext *eval_ctx,
                                  Scene *scene,
                                  Object *ob)
 {
@@ -136,7 +136,7 @@ void BKE_object_eval_constraints(EvaluationContext *eval_ctx,
        BKE_constraints_clear_evalob(cob);
 }
 
-void BKE_object_eval_done(EvaluationContext *UNUSED(eval_ctx), Object *ob)
+void BKE_object_eval_done(const EvaluationContext *UNUSED(eval_ctx), Object *ob)
 {
        DEBUG_PRINT("%s on %s\n", __func__, ob->id.name);
 
@@ -145,9 +145,10 @@ void BKE_object_eval_done(EvaluationContext *UNUSED(eval_ctx), Object *ob)
        else ob->transflag &= ~OB_NEG_SCALE;
 }
 
-void BKE_object_handle_data_update(EvaluationContext *eval_ctx,
-                                   Scene *scene,
-                                   Object *ob)
+void BKE_object_handle_data_update(
+        const EvaluationContext *eval_ctx,
+        Scene *scene,
+        Object *ob)
 {
        ID *data_id = (ID *)ob->data;
        AnimData *adt = BKE_animdata_from_id(data_id);
@@ -296,7 +297,7 @@ void BKE_object_handle_data_update(EvaluationContext *eval_ctx,
        /* quick cache removed */
 }
 
-void BKE_object_eval_uber_transform(EvaluationContext *UNUSED(eval_ctx),
+void BKE_object_eval_uber_transform(const EvaluationContext *UNUSED(eval_ctx),
                                     Scene *UNUSED(scene),
                                     Object *ob)
 {
@@ -326,7 +327,7 @@ void BKE_object_eval_uber_transform(EvaluationContext *UNUSED(eval_ctx),
        }
 }
 
-void BKE_object_eval_uber_data(EvaluationContext *eval_ctx,
+void BKE_object_eval_uber_data(const EvaluationContext *eval_ctx,
                                Scene *scene,
                                Object *ob)
 {
@@ -401,13 +402,13 @@ void BKE_object_eval_uber_data(EvaluationContext *eval_ctx,
        ob->recalc &= ~(OB_RECALC_DATA | OB_RECALC_TIME);
 }
 
-void BKE_object_eval_cloth(EvaluationContext *UNUSED(eval_ctx), Scene *scene, Object *object)
+void BKE_object_eval_cloth(const EvaluationContext *UNUSED(eval_ctx), Scene *scene, Object *object)
 {
        DEBUG_PRINT("%s on %s\n", __func__, object->id.name);
        BKE_ptcache_object_reset(scene, object, PTCACHE_RESET_DEPSGRAPH);
 }
 
-void BKE_object_eval_update_shading(EvaluationContext *UNUSED(eval_ctx), Object *object)
+void BKE_object_eval_update_shading(const EvaluationContext *UNUSED(eval_ctx), Object *object)
 {
        DEBUG_PRINT("%s on %s\n", __func__, object->id.name);
        if (object->type == OB_MESH) {
index 1831ca02ee83d3d76e5a2b729a624141f9036530..cc195f67a7a5b3e861e56025f620470f14b97c09 100644 (file)
@@ -840,8 +840,9 @@ static bool sculpt_modifiers_active(Scene *scene, Sculpt *sd, Object *ob)
 /**
  * \param need_mask So the DerivedMesh thats returned has mask data
  */
-void BKE_sculpt_update_mesh_elements(EvaluationContext *eval_ctx, Scene *scene, Sculpt *sd, Object *ob,
-                                     bool need_pmap, bool need_mask)
+void BKE_sculpt_update_mesh_elements(
+        const EvaluationContext *eval_ctx, Scene *scene, Sculpt *sd, Object *ob,
+        bool need_pmap, bool need_mask)
 {
        DerivedMesh *dm;
        SculptSession *ss = ob->sculpt;
index bf9c693d9036feb7a69cb5d5638bc6026297c2d3..7ba7c13fe40d9f5a3841c9f71c438d308b9a8104 100644 (file)
@@ -1845,7 +1845,7 @@ void precalc_guides(ParticleSimulationData *sim, ListBase *effectors)
        }
 }
 
-int do_guides(EvaluationContext *eval_ctx, ParticleSettings *part, ListBase *effectors, ParticleKey *state, int index, float time)
+int do_guides(const EvaluationContext *eval_ctx, ParticleSettings *part, ListBase *effectors, ParticleKey *state, int index, float time)
 {
        CurveMapping *clumpcurve = (part->child_flag & PART_CHILD_USE_CLUMP_CURVE) ? part->clumpcurve : NULL;
        CurveMapping *roughcurve = (part->child_flag & PART_CHILD_USE_ROUGH_CURVE) ? part->roughcurve : NULL;
@@ -2757,7 +2757,7 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra, const bool use_re
        if (vg_length)
                MEM_freeN(vg_length);
 }
-void psys_cache_edit_paths(EvaluationContext *eval_ctx, Scene *scene, Object *ob, PTCacheEdit *edit, float cfra, const bool use_render_params)
+void psys_cache_edit_paths(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, PTCacheEdit *edit, float cfra, const bool use_render_params)
 {
        ParticleCacheKey *ca, **cache = edit->pathcache;
        ParticleEditSettings *pset = &scene->toolsettings->particle;
@@ -4314,7 +4314,7 @@ void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3]
        madd_v3_v3fl(center, yvec, bb->offset[1]);
 }
 
-void psys_apply_hair_lattice(EvaluationContext *eval_ctx, Scene *scene, Object *ob, ParticleSystem *psys)
+void psys_apply_hair_lattice(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ParticleSystem *psys)
 {
        ParticleSimulationData sim = {0};
        sim.eval_ctx = eval_ctx;
index 044f52832e695239694f1a4c5c461325605f8db1..0591ea073cce39851bd10a205a3d6a4466b31f19 100644 (file)
@@ -980,7 +980,7 @@ void psys_get_birth_coords(ParticleSimulationData *sim, ParticleData *pa, Partic
 }
 
 /* recursively evaluate emitter parent anim at cfra */
-static void evaluate_emitter_anim(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float cfra)
+static void evaluate_emitter_anim(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float cfra)
 {
        if (ob->parent)
                evaluate_emitter_anim(eval_ctx, scene, ob->parent, cfra);
@@ -4158,7 +4158,7 @@ static int hair_needs_recalc(ParticleSystem *psys)
 
 /* main particle update call, checks that things are ok on the large scale and
  * then advances in to actual particle calculations depending on particle type */
-void particle_system_update(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, ParticleSystem *psys, const bool use_render_params)
+void particle_system_update(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, ParticleSystem *psys, const bool use_render_params)
 {
        ParticleSimulationData sim= {0};
        ParticleSettings *part = psys->part;
@@ -4361,7 +4361,7 @@ void BKE_particlesystem_id_loop(ParticleSystem *psys, ParticleSystemIDFunc func,
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_particle_system_settings_eval(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_particle_system_settings_eval(const struct EvaluationContext *UNUSED(eval_ctx),
                                        ParticleSystem *psys)
 {
        if (G.debug & G_DEBUG_DEPSGRAPH) {
@@ -4379,7 +4379,7 @@ void BKE_particle_system_settings_recalc_clear(struct EvaluationContext *UNUSED(
        particle_settings->recalc = 0;
 }
 
-void BKE_particle_system_eval_init(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_particle_system_eval_init(const struct EvaluationContext *UNUSED(eval_ctx),
                                    Scene *scene,
                                    Object *ob)
 {
index 396190fd578c48bbdb93b64ac74248e42ee24f8e..df048ce5036bbec9918ab57d6282f8b7d52696f0 100644 (file)
@@ -1222,7 +1222,7 @@ static void rigidbody_update_sim_world(Scene *scene, RigidBodyWorld *rbw)
        rigidbody_update_ob_array(rbw);
 }
 
-static void rigidbody_update_sim_ob(struct EvaluationContext *eval_ctx, Scene *scene, RigidBodyWorld *rbw, Object *ob, RigidBodyOb *rbo)
+static void rigidbody_update_sim_ob(const struct EvaluationContext *eval_ctx, Scene *scene, RigidBodyWorld *rbw, Object *ob, RigidBodyOb *rbo)
 {
        float loc[3];
        float rot[4];
@@ -1311,7 +1311,7 @@ static void rigidbody_update_sim_ob(struct EvaluationContext *eval_ctx, Scene *s
  *
  * \param rebuild Rebuild entire simulation
  */
-static void rigidbody_update_simulation(struct EvaluationContext *eval_ctx, Scene *scene, RigidBodyWorld *rbw, bool rebuild)
+static void rigidbody_update_simulation(const struct EvaluationContext *eval_ctx, Scene *scene, RigidBodyWorld *rbw, bool rebuild)
 {
        GroupObject *go;
 
@@ -1555,7 +1555,7 @@ void BKE_rigidbody_cache_reset(RigidBodyWorld *rbw)
 
 /* Rebuild rigid body world */
 /* NOTE: this needs to be called before frame update to work correctly */
-void BKE_rigidbody_rebuild_world(struct EvaluationContext *eval_ctx, Scene *scene, float ctime)
+void BKE_rigidbody_rebuild_world(const struct EvaluationContext *eval_ctx, Scene *scene, float ctime)
 {
        RigidBodyWorld *rbw = scene->rigidbody_world;
        PointCache *cache;
@@ -1583,7 +1583,7 @@ void BKE_rigidbody_rebuild_world(struct EvaluationContext *eval_ctx, Scene *scen
 }
 
 /* Run RigidBody simulation for the specified physics world */
-void BKE_rigidbody_do_simulation(struct EvaluationContext *eval_ctx, Scene *scene, float ctime)
+void BKE_rigidbody_do_simulation(const struct EvaluationContext *eval_ctx, Scene *scene, float ctime)
 {
        float timestep;
        RigidBodyWorld *rbw = scene->rigidbody_world;
@@ -1671,8 +1671,8 @@ void BKE_rigidbody_sync_transforms(RigidBodyWorld *rbw, Object *ob, float ctime)
 void BKE_rigidbody_aftertrans_update(Object *ob, float loc[3], float rot[3], float quat[4], float rotAxis[3], float rotAngle) {}
 bool BKE_rigidbody_check_sim_running(RigidBodyWorld *rbw, float ctime) { return false; }
 void BKE_rigidbody_cache_reset(RigidBodyWorld *rbw) {}
-void BKE_rigidbody_rebuild_world(struct EvaluationContext *eval_ctx, Scene *scene, float ctime) {}
-void BKE_rigidbody_do_simulation(struct EvaluationContext *eval_ctx, Scene *scene, float ctime) {}
+void BKE_rigidbody_rebuild_world(const struct EvaluationContext *eval_ctx, Scene *scene, float ctime) {}
+void BKE_rigidbody_do_simulation(const struct EvaluationContext *eval_ctx, Scene *scene, float ctime) {}
 
 #ifdef __GNUC__
 #  pragma GCC diagnostic pop
@@ -1683,7 +1683,7 @@ void BKE_rigidbody_do_simulation(struct EvaluationContext *eval_ctx, Scene *scen
 /* -------------------- */
 /* Depsgraph evaluation */
 
-void BKE_rigidbody_rebuild_sim(struct EvaluationContext *eval_ctx,
+void BKE_rigidbody_rebuild_sim(const struct EvaluationContext *eval_ctx,
                                Scene *scene)
 {
        float ctime = BKE_scene_frame_get(scene);
@@ -1698,7 +1698,7 @@ void BKE_rigidbody_rebuild_sim(struct EvaluationContext *eval_ctx,
        }
 }
 
-void BKE_rigidbody_eval_simulation(struct EvaluationContext *eval_ctx,
+void BKE_rigidbody_eval_simulation(const struct EvaluationContext *eval_ctx,
                                    Scene *scene)
 {
        float ctime = BKE_scene_frame_get(scene);
@@ -1713,7 +1713,7 @@ void BKE_rigidbody_eval_simulation(struct EvaluationContext *eval_ctx,
        }
 }
 
-void BKE_rigidbody_object_sync_transforms(struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_rigidbody_object_sync_transforms(const struct EvaluationContext *UNUSED(eval_ctx),
                                           Scene *scene,
                                           Object *ob)
 {
index 6aca6e1be7f25dfb901c5432988251d682777018..5760e13b800a9e8196569dc2b179e4dbd2d7de26 100644 (file)
@@ -1178,8 +1178,9 @@ Scene *BKE_scene_set_name(Main *bmain, const char *name)
 }
 
 /* Used by metaballs, return *all* objects (including duplis) existing in the scene (including scene's sets) */
-int BKE_scene_base_iter_next(EvaluationContext *eval_ctx, SceneBaseIter *iter,
-                             Scene **scene, int val, BaseLegacy **base, Object **ob)
+int BKE_scene_base_iter_next(
+        const EvaluationContext *eval_ctx, SceneBaseIter *iter,
+        Scene **scene, int val, BaseLegacy **base, Object **ob)
 {
        bool run_again = true;
        
index cad4b2e1dd0ce8e983329ce8ace5a7fb9975f639..218ac64f3e09a45b3807d741e57c92a7fd96b84f 100644 (file)
@@ -128,7 +128,7 @@ void smoke_initWaveletBlenderRNA(struct WTURBULENCE *UNUSED(wt), float *UNUSED(s
 void smoke_initBlenderRNA(struct FLUID_3D *UNUSED(fluid), float *UNUSED(alpha), float *UNUSED(beta), float *UNUSED(dt_factor), float *UNUSED(vorticity),
                           int *UNUSED(border_colli), float *UNUSED(burning_rate), float *UNUSED(flame_smoke), float *UNUSED(flame_smoke_color),
                           float *UNUSED(flame_vorticity), float *UNUSED(flame_ignition_temp), float *UNUSED(flame_max_temp)) {}
-struct DerivedMesh *smokeModifier_do(SmokeModifierData *UNUSED(smd), struct EvaluationContext *UNUSED(eval_ctx), Scene *UNUSED(scene), Object *UNUSED(ob), DerivedMesh *UNUSED(dm)) { return NULL; }
+struct DerivedMesh *smokeModifier_do(SmokeModifierData *UNUSED(smd), const struct EvaluationContext *UNUSED(eval_ctx), Scene *UNUSED(scene), Object *UNUSED(ob), DerivedMesh *UNUSED(dm)) { return NULL; }
 float smoke_get_velocity_at(struct Object *UNUSED(ob), float UNUSED(position[3]), float UNUSED(velocity[3])) { return 0.0f; }
 
 #endif /* WITH_SMOKE */
@@ -2073,7 +2073,7 @@ BLI_INLINE void apply_inflow_fields(SmokeFlowSettings *sfs, float emission_value
        }
 }
 
-static void update_flowsfluids(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, SmokeDomainSettings *sds, float dt)
+static void update_flowsfluids(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, SmokeDomainSettings *sds, float dt)
 {
        Object **flowobjs = NULL;
        EmissionMap *emaps = NULL;
@@ -2489,7 +2489,7 @@ static void update_effectors_task_cb(void *userdata, const int x)
        }
 }
 
-static void update_effectors(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, SmokeDomainSettings *sds, float UNUSED(dt))
+static void update_effectors(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, SmokeDomainSettings *sds, float UNUSED(dt))
 {
        ListBase *effectors;
        /* make sure smoke flow influence is 0.0f */
@@ -2518,7 +2518,7 @@ static void update_effectors(struct EvaluationContext *eval_ctx, Scene *scene, O
        pdEndEffectors(&effectors);
 }
 
-static void step(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, SmokeModifierData *smd, DerivedMesh *domain_dm, float fps)
+static void step(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, SmokeModifierData *smd, DerivedMesh *domain_dm, float fps)
 {
        SmokeDomainSettings *sds = smd->domain;
        /* stability values copied from wturbulence.cpp */
@@ -2685,7 +2685,8 @@ static DerivedMesh *createDomainGeometry(SmokeDomainSettings *sds, Object *ob)
        return result;
 }
 
-static void smokeModifier_process(SmokeModifierData *smd, struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm)
+static void smokeModifier_process(
+        SmokeModifierData *smd, const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm)
 {
        if ((smd->type & MOD_SMOKE_TYPE_FLOW))
        {
@@ -2827,7 +2828,8 @@ static void smokeModifier_process(SmokeModifierData *smd, struct EvaluationConte
        }
 }
 
-struct DerivedMesh *smokeModifier_do(SmokeModifierData *smd, struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm)
+struct DerivedMesh *smokeModifier_do(
+        SmokeModifierData *smd, const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm)
 {
        /* lock so preview render does not read smoke data while it gets modified */
        if ((smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain)
index 28dea3e166989bf72e8ef781eba57a0a28d7e896..7cea1e4940f9c2ffbf5522ab7f668d6ef3b0cbeb 100644 (file)
@@ -1546,7 +1546,7 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow,
 }
 
 
-static void scan_for_ext_spring_forces(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float timenow)
+static void scan_for_ext_spring_forces(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float timenow)
 {
        SoftBody *sb = ob->soft;
        ListBase *do_effector = NULL;
@@ -1563,7 +1563,7 @@ static void *exec_scan_for_ext_spring_forces(void *data)
        return NULL;
 }
 
-static void sb_sfesf_threads_run(struct EvaluationContext *eval_ctx, Scene *scene, struct Object *ob, float timenow, int totsprings, int *UNUSED(ptr_to_break_func(void)))
+static void sb_sfesf_threads_run(const struct EvaluationContext *eval_ctx, Scene *scene, struct Object *ob, float timenow, int totsprings, int *UNUSED(ptr_to_break_func(void)))
 {
        ListBase *do_effector = NULL;
        ListBase threads;
@@ -2235,7 +2235,7 @@ static void sb_cf_threads_run(Scene *scene, Object *ob, float forcetime, float t
        MEM_freeN(sb_threads);
 }
 
-static void softbody_calc_forcesEx(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float forcetime, float timenow)
+static void softbody_calc_forcesEx(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float forcetime, float timenow)
 {
        /* rule we never alter free variables :bp->vec bp->pos in here !
         * this will ruin adaptive stepsize AKA heun! (BM)
@@ -2280,7 +2280,7 @@ static void softbody_calc_forcesEx(struct EvaluationContext *eval_ctx, Scene *sc
 }
 
 
-static void softbody_calc_forces(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float forcetime, float timenow)
+static void softbody_calc_forces(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float forcetime, float timenow)
 {
        /* redirection to the new threaded Version */
        if (!(G.debug_value & 0x10)) { // 16
@@ -3512,7 +3512,7 @@ static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int
        }
 }
 
-static void softbody_step(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, SoftBody *sb, float dtime)
+static void softbody_step(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, SoftBody *sb, float dtime)
 {
        /* the simulator */
        float forcetime;
@@ -3646,7 +3646,7 @@ static void softbody_step(struct EvaluationContext *eval_ctx, Scene *scene, Obje
 }
 
 /* simulates one step. framenr is in frames */
-void sbObjectStep(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], int numVerts)
+void sbObjectStep(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], int numVerts)
 {
        SoftBody *sb= ob->soft;
        PointCache *cache;
index d20dac5a4aedf625d41429e59740416d8b2d80ae..cbe00e3bbc65f3c341ebe477d4959fd410fc257d 100644 (file)
@@ -192,7 +192,7 @@ void BKE_world_make_local(Main *bmain, World *wrld, const bool lib_local)
        BKE_id_make_local_generic(bmain, &wrld->id, true, lib_local);
 }
 
-void BKE_world_eval(struct EvaluationContext *UNUSED(eval_ctx), World *world)
+void BKE_world_eval(const struct EvaluationContext *UNUSED(eval_ctx), World *world)
 {
        if (G.debug & G_DEBUG_DEPSGRAPH) {
                printf("%s on %s (%p)\n", __func__, world->id.name, world);
index 42dde0be266623345067d040bdbd431d306ee4dd..ffd11514ea00fa911e76c4918896d980b979b85e 100644 (file)
@@ -34,7 +34,7 @@ void forEachObjectInExportSet(Scene *sce, Functor &f, LinkNode *export_set)
        }
 }
 
-bool AnimationExporter::exportAnimations(struct EvaluationContext *eval_ctx, Scene *sce)
+bool AnimationExporter::exportAnimations(const struct EvaluationContext *eval_ctx, Scene *sce)
 {
        bool has_animations = hasAnimations(sce);
        if (has_animations) {
index d21f3a74ceb86c1f4f452848aec544489f850f64..5af5d8844551c9d5756a4a8f75d702c4db2107f2 100644 (file)
@@ -85,7 +85,7 @@ class AnimationExporter: COLLADASW::LibraryAnimations
 {
 private:
        Scene *scene;
-       struct EvaluationContext *eval_ctx;
+       const struct EvaluationContext *eval_ctx;
        COLLADASW::StreamWriter *sw;
 
 public:
@@ -95,7 +95,7 @@ public:
                        { this->sw = sw; }
        
 
-       bool exportAnimations(struct EvaluationContext *eval_ctx, Scene *sce);
+       bool exportAnimations(const struct EvaluationContext *eval_ctx, Scene *sce);
 
        // called for each exported object
        void operator() (Object *ob); 
index ad5ffadebc526f7b8306adcc823f2578574dcefd..844be2dd60bd76a57609c399f390168a15209816 100644 (file)
@@ -62,7 +62,7 @@ ArmatureExporter::ArmatureExporter(COLLADASW::StreamWriter *sw, const ExportSett
 }
 
 // write bone nodes
-void ArmatureExporter::add_armature_bones(EvaluationContext *eval_ctx, Object *ob_arm,
+void ArmatureExporter::add_armature_bones(const EvaluationContext *eval_ctx, Object *ob_arm,
                                           Scene *sce, SceneExporter *se,
                                           std::list<Object *>& child_objects)
 {
@@ -157,7 +157,7 @@ void ArmatureExporter::find_objects_using_armature(Object *ob_arm, std::vector<O
 #endif
 
 // parent_mat is armature-space
-void ArmatureExporter::add_bone_node(EvaluationContext *eval_ctx, Bone *bone, Object *ob_arm, Scene *sce,
+void ArmatureExporter::add_bone_node(const EvaluationContext *eval_ctx, Bone *bone, Object *ob_arm, Scene *sce,
                                      SceneExporter *se,
                                      std::list<Object *>& child_objects)
 {
index f0582e97643f0af25ef4c94a7a2c13117954dfe6..a3ed97c3a431579e02aed5363a6cc6a8deb2d25a 100644 (file)
@@ -60,7 +60,7 @@ public:
        ArmatureExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings);
 
        // write bone nodes
-       void add_armature_bones(struct EvaluationContext *eval_ctx, Object *ob_arm, Scene *sce, SceneExporter *se,
+       void add_armature_bones(const struct EvaluationContext *eval_ctx, Object *ob_arm, Scene *sce, SceneExporter *se,
                                std::list<Object *>& child_objects);
 
        bool add_instance_controller(Object *ob);
@@ -85,7 +85,7 @@ private:
 
        // Scene, SceneExporter and the list of child_objects
        // are required for writing bone parented objects
-       void add_bone_node(struct EvaluationContext *eval_ctx, Bone *bone, Object *ob_arm, Scene *sce, SceneExporter *se,
+       void add_bone_node(const struct EvaluationContext *eval_ctx, Bone *bone, Object *ob_arm, Scene *sce, SceneExporter *se,
                           std::list<Object *>& child_objects);
 
        void add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW::Node& node);
index 3dd2490edfc32986619472c8bcb74f63d0a2a43c..f413651167c7de942f376cac25ef74b8af6fad62 100644 (file)
@@ -104,7 +104,7 @@ bool ControllerExporter::add_instance_controller(Object *ob)
        return true;
 }
 
-void ControllerExporter::export_controllers(struct EvaluationContext *eval_ctx, Scene *sce)
+void ControllerExporter::export_controllers(const struct EvaluationContext *eval_ctx, Scene *sce)
 {
        this->eval_ctx = eval_ctx;
        scene = sce;
index c96015c78173a4a6b5bb68a3f5998b28fdcc1841..a1d46c5aafb2a6f3a6f49ffdb16423ec69817a0a 100644 (file)
@@ -66,12 +66,12 @@ public:
 
        bool add_instance_controller(Object *ob);
 
-       void export_controllers(struct EvaluationContext *eval_ctx, Scene *sce);
+       void export_controllers(const struct EvaluationContext *eval_ctx, Scene *sce);
 
        void operator()(Object *ob);
 
 private:
-       struct EvaluationContext *eval_ctx;
+       const struct EvaluationContext *eval_ctx;
        Scene *scene;
        UnitConverter converter;
        const ExportSettings *export_settings;
index 46628ed028eff5c13c6a3c70ccea181220a058b1..24a09562a7bd26235b986d5abb0d70114670c2fa 100644 (file)
@@ -179,7 +179,7 @@ static COLLADABU::NativeString make_temp_filepath(const char *name, const char *
 // COLLADA allows this through multiple <channel>s in <animation>.
 // For this to work, we need to know objects that use a certain action.
 
-int DocumentExporter::exportCurrentScene(EvaluationContext *eval_ctx, Scene *sce)
+int DocumentExporter::exportCurrentScene(const EvaluationContext *eval_ctx, Scene *sce)
 {
        PointerRNA sceneptr, unit_settings;
        PropertyRNA *system; /* unused , *scale; */
index 1d32c87610ed8dc61764b12496116914ee39f6c9..895787c7bbc475c632c34340aa7225498fc79dbf 100644 (file)
@@ -39,7 +39,7 @@ class DocumentExporter
 {
  public:
        DocumentExporter(const ExportSettings *export_settings);
-       int  exportCurrentScene(struct EvaluationContext *eval_ctx, Scene *sce);
+       int  exportCurrentScene(const struct EvaluationContext *eval_ctx, Scene *sce);
        void exportScenes(const char *filename);
 private:
        const ExportSettings *export_settings;
index 715f0ab53703d30483fa0eae0a46485d6c388fb6..4365c70b910fe0c4e378a7d2c9db318755c4e8f2 100644 (file)
@@ -57,7 +57,7 @@ GeometryExporter::GeometryExporter(COLLADASW::StreamWriter *sw, const ExportSett
 {
 }
 
-void GeometryExporter::exportGeom(struct EvaluationContext *eval_ctx, Scene *sce)
+void GeometryExporter::exportGeom(const struct EvaluationContext *eval_ctx, Scene *sce)
 {
        openLibrary();
 
index 91062ef8f19157fbfafe7ab9edb6be9754a2a700..7527195fdd86bc77237d47fdb866feed55d81870 100644 (file)
@@ -74,13 +74,13 @@ class GeometryExporter : COLLADASW::LibraryGeometries
 
        Normal n;
 
-       struct EvaluationContext *mEvalCtx;
+       const struct EvaluationContext *mEvalCtx;
        Scene *mScene;
 
 public:
        GeometryExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings);
 
-       void exportGeom(struct EvaluationContext *eval_ctx, Scene *sce);
+       void exportGeom(const struct EvaluationContext *eval_ctx, Scene *sce);
 
        void operator()(Object *ob);
 
index 1447cd7f72f69cd8531629894e5b56efd657fb54..aa98f2ee96c3225e0c284a04f182133ee18f92cf 100644 (file)
@@ -43,7 +43,7 @@ void SceneExporter::setExportTransformationType(BC_export_transformation_type tr
        this->transformation_type = transformation_type;
 }
 
-void SceneExporter::exportScene(EvaluationContext *eval_ctx, Scene *sce)
+void SceneExporter::exportScene(const EvaluationContext *eval_ctx, Scene *sce)
 {
        // <library_visual_scenes> <visual_scene>
        std::string id_naming = id_name(sce);
@@ -53,7 +53,7 @@ void SceneExporter::exportScene(EvaluationContext *eval_ctx, Scene *sce)
        closeLibrary();
 }
 
-void SceneExporter::exportHierarchy(EvaluationContext *eval_ctx, Scene *sce)
+void SceneExporter::exportHierarchy(const EvaluationContext *eval_ctx, Scene *sce)
 {      
        LinkNode *node;
        std::vector<Object *> base_objects;
@@ -91,7 +91,7 @@ void SceneExporter::exportHierarchy(EvaluationContext *eval_ctx, Scene *sce)
 }
 
 
-void SceneExporter::writeNodes(EvaluationContext *eval_ctx, Object *ob, Scene *sce)
+void SceneExporter::writeNodes(const EvaluationContext *eval_ctx, Object *ob, Scene *sce)
 {
        // Add associated armature first if available
        bool armature_exported = false;
index 8dd6da4db056ab5ee2427f6d5f77c480caf707bf..ded48983bd99b2e83b72ec07b18f8ddc87806d4e 100644 (file)
@@ -96,15 +96,15 @@ class SceneExporter: COLLADASW::LibraryVisualScenes, protected TransformWriter,
 {
 public:
        SceneExporter(COLLADASW::StreamWriter *sw, ArmatureExporter *arm, const ExportSettings *export_settings);
-       void exportScene(struct EvaluationContext *eval_ctx, Scene *sce);
+       void exportScene(const struct EvaluationContext *eval_ctx, Scene *sce);
        void setExportTransformationType(BC_export_transformation_type transformation_type);
 
 private:
        BC_export_transformation_type transformation_type;
        // required for writeNodes() for bone-parented objects
        friend class ArmatureExporter;
-       void exportHierarchy(struct EvaluationContext *eval_ctx, Scene *sce);
-       void writeNodes(struct EvaluationContext *eval_ctx, Object *ob, Scene *sce);
+       void exportHierarchy(const struct EvaluationContext *eval_ctx, Scene *sce);
+       void writeNodes(const struct EvaluationContext *eval_ctx, Object *ob, Scene *sce);
        
        ArmatureExporter *arm_exporter;
        const ExportSettings *export_settings;
index 5c5b2ec2dc29702f3f6e9b80429f5cbdc1271a8d..e9285bf24ffeb540b8e7f89280561edf21b0fee0 100644 (file)
@@ -67,7 +67,7 @@ int collada_import(bContext *C,
        return 0;
 }
 
-int collada_export(EvaluationContext *eval_ctx,
+int collada_export(const EvaluationContext *eval_ctx,
                    Scene *sce,
                    SceneLayer *scene_layer,
                    const char *filepath,
index c42338002cd6f7428ec4c8cfd2190240852bf730..1cec6a53922dbde3d73a35ef26db8d0fc72b6a37 100644 (file)
@@ -64,7 +64,7 @@ int collada_import(struct bContext *C,
 
                                   int keep_bind_info);
 
-int collada_export(struct EvaluationContext *eval_ctx,
+int collada_export(const struct EvaluationContext *eval_ctx,
                    struct Scene *sce,
                    struct SceneLayer *scene_layer,
                    const char *filepath,
index 85ac0eb8d3d92fd478f951dc64d5beee822d5454..3bdd22a53f8f22a73b87203a7743fc17b6ba5a4f 100644 (file)
@@ -147,7 +147,7 @@ Object *bc_add_object(Scene *scene, int type, const char *name)
        return ob;
 }
 
-Mesh *bc_get_mesh_copy(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BC_export_mesh_type export_mesh_type, bool apply_modifiers, bool triangulate)
+Mesh *bc_get_mesh_copy(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BC_export_mesh_type export_mesh_type, bool apply_modifiers, bool triangulate)
 {
        Mesh *tmpmesh;
        CustomDataMask mask = CD_MASK_MESH;
index df972c5b89c33e5e1a53838286a30ec3f53d91b2..75e9fb5dcea44be7c361316c5a0585cb16419d84 100644 (file)
@@ -68,7 +68,7 @@ extern float bc_get_float_value(const COLLADAFW::FloatOrDoubleArray& array, unsi
 extern int bc_test_parent_loop(Object *par, Object *ob);
 extern int bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space = true);
 extern Object *bc_add_object(Scene *scene, int type, const char *name);
-extern Mesh *bc_get_mesh_copy(struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BC_export_mesh_type export_mesh_type, bool apply_modifiers, bool triangulate);
+extern Mesh *bc_get_mesh_copy(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BC_export_mesh_type export_mesh_type, bool apply_modifiers, bool triangulate);
 
 extern Object *bc_get_assigned_armature(Object *ob);
 extern Object *bc_get_highest_selected_ancestor_or_self(LinkNode *export_set, Object *ob);
index bffa58dbf05be52a627e5f3da1747b640361a901..cbf16d38f6b07ea73e8819c887d240cd0812f5e0 100644 (file)
@@ -53,6 +53,8 @@
 #include "ED_screen.h"
 #include "ED_view3d.h"
 
+#include "DEG_depsgraph.h"
+
 #include "armature_intern.h"
 
 /* utility macros for storing a temp int in the bone (selection flag) */
@@ -166,18 +168,20 @@ void *get_bone_from_selectbuffer(
 /* x and y are mouse coords (area space) */
 void *get_nearest_bone(bContext *C, const int xy[2], bool findunsel)
 {
+       EvaluationContext eval_ctx;
        ViewContext vc;
        rcti rect;
        unsigned int buffer[MAXPICKBUF];
        short hits;
-       
+
+       CTX_data_eval_ctx(C, &eval_ctx);
        view3d_set_viewcontext(C, &vc);
        
        // rect.xmin = ... mouseco!
        rect.xmin = rect.xmax = xy[0];
        rect.ymin = rect.ymax = xy[1];
        
-       hits = view3d_opengl_select(C, &vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_NEAREST);
+       hits = view3d_opengl_select(&eval_ctx, &vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_NEAREST);
 
        if (hits > 0)
                return get_bone_from_selectbuffer(vc.scene, vc.scene_layer->basact, buffer, hits, findunsel, true);
@@ -291,7 +295,7 @@ static int selectbuffer_ret_hits_5(unsigned int *buffer, const int hits12, const
 /* does bones and points */
 /* note that BONE ROOT only gets drawn for root bones (or without IK) */
 static EditBone *get_nearest_editbonepoint(
-        const bContext *C, ViewContext *vc, const int mval[2],
+        const EvaluationContext *eval_ctx, ViewContext *vc, const int mval[2],
         ListBase *edbo, bool findunsel, bool use_cycle, int *r_selmask)
 {
        bArmature *arm = (bArmature *)vc->obedit->data;
@@ -344,7 +348,7 @@ static EditBone *get_nearest_editbonepoint(
        view3d_opengl_select_cache_begin();
 
        BLI_rcti_init_pt_radius(&rect, mval, 12);
-       hits12 = view3d_opengl_select(C, vc, buffer, MAXPICKBUF, &rect, select_mode);
+       hits12 = view3d_opengl_select(eval_ctx, vc, buffer, MAXPICKBUF, &rect, select_mode);
        if (hits12 == 1) {
                hits = selectbuffer_ret_hits_12(buffer, hits12);
                goto cache_end;
@@ -354,7 +358,7 @@ static EditBone *get_nearest_editbonepoint(
 
                offs = 4 * hits12;
                BLI_rcti_init_pt_radius(&rect, mval, 5);
-               hits5 = view3d_opengl_select(C, vc, buffer + offs, MAXPICKBUF - offs, &rect, select_mode);
+               hits5 = view3d_opengl_select(eval_ctx, vc, buffer + offs, MAXPICKBUF - offs, &rect, select_mode);
 
                if (hits5 == 1) {
                        hits = selectbuffer_ret_hits_5(buffer, hits12, hits5);
@@ -482,17 +486,19 @@ bool ED_armature_select_pick(bContext *C, const int mval[2], bool extend, bool d
 {
        Object *obedit = CTX_data_edit_object(C);
        bArmature *arm = obedit->data;
+       EvaluationContext eval_ctx;
        ViewContext vc;
        EditBone *nearBone = NULL;
        int selmask;
 
+       CTX_data_eval_ctx(C, &eval_ctx);
        view3d_set_viewcontext(C, &vc);
-       
+
        if (BIF_sk_selectStroke(C, mval, extend)) {
                return true;
        }
 
-       nearBone = get_nearest_editbonepoint(C, &vc, mval, arm->edbo, true, true, &selmask);
+       nearBone = get_nearest_editbonepoint(&eval_ctx, &vc, mval, arm->edbo, true, true, &selmask);
        if (nearBone) {
 
                if (!extend && !deselect && !toggle) {
index 7407d12f7d72e0ebe501a6d1f4635b6f0cfe5a8d..e167d4edb9491291c6bbc859d5516d5e95a647cf 100644 (file)
@@ -50,6 +50,8 @@
 #include "ED_transform.h"
 #include "ED_transform_snap_object_context.h"
 
+#include "DEG_depsgraph.h"
+
 #include "WM_api.h"
 #include "WM_types.h"
 
@@ -1922,16 +1924,18 @@ static void sk_applyGesture(bContext *C, SK_Sketch *sketch)
 
 static bool sk_selectStroke(bContext *C, SK_Sketch *sketch, const int mval[2], const bool extend)
 {
+       EvaluationContext eval_ctx;
        ViewContext vc;
        rcti rect;
        unsigned int buffer[MAXPICKBUF];
        short hits;
 
+       CTX_data_eval_ctx(C, &eval_ctx);
        view3d_set_viewcontext(C, &vc);
 
        BLI_rcti_init_pt_radius(&rect, mval, 5);
 
-       hits = view3d_opengl_select(C, &vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_NEAREST);
+       hits = view3d_opengl_select(&eval_ctx, &vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_NEAREST);
 
        if (hits > 0) {
                int besthitresult = -1;
index 25bad71af88593d24e5c961aee69f06c95981c42..ef708a4edec68b706d5da53b4390d2347170fd56 100644 (file)
@@ -1091,10 +1091,13 @@ static int curve_draw_invoke(bContext *C, wmOperator *op, const wmEvent *event)
                        if ((cps->depth_mode == CURVE_PAINT_PROJECT_SURFACE) &&
                            (v3d->drawtype > OB_WIRE))
                        {
+                               EvaluationContext eval_ctx;
+                               CTX_data_eval_ctx(C, &eval_ctx);
+
                                /* needed or else the draw matrix can be incorrect */
                                view3d_operator_needs_opengl(C);
 
-                               ED_view3d_autodist_init(C, cdd->vc.depsgraph, cdd->vc.ar, cdd->vc.v3d, 0);
+                               ED_view3d_autodist_init(&eval_ctx, cdd->vc.depsgraph, cdd->vc.ar, cdd->vc.v3d, 0);
 
                                if (cdd->vc.rv3d->depths) {
                                        cdd->vc.rv3d->depths->damaged = true;
index ced7cd0734718330998a8cccc85cfa488fdca61b..4cd628b7fd320021edf249baef0b976040ee9007 100644 (file)
@@ -79,6 +79,8 @@
 #include "ED_view3d.h"
 #include "ED_space_api.h"
 
+#include "DEG_depsgraph.h"
+
 #include "gpencil_intern.h"
 
 /* ************************************************ */
@@ -2106,9 +2108,12 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op)
        
        /* init autodist for geometry projection */
        if (mode == GP_REPROJECT_SURFACE) {
+               EvaluationContext eval_ctx;
+               CTX_data_eval_ctx(C, &eval_ctx);
+
                struct Depsgraph *graph = CTX_data_depsgraph(C);
                view3d_region_operator_needs_opengl(CTX_wm_window(C), gsc.ar);
-               ED_view3d_autodist_init(C, graph, gsc.ar, CTX_wm_view3d(C), 0);
+               ED_view3d_autodist_init(&eval_ctx, graph, gsc.ar, CTX_wm_view3d(C), 0);
        }
        
        // TODO: For deforming geometry workflow, create new frames?
index 834a1ced69db61811faeec98b93d9dd6f31dac29..ffad8da84ffb0546f0215919e1cb91f3a578f68c 100644 (file)
@@ -80,6 +80,8 @@
 #include "WM_api.h"
 #include "WM_types.h"
 
+#include "DEG_depsgraph.h"
+
 #include "gpencil_intern.h"
 
 /* ******************************************* */
@@ -114,6 +116,7 @@ typedef enum eGPencil_PaintFlags {
  *   "p" = op->customdata
  */
 typedef struct tGPsdata {
+       EvaluationContext eval_ctx;
        Scene *scene;       /* current scene from context */
        struct Depsgraph *graph;
        
@@ -484,7 +487,8 @@ static void gp_brush_angle(bGPdata *gpd, bGPDbrush *brush, tGPspoint *pt, const
 }
 
 /* add current stroke-point to buffer (returns whether point was successfully added) */
-static short gp_stroke_addpoint(const bContext *C, tGPsdata *p, const int mval[2], float pressure, double curtime)
+static short gp_stroke_addpoint(
+        tGPsdata *p, const int mval[2], float pressure, double curtime)
 {
        bGPdata *gpd = p->gpd;
        bGPDbrush *brush = p->brush;
@@ -643,7 +647,7 @@ static short gp_stroke_addpoint(const bContext *C, tGPsdata *p, const int mval[2
                                
                                view3d_region_operator_needs_opengl(p->win, p->ar);
                                ED_view3d_autodist_init(
-                                       C, p->graph, p->ar, v3d, (ts->gpencil_v3d_align & GP_PROJECT_DEPTH_STROKE) ? 1 : 0);
+                                       &p->eval_ctx, p->graph, p->ar, v3d, (ts->gpencil_v3d_align & GP_PROJECT_DEPTH_STROKE) ? 1 : 0);
                        }
                        
                        /* convert screen-coordinates to appropriate coordinates (and store them) */
@@ -679,7 +683,7 @@ static short gp_stroke_addpoint(const bContext *C, tGPsdata *p, const int mval[2
  *     - applies a reverse Chaikin filter
  *     - code adapted from etch-a-ton branch (editarmature_sketch.c)
  */
-static void gp_stroke_simplify(const bContext *C, tGPsdata *p)
+static void gp_stroke_simplify(tGPsdata *p)
 {
        bGPdata *gpd = p->gpd;
        tGPspoint *old_points = (tGPspoint *)gpd->sbuffer;
@@ -715,7 +719,7 @@ static void gp_stroke_simplify(const bContext *C, tGPsdata *p)
        } (void)0
        
        /* XXX Here too, do not lose start and end points! */
-       gp_stroke_addpoint(C, p, &old_points->x, old_points->pressure, p->inittime + (double)old_points->time);
+       gp_stroke_addpoint(p, &old_points->x, old_points->pressure, p->inittime + (double)old_points->time);
        for (i = 0, j = 0; i < num_points; i++) {
                if (i - j == 3) {
                        float co[2], pressure, time;
@@ -738,12 +742,12 @@ static void gp_stroke_simplify(const bContext *C, tGPsdata *p)
                        mco[1] = (int)co[1];
                        
                        /* ignore return values on this... assume to be ok for now */
-                       gp_stroke_addpoint(C, p, mco, pressure, p->inittime + (double)time);
-                       
+                       gp_stroke_addpoint(p, mco, pressure, p->inittime + (double)time);
+
                        j += 2;
                }
        }
-       gp_stroke_addpoint(C, p, &old_points[num_points - 1].x, old_points[num_points - 1].pressure,
+       gp_stroke_addpoint(p, &old_points[num_points - 1].x, old_points[num_points - 1].pressure,
                           p->inittime + (double)old_points[num_points - 1].time);
        
        /* free old buffer */
@@ -1228,7 +1232,7 @@ static void gp_stroke_eraser_dostroke(tGPsdata *p,
 }
 
 /* erase strokes which fall under the eraser strokes */
-static void gp_stroke_doeraser(const bContext *C, tGPsdata *p)
+static void gp_stroke_doeraser(tGPsdata *p)
 {
        bGPDlayer *gpl;
        bGPDstroke *gps, *gpn;
@@ -1244,7 +1248,7 @@ static void gp_stroke_doeraser(const bContext *C, tGPsdata *p)
                if (p->flags & GP_PAINTFLAG_V3D_ERASER_DEPTH) {
                        View3D *v3d = p->sa->spacedata.first;
                        view3d_region_operator_needs_opengl(p->win, p->ar);
-                       ED_view3d_autodist_init(C, p->graph, p->ar, v3d, 0);
+                       ED_view3d_autodist_init(&p->eval_ctx, p->graph, p->ar, v3d, 0);
                }
        }
        
@@ -1397,6 +1401,7 @@ static bool gp_session_initdata(bContext *C, tGPsdata *p)
        }
        
        /* pass on current scene and window */
+       CTX_data_eval_ctx(C, &p->eval_ctx);
        p->scene = CTX_data_scene(C);
        p->graph = CTX_data_depsgraph(C);
        p->win = CTX_wm_window(C);
@@ -1800,7 +1805,7 @@ static void gp_paint_initstroke(tGPsdata *p, eGPencil_PaintModes paintmode)
 }
 
 /* finish off a stroke (clears buffer, but doesn't finish the paint operation) */
-static void gp_paint_strokeend(const bContext *C, tGPsdata *p)
+static void gp_paint_strokeend(tGPsdata *p)
 {
        ToolSettings *ts = p->scene->toolsettings;
        /* for surface sketching, need to set the right OpenGL context stuff so that
@@ -1811,14 +1816,14 @@ static void gp_paint_strokeend(const bContext *C, tGPsdata *p)
                
                /* need to restore the original projection settings before packing up */
                view3d_region_operator_needs_opengl(p->win, p->ar);
-               ED_view3d_autodist_init(C, p->graph, p->ar, v3d, (ts->gpencil_v3d_align & GP_PROJECT_DEPTH_STROKE) ? 1 : 0);
+               ED_view3d_autodist_init(&p->eval_ctx, p->graph, p->ar, v3d, (ts->gpencil_v3d_align & GP_PROJECT_DEPTH_STROKE) ? 1 : 0);
        }
        
        /* check if doing eraser or not */
        if ((p->gpd->sbuffer_sflag & GP_STROKE_ERASER) == 0) {
                /* simplify stroke before transferring? */
-               gp_stroke_simplify(C, p);
-               
+               gp_stroke_simplify(p);
+
                /* transfer stroke to frame */
                gp_stroke_newfrombuffer(p);
        }
@@ -1828,14 +1833,14 @@ static void gp_paint_strokeend(const bContext *C, tGPsdata *p)
 }
 
 /* finish off stroke painting operation */
-static void gp_paint_cleanup(const bContext *C, tGPsdata *p)
+static void gp_paint_cleanup(tGPsdata *p)
 {
        /* p->gpd==NULL happens when stroke failed to initialize,
         * for example when GP is hidden in current space (sergey)
         */
        if (p->gpd) {
                /* finish off a stroke */
-               gp_paint_strokeend(C, p);
+               gp_paint_strokeend(p);
        }
        
        /* "unlock" frame */
@@ -1941,7 +1946,7 @@ static void gpencil_draw_exit(bContext *C, wmOperator *op)
                U.gp_eraser = p->radius;
                
                /* cleanup */
-               gp_paint_cleanup(C, p);
+               gp_paint_cleanup(p);
                gp_session_cleanup(p);
                
                /* finally, free the temp data */
@@ -2051,13 +2056,13 @@ static void gpencil_draw_status_indicators(tGPsdata *p)
 /* ------------------------------- */
 
 /* create a new stroke point at the point indicated by the painting context */
-static void gpencil_draw_apply(const bContext *C, wmOperator *op, tGPsdata *p)
+static void gpencil_draw_apply(wmOperator *op, tGPsdata *p)
 {
        /* handle drawing/erasing -> test for erasing first */
        if (p->paintmode == GP_PAINTMODE_ERASER) {
                /* do 'live' erasing now */
-               gp_stroke_doeraser(C, p);
-               
+               gp_stroke_doeraser(p);
+
                /* store used values */
                p->mvalo[0] = p->mval[0];
                p->mvalo[1] = p->mval[1];
@@ -2066,12 +2071,12 @@ static void gpencil_draw_apply(const bContext *C, wmOperator *op, tGPsdata *p)
        /* only add current point to buffer if mouse moved (even though we got an event, it might be just noise) */
        else if (gp_stroke_filtermval(p, p->mval, p->mvalo)) {
                /* try to add point */
-               short ok = gp_stroke_addpoint(C, p, p->mval, p->pressure, p->curtime);
-               
+               short ok = gp_stroke_addpoint(p, p->mval, p->pressure, p->curtime);
+
                /* handle errors while adding point */
                if ((ok == GP_STROKEADD_FULL) || (ok == GP_STROKEADD_OVERFLOW)) {
                        /* finish off old stroke */
-                       gp_paint_strokeend(C, p);
+                       gp_paint_strokeend(p);
                        /* And start a new one!!! Else, projection errors! */
                        gp_paint_initstroke(p, p->paintmode);
                        
@@ -2080,12 +2085,12 @@ static void gpencil_draw_apply(const bContext *C, wmOperator *op, tGPsdata *p)
                        /* XXX We only need to reuse previous point if overflow! */
                        if (ok == GP_STROKEADD_OVERFLOW) {
                                p->inittime = p->ocurtime;
-                               gp_stroke_addpoint(C, p, p->mvalo, p->opressure, p->ocurtime);
+                               gp_stroke_addpoint(p, p->mvalo, p->opressure, p->ocurtime);
                        }
                        else {
                                p->inittime = p->curtime;
                        }
-                       gp_stroke_addpoint(C, p, p->mval, p->pressure, p->curtime);
+                       gp_stroke_addpoint(p, p->mval, p->pressure, p->curtime);
                }
                else if (ok == GP_STROKEADD_INVALID) {
                        /* the painting operation cannot continue... */
@@ -2106,7 +2111,7 @@ static void gpencil_draw_apply(const bContext *C, wmOperator *op, tGPsdata *p)
 }
 
 /* handle draw event */
-static void gpencil_draw_apply_event(const bContext *C, wmOperator *op, const wmEvent *event)
+static void gpencil_draw_apply_event(wmOperator *op, const wmEvent *event)
 {
        tGPsdata *p = op->customdata;
        PointerRNA itemptr;
@@ -2211,8 +2216,8 @@ static void gpencil_draw_apply_event(const bContext *C, wmOperator *op, const wm
        RNA_float_set(&itemptr, "time", p->curtime - p->inittime);
        
        /* apply the current latest drawing point */
-       gpencil_draw_apply(C, op, p);
-       
+       gpencil_draw_apply(op, p);
+
        /* force refresh */
        ED_region_tag_redraw(p->ar); /* just active area for now, since doing whole screen is too slow */
 }
@@ -2259,7 +2264,7 @@ static int gpencil_draw_exec(bContext *C, wmOperator *op)
                         */
                        if ((p->flags & GP_PAINTFLAG_FIRSTRUN) == 0) {
                                /* TODO: both of these ops can set error-status, but we probably don't need to worry */
-                               gp_paint_strokeend(C, p);
+                               gp_paint_strokeend(p);
                                gp_paint_initstroke(p, p->paintmode);
                        }
                }
@@ -2275,7 +2280,7 @@ static int gpencil_draw_exec(bContext *C, wmOperator *op)
                }
                
                /* apply this data as necessary now (as per usual) */
-               gpencil_draw_apply(C, op, p);
+               gpencil_draw_apply(op, p);
        }
        RNA_END;
                
@@ -2334,7 +2339,7 @@ static int gpencil_draw_invoke(bContext *C, wmOperator *op, const wmEvent *event
                p->status = GP_STATUS_PAINTING;
 
                /* handle the initial drawing - i.e. for just doing a simple dot */
-               gpencil_draw_apply_event(C, op, event);
+               gpencil_draw_apply_event(op, event);
                op->flag |= OP_IS_MODAL_CURSOR_REGION;
        }
        else {
@@ -2385,12 +2390,12 @@ static tGPsdata *gpencil_stroke_begin(bContext *C, wmOperator *op)
        return op->customdata;
 }
 
-static void gpencil_stroke_end(bContext *C, wmOperator *op)
+static void gpencil_stroke_end(wmOperator *op)
 {
        tGPsdata *p = op->customdata;
-       
-       gp_paint_cleanup(C, p);
-       
+
+       gp_paint_cleanup(p);
+
        gpencil_undo_push(p->gpd);
        
        gp_session_cleanup(p);
@@ -2523,8 +2528,8 @@ static int gpencil_draw_modal(bContext *C, wmOperator *op, const wmEvent *event)
                        if (sketch) {
                                /* end stroke only, and then wait to resume painting soon */
                                /* printf("\t\tGP - end stroke only\n"); */
-                               gpencil_stroke_end(C, op);
-                               
+                               gpencil_stroke_end(op);
+
                                /* If eraser mode is on, turn it off after the stroke finishes
                                 * NOTE: This just makes it nicer to work with drawing sessions
                                 */
@@ -2666,8 +2671,8 @@ static int gpencil_draw_modal(bContext *C, wmOperator *op, const wmEvent *event)
                if (ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE) || (p->flags & GP_PAINTFLAG_FIRSTRUN)) {
                        /* handle drawing event */
                        /* printf("\t\tGP - add point\n"); */
-                       gpencil_draw_apply_event(C, op, event);
-                       
+                       gpencil_draw_apply_event(op, event);
+
                        /* finish painting operation if anything went wrong just now */
                        if (p->status == GP_STATUS_ERROR) {
                                printf("\t\t\t\tGP - add error done!\n");
index 07fac0fdfac63343d1d05b1dbb8a1499900c77c7..fae08bd771e45f0345b452ed1a88fef793fb6b17 100644 (file)
@@ -65,6 +65,8 @@
 #include "ED_clip.h"
 #include "ED_view3d.h"
 
+#include "DEG_depsgraph.h"
+
 #include "gpencil_intern.h"
 
 /* ******************************************************** */
@@ -538,11 +540,14 @@ void gp_point_conversion_init(bContext *C, GP_SpaceConversion *r_gsc)
                View3D *v3d = (View3D *)CTX_wm_space_data(C);
                RegionView3D *rv3d = ar->regiondata;
                
+               EvaluationContext eval_ctx;
+               CTX_data_eval_ctx(C, &eval_ctx);
+
                /* init 3d depth buffers */
                view3d_operator_needs_opengl(C);
                
                view3d_region_operator_needs_opengl(win, ar);
-               ED_view3d_autodist_init(C, graph, ar, v3d, 0);
+               ED_view3d_autodist_init(&eval_ctx, graph, ar, v3d, 0);
                
                /* for camera view set the subrect */
                if (rv3d->persp == RV3D_CAMOB) {
index c3186f7afdfb48af14df403777bb8724c78468a7..52edfc22d216d9fa092e37ec748b0feeaca7ac97 100644 (file)
@@ -36,6 +36,7 @@ extern "C" {
 #endif
 
 struct ID;
+struct EvaluationContext;
 struct View3D;
 struct ARegion;
 struct bContext;
@@ -134,35 +135,36 @@ void EDBM_select_mirrored(
         int *r_totmirr, int *r_totfail);
 void EDBM_automerge(struct Scene *scene, struct Object *ob, bool update, const char hflag);
 
-bool EDBM_backbuf_border_init(const struct bContext *C, struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax);
+bool EDBM_backbuf_border_init(const struct EvaluationContext *eval_ctx, struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax);
 bool EDBM_backbuf_check(unsigned int index);
 void EDBM_backbuf_free(void);
 
-bool EDBM_backbuf_border_mask_init(const struct bContext *C, struct ViewContext *vc, const int mcords[][2], short tot,
-                                   short xmin, short ymin, short xmax, short ymax);
-bool EDBM_backbuf_circle_init(const struct bContext *C, struct ViewContext *vc, short xs, short ys, short rads);
+bool EDBM_backbuf_border_mask_init(
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, const int mcords[][2], short tot,
+        short xmin, short ymin, short xmax, short ymax);
+bool EDBM_backbuf_circle_init(const struct EvaluationContext *eval_ctx, struct ViewContext *vc, short xs, short ys, short rads);
 
 struct BMVert *EDBM_vert_find_nearest_ex(
-        const struct bContext *C, struct ViewContext *vc, float *r_dist,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, float *r_dist,
         const bool use_select_bias, bool use_cycle);
 struct BMVert *EDBM_vert_find_nearest(
-        const struct bContext *C, struct ViewContext *vc, float *r_dist);
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, float *r_dist);
 
 struct BMEdge *EDBM_edge_find_nearest_ex(
-        const struct bContext *C, struct ViewContext *vc, float *r_dist,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, float *r_dist,
         float *r_dist_center,
         const bool use_select_bias, const bool use_cycle,
         struct BMEdge **r_eed_zbuf);
 struct BMEdge *EDBM_edge_find_nearest(
-        const struct bContext *C, struct ViewContext *vc, float *r_dist);
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, float *r_dist);
 
 struct BMFace *EDBM_face_find_nearest_ex(
-        const struct bContext *C, struct ViewContext *vc, float *r_dist,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, float *r_dist,
         float *r_dist_center,
         const bool use_select_bias, const bool use_cycle,
         struct BMFace **r_efa_zbuf);
 struct BMFace *EDBM_face_find_nearest(
-        const struct bContext *C, struct ViewContext *vc, float *r_dist);
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, float *r_dist);
 
 bool EDBM_select_pick(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle);
 
@@ -199,7 +201,7 @@ void EMBM_project_snap_verts(struct bContext *C, struct ARegion *ar, struct BMEd
 /* editface.c */
 void paintface_flush_flags(struct Object *ob, short flag);
 bool paintface_mouse_select(struct bContext *C, struct Object *ob, const int mval[2], bool extend, bool deselect, bool toggle);
-int  do_paintface_box_select(const struct bContext *C, struct ViewContext *vc, struct rcti *rect, bool select, bool extend);
+int  do_paintface_box_select(const struct EvaluationContext *eval_ctx, struct ViewContext *vc, struct rcti *rect, bool select, bool extend);
 void paintface_deselect_all_visible(struct Object *ob, int action, bool flush_flags);
 void paintface_select_linked(struct bContext *C, struct Object *ob, const int mval[2], const bool select);
 bool paintface_minmax(struct Object *ob, float r_min[3], float r_max[3]);
index 7bce95182bfad5bba73aa2f1af942f1054ddb0c1..f8bd8a22897814bbbbcdca180da443f980077746 100644 (file)
@@ -46,15 +46,16 @@ int PE_start_edit(struct PTCacheEdit *edit);
 
 /* access */
 struct PTCacheEdit *PE_get_current(struct Scene *scene, struct SceneLayer *sl, struct Object *ob);
-struct PTCacheEdit *PE_create_current(const struct bContext *C, struct Scene *scene, struct Object *ob);
-void PE_current_changed(const struct bContext *C, struct Scene *scene, struct Object *ob);
+struct PTCacheEdit *PE_create_current(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void PE_current_changed(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
 int PE_minmax(struct Scene *scene, struct SceneLayer *sl, float min[3], float max[3]);
 struct ParticleEditSettings *PE_settings(struct Scene *scene);
 
 /* update calls */
 void PE_hide_keys_time(struct Scene *scene, struct PTCacheEdit *edit, float cfra);
-void PE_update_object(const struct bContext *C, struct Scene *scene,
-                      struct SceneLayer *sl, struct Object *ob, int useflag);
+void PE_update_object(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct SceneLayer *sl, struct Object *ob, int useflag);
 
 /* selection tools */
 int PE_mouse_particles(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle);
index 4b7eaa4f3d43dfa0f3758090f28862c8a168e0b8..0dcfd68c0f1ecaf9af96e3b8424139464b3165cb 100644 (file)
@@ -152,20 +152,20 @@ typedef enum {
 
 /* foreach iterators */
 void meshobject_foreachScreenVert(
-        const struct bContext *C, struct ViewContext *vc,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc,
         void (*func)(void *userData, struct MVert *eve, const float screen_co[2], int index),
         void *userData, const eV3DProjTest clip_flag);
 void mesh_foreachScreenVert(
-        const struct bContext *C, struct ViewContext *vc,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc,
         void (*func)(void *userData, struct BMVert *eve, const float screen_co[2], int index),
         void *userData, const eV3DProjTest clip_flag);
 void mesh_foreachScreenEdge(
-        const struct bContext *C, struct ViewContext *vc,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc,
         void (*func)(void *userData, struct BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2],
                      int index),
         void *userData, const eV3DProjTest clip_flag);
 void mesh_foreachScreenFace(
-        const struct bContext *C, struct ViewContext *vc,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc,
         void (*func)(void *userData, struct BMFace *efa, const float screen_co[2], int index),
         void *userData, const eV3DProjTest clip_flag);
 void nurbs_foreachScreenVert(
@@ -295,21 +295,23 @@ float ED_view3d_radius_to_dist(
 void imm_drawcircball(const float cent[3], float rad, const float tmat[4][4], unsigned pos);
 
 /* backbuffer select and draw support */
-void          ED_view3d_backbuf_validate(const struct bContext *C, struct ViewContext *vc);
-struct ImBuf *ED_view3d_backbuf_read(const struct bContext *C, struct ViewContext *vc, int xmin, int ymin, int xmax, int ymax);
+void          ED_view3d_backbuf_validate(const struct EvaluationContext *eval_ctx, struct ViewContext *vc);
+struct ImBuf *ED_view3d_backbuf_read(
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, int xmin, int ymin, int xmax, int ymax);
 unsigned int  ED_view3d_backbuf_sample_rect(
-        const struct bContext *C, struct ViewContext *vc, const int mval[2], int size,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, const int mval[2], int size,
         unsigned int min, unsigned int max, float *r_dist);
 int          ED_view3d_backbuf_sample_size_clamp(struct ARegion *ar, const float dist);
-unsigned int ED_view3d_backbuf_sample(const struct bContext *C, struct ViewContext *vc, int x, int y);
+unsigned int ED_view3d_backbuf_sample(
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, int x, int y);
 
 bool ED_view3d_autodist(
-        const struct bContext *C, struct Depsgraph *graph, struct ARegion *ar, struct View3D *v3d,
+        const struct EvaluationContext *eval_ctx, struct Depsgraph *graph, struct ARegion *ar, struct View3D *v3d,
         const int mval[2], float mouse_worldloc[3],
         const bool alphaoverride, const float fallback_depth_pt[3]);
 
 /* only draw so ED_view3d_autodist_simple can be called many times after */
-void ED_view3d_autodist_init(const struct bContext *C, struct Depsgraph *graph, struct ARegion *ar, struct View3D *v3d, int mode);
+void ED_view3d_autodist_init(const struct EvaluationContext *eval_ctx, struct Depsgraph *graph, struct ARegion *ar, struct View3D *v3d, int mode);
 bool ED_view3d_autodist_simple(struct ARegion *ar, const int mval[2], float mouse_worldloc[3], int margin, float *force_depth);
 bool ED_view3d_autodist_depth(struct ARegion *ar, const int mval[2], int margin, float *depth);
 bool ED_view3d_autodist_depth_seg(struct ARegion *ar, const int mval_sta[2], const int mval_end[2], int margin, float *depth);
@@ -331,7 +333,7 @@ void view3d_opengl_select_cache_begin(void);
 void view3d_opengl_select_cache_end(void);
 
 int view3d_opengl_select(
-        const struct bContext *C, struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, const struct rcti *input,
+        const struct EvaluationContext *eval_ctx, struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, const struct rcti *input,
         eV3DSelectMode select_mode);
 
 /* view3d_select.c */
@@ -363,26 +365,27 @@ int ED_view3d_scene_layer_set(int lay, const int *values, int *active);
 struct RV3DMatrixStore *ED_view3d_mats_rv3d_backup(struct RegionView3D *rv3d);
 void                    ED_view3d_mats_rv3d_restore(struct RegionView3D *rv3d, struct RV3DMatrixStore *rv3dmat);
 
-void  ED_draw_object_facemap(const struct bContext *C, struct Scene *scene, struct Object *ob, const float col[4], const int facemap);
+void  ED_draw_object_facemap(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, const float col[4], const int facemap);
 
 bool ED_view3d_context_activate(struct bContext *C);
-void ED_view3d_draw_offscreen_init(struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d);
+void ED_view3d_draw_offscreen_init(
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d);
 void ED_view3d_draw_offscreen(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
         float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
         struct GPUFX *fx, struct GPUFXSettings *fx_settings,
         struct GPUOffScreen *ofs);
 void ED_view3d_draw_setup_view(
-        struct wmWindow *win, const struct bContext *C, struct Scene *scene, struct ARegion *ar, struct View3D *v3d,
+        struct wmWindow *win, const struct EvaluationContext *eval_ctx, struct Scene *scene, struct ARegion *ar, struct View3D *v3d,
         float viewmat[4][4], float winmat[4][4], const struct rcti *rect);
 
 struct ImBuf *ED_view3d_draw_offscreen_imbuf(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar,
         int sizex, int sizey, unsigned int flag, bool draw_background,
         int alpha_mode, int samples, bool full_samples, const char *viewname,
         struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
 struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct Object *camera, int width, int height,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct Object *camera, int width, int height,
         unsigned int flag, int drawtype, bool use_solid_tex, bool use_gpencil, bool draw_background,
         int alpha_mode, int samples, bool full_samples, const char *viewname,
         struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
@@ -390,7 +393,7 @@ struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
 struct BaseLegacy *ED_view3d_give_base_under_cursor(struct bContext *C, const int mval[2]);
 void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar, bool do_clip);
 void ED_view3d_update_viewmat(
-        struct EvaluationContext *eval_ctx, struct Scene *scene, struct View3D *v3d, struct ARegion *ar,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct View3D *v3d, struct ARegion *ar,
         float viewmat[4][4], float winmat[4][4], const struct rcti *rect);
 bool ED_view3d_quat_from_axis_view(const char view, float quat[4]);
 char ED_view3d_quat_to_axis_view(const float quat[4], const float epsilon);
index 40c6058c7c3bf5e97a1e947507ad886d82f6520b..2695d4c9dd9abf2e0e99e433faffa50101488629 100644 (file)
@@ -913,6 +913,9 @@ static void depthdropper_depth_sample_pt(bContext *C, DepthDropper *ddr, int mx,
                                    my - ar->winrct.ymin};
                                float co[3];
 
+                               EvaluationContext eval_ctx;
+                               CTX_data_eval_ctx(C, &eval_ctx);
+
                                CTX_wm_area_set(C, sa);
                                CTX_wm_region_set(C, ar);
 
@@ -921,7 +924,7 @@ static void depthdropper_depth_sample_pt(bContext *C, DepthDropper *ddr, int mx,
 
                                view3d_operator_needs_opengl(C);
 
-                               if (ED_view3d_autodist(C, graph, ar, v3d, mval, co, true, NULL)) {
+                               if (ED_view3d_autodist(&eval_ctx, graph, ar, v3d, mval, co, true, NULL)) {
                                        const float mval_center_fl[2] = {
                                            (float)ar->winx / 2,
                                            (float)ar->winy / 2};
index e8111bda65786fa27c0f4be384ac4e338c37ca17..e552a7a6aa3aefc5ffe3fc20b7d5782d6727e838 100644 (file)
@@ -46,6 +46,7 @@
 
 #include "MEM_guardedalloc.h"
 
+#include "DEG_depsgraph.h"
 
 #include "RNA_access.h"
 
@@ -139,9 +140,12 @@ void ED_manipulator_draw_preset_facemap(
                GPU_select_load_id(select_id);
        }
 
+       EvaluationContext eval_ctx;
+       CTX_data_eval_ctx(C, &eval_ctx);
+
        gpuPushMatrix();
        gpuMultMatrix(ob->obmat);
-       ED_draw_object_facemap(C, scene, ob, color, facemap);
+       ED_draw_object_facemap(&eval_ctx, scene, ob, color, facemap);
        gpuPopMatrix();
 
        if (is_select) {
index 8aa3b63f7951617d2b7ca310d56aaeaf8504b178..94fe433e5d7c5183c9da723b0a51e25ace7083be 100644 (file)
@@ -396,7 +396,7 @@ bool paintface_mouse_select(struct bContext *C, Object *ob, const int mval[2], b
        return true;
 }
 
-int do_paintface_box_select(const bContext *C, ViewContext *vc, rcti *rect, bool select, bool extend)
+int do_paintface_box_select(const struct EvaluationContext *eval_ctx, ViewContext *vc, rcti *rect, bool select, bool extend)
 {
        Object *ob = vc->obact;
        Mesh *me;
@@ -427,7 +427,7 @@ int do_paintface_box_select(const bContext *C, ViewContext *vc, rcti *rect, bool
                }
        }
 
-       ED_view3d_backbuf_validate(C, vc);
+       ED_view3d_backbuf_validate(eval_ctx, vc);
 
        ibuf = IMB_allocImBuf(size[0], size[1], 32, IB_rect);
        rt = ibuf->rect;
index 37d86ee313f97aa81c83da4425cf57695c648565..5aa10620936d7f2c9ae7e4b796b2ac299dbafec6 100644 (file)
@@ -161,6 +161,7 @@ typedef struct KnifePosData {
 typedef struct KnifeTool_OpData {
        ARegion *ar;        /* region that knifetool was activated in */
        void *draw_handle;  /* for drawing preview loop */
+       EvaluationContext eval_ctx;
        ViewContext vc;     /* note: _don't_ use 'mval', instead use the one we define below */
        float mval[2];      /* mouse value with snapping applied */
        //bContext *C;
@@ -1814,7 +1815,7 @@ static void knife_input_ray_segment(KnifeTool_OpData *kcd, const float mval[2],
        mul_m4_v3(kcd->ob->imat, r_origin_ofs);
 }
 
-static BMFace *knife_find_closest_face(const bContext *C, KnifeTool_OpData *kcd, float co[3], float cageco[3], bool *is_space)
+static BMFace *knife_find_closest_face(KnifeTool_OpData *kcd, float co[3], float cageco[3], bool *is_space)
 {
        BMFace *f;
        float dist = KMAXDIST;
@@ -1839,7 +1840,7 @@ static BMFace *knife_find_closest_face(const bContext *C, KnifeTool_OpData *kcd,
        if (!f) {
                if (kcd->is_interactive) {
                        /* try to use backbuffer selection method if ray casting failed */
-                       f = EDBM_face_find_nearest(C, &kcd->vc, &dist);
+                       f = EDBM_face_find_nearest(&kcd->eval_ctx, &kcd->vc, &dist);
 
                        /* cheat for now; just put in the origin instead
                         * of a true coordinate on the face.
@@ -1853,7 +1854,7 @@ static BMFace *knife_find_closest_face(const bContext *C, KnifeTool_OpData *kcd,
 
 /* find the 2d screen space density of vertices within a radius.  used to scale snapping
  * distance for picking edges/verts.*/
-static int knife_sample_screen_density(const bContext *C, KnifeTool_OpData *kcd, const float radius)
+static int knife_sample_screen_density(KnifeTool_OpData *kcd, const float radius)
 {
        BMFace *f;
        bool is_space;
@@ -1861,7 +1862,7 @@ static int knife_sample_screen_density(const bContext *C, KnifeTool_OpData *kcd,
 
        BLI_assert(kcd->is_interactive == true);
 
-       f = knife_find_closest_face(C, kcd, co, cageco, &is_space);
+       f = knife_find_closest_face(kcd, co, cageco, &is_space);
 
        if (f && !is_space) {
                const float radius_sq = radius * radius;
@@ -1904,15 +1905,15 @@ static int knife_sample_screen_density(const bContext *C, KnifeTool_OpData *kcd,
 
 /* returns snapping distance for edges/verts, scaled by the density of the
  * surrounding mesh (in screen space)*/
-static float knife_snap_size(const bContext *C, KnifeTool_OpData *kcd, float maxsize)
+static float knife_snap_size(KnifeTool_OpData *kcd, float maxsize)
 {
-       float density = (float)knife_sample_screen_density(C, kcd, maxsize * 2.0f);
+       float density = (float)knife_sample_screen_density(kcd, maxsize * 2.0f);
 
        return min_ff(maxsize / (density * 0.5f), maxsize);
 }
 
 /* p is closest point on edge to the mouse cursor */
-static KnifeEdge *knife_find_closest_edge(const bContext *C, KnifeTool_OpData *kcd, float p[3], float cagep[3],
+static KnifeEdge *knife_find_closest_edge(KnifeTool_OpData *kcd, float p[3], float cagep[3],
                                           BMFace **fptr, bool *is_space)
 {
        BMFace *f;
@@ -1920,7 +1921,7 @@ static KnifeEdge *knife_find_closest_edge(const bContext *C, KnifeTool_OpData *k
        float maxdist;
 
        if (kcd->is_interactive) {
-               maxdist = knife_snap_size(C, kcd, kcd->ethresh);
+               maxdist = knife_snap_size(kcd, kcd->ethresh);
 
                if (kcd->ignore_vert_snapping) {
                        maxdist *= 0.5f;
@@ -1930,7 +1931,7 @@ static KnifeEdge *knife_find_closest_edge(const bContext *C, KnifeTool_OpData *k
                maxdist = KNIFE_FLT_EPS;
        }
 
-       f = knife_find_closest_face(C, kcd, co, cageco, NULL);
+       f = knife_find_closest_face(kcd, co, cageco, NULL);
        *is_space = !f;
 
        kcd->curr.bmface = f;
@@ -2044,7 +2045,7 @@ static KnifeEdge *knife_find_closest_edge(const bContext *C, KnifeTool_OpData *k
 }
 
 /* find a vertex near the mouse cursor, if it exists */
-static KnifeVert *knife_find_closest_vert(const bContext *C, KnifeTool_OpData *kcd, float p[3], float cagep[3], BMFace **fptr,
+static KnifeVert *knife_find_closest_vert(KnifeTool_OpData *kcd, float p[3], float cagep[3], BMFace **fptr,
                                           bool *is_space)
 {
        BMFace *f;
@@ -2052,7 +2053,7 @@ static KnifeVert *knife_find_closest_vert(const bContext *C, KnifeTool_OpData *k
        float maxdist;
 
        if (kcd->is_interactive) {
-               maxdist = knife_snap_size(C, kcd, kcd->vthresh);
+               maxdist = knife_snap_size(kcd, kcd->vthresh);
                if (kcd->ignore_vert_snapping) {
                        maxdist *= 0.5f;
                }
@@ -2061,7 +2062,7 @@ static KnifeVert *knife_find_closest_vert(const bContext *C, KnifeTool_OpData *k
                maxdist = KNIFE_FLT_EPS;
        }
 
-       f = knife_find_closest_face(C, kcd, co, cageco, is_space);
+       f = knife_find_closest_face(kcd, co, cageco, is_space);
 
        kcd->curr.bmface = f;
 
@@ -2183,7 +2184,7 @@ static bool knife_snap_angle(KnifeTool_OpData *kcd)
 }
 
 /* update active knife edge/vert pointers */
-static int knife_update_active(const bContext *C, KnifeTool_OpData *kcd)
+static int knife_update_active(KnifeTool_OpData *kcd)
 {
        knife_pos_data_clear(&kcd->curr);
        copy_v2_v2(kcd->curr.mval, kcd->mval);
@@ -2198,13 +2199,13 @@ static int knife_update_active(const bContext *C, KnifeTool_OpData *kcd)
                kcd->is_angle_snapping = false;
        }
 
-       kcd->curr.vert = knife_find_closest_vert(C, kcd, kcd->curr.co, kcd->curr.cage, &kcd->curr.bmface, &kcd->curr.is_space);
+       kcd->curr.vert = knife_find_closest_vert(kcd, kcd->curr.co, kcd->curr.cage, &kcd->curr.bmface, &kcd->curr.is_space);
 
        if (!kcd->curr.vert &&
            /* no edge snapping while dragging (edges are too sticky when cuts are immediate) */
            !kcd->is_drag_hold)
        {
-               kcd->curr.edge = knife_find_closest_edge(C, kcd, kcd->curr.co, kcd->curr.cage,
+               kcd->curr.edge = knife_find_closest_edge(kcd, kcd->curr.co, kcd->curr.cage,
                                                         &kcd->curr.bmface, &kcd->curr.is_space);
        }
 
@@ -2571,30 +2572,27 @@ static void knifetool_exit(bContext *C, wmOperator *op)
        op->customdata = NULL;
 }
 
-static void knifetool_update_mval(const bContext *C, KnifeTool_OpData *kcd, const float mval[2])
+static void knifetool_update_mval(KnifeTool_OpData *kcd, const float mval[2])
 {
        knife_recalc_projmat(kcd);
        copy_v2_v2(kcd->mval, mval);
 
-       if (knife_update_active(C, kcd)) {
+       if (knife_update_active(kcd)) {
                ED_region_tag_redraw(kcd->ar);
        }
 }
 
-static void knifetool_update_mval_i(const bContext *C, KnifeTool_OpData *kcd, const int mval_i[2])
+static void knifetool_update_mval_i(KnifeTool_OpData *kcd, const int mval_i[2])
 {
        float mval[2] = {UNPACK2(mval_i)};
-       knifetool_update_mval(C, kcd, mval);
+       knifetool_update_mval(kcd, mval);
 }
 
-static void knifetool_init_bmbvh(const bContext *C, KnifeTool_OpData *kcd)
+static void knifetool_init_bmbvh(KnifeTool_OpData *kcd)
 {
-       EvaluationContext eval_ctx;
        BM_mesh_elem_index_ensure(kcd->em->bm, BM_VERT);
 
-       CTX_data_eval_ctx(C, &eval_ctx);
-
-       kcd->cagecos = (const float (*)[3])BKE_editmesh_vertexCos_get(&eval_ctx, kcd->em, kcd->scene, NULL);
+       kcd->cagecos = (const float (*)[3])BKE_editmesh_vertexCos_get(&kcd->eval_ctx, kcd->em, kcd->scene, NULL);
 
        kcd->bmbvh = BKE_bmbvh_new_from_editmesh(
                kcd->em,
@@ -2628,6 +2626,7 @@ static void knifetool_init(bContext *C, KnifeTool_OpData *kcd,
        kcd->ob = obedit;
        kcd->ar = CTX_wm_region(C);
 
+       CTX_data_eval_ctx(C, &kcd->eval_ctx);
        em_setup_viewcontext(C, &kcd->vc);
 
        kcd->em = BKE_editmesh_from_object(kcd->ob);
@@ -2637,7 +2636,7 @@ static void knifetool_init(bContext *C, KnifeTool_OpData *kcd,
        kcd->cut_through = cut_through;
        kcd->only_select = only_select;
 
-       knifetool_init_bmbvh(C, kcd);
+       knifetool_init_bmbvh(kcd);
 
        kcd->arena = BLI_memarena_new(MEM_SIZE_OPTIMAL(1 << 15), "knife");
 #ifdef USE_NET_ISLAND_CONNECT
@@ -2709,7 +2708,7 @@ static int knifetool_invoke(bContext *C, wmOperator *op, const wmEvent *event)
        WM_cursor_modal_set(CTX_wm_window(C), BC_KNIFECURSOR);
        WM_event_add_modal_handler(C, op);
 
-       knifetool_update_mval_i(C, kcd, event->mval);
+       knifetool_update_mval_i(kcd, event->mval);
 
        knife_update_header(C, op, kcd);
 
@@ -2782,6 +2781,7 @@ static int knifetool_modal(bContext *C, wmOperator *op, const wmEvent *event)
                return OPERATOR_FINISHED;
        }
 
+       CTX_data_eval_ctx(C, &kcd->eval_ctx);
        em_setup_viewcontext(C, &kcd->vc);
        kcd->ar = kcd->vc.ar;
 
@@ -2815,7 +2815,7 @@ static int knifetool_modal(bContext *C, wmOperator *op, const wmEvent *event)
                                kcd->snap_midpoints = true;
 
                                knife_recalc_projmat(kcd);
-                               knife_update_active(C, kcd);
+                               knife_update_active(kcd);
                                knife_update_header(C, op, kcd);
                                ED_region_tag_redraw(kcd->ar);
                                do_refresh = true;
@@ -2824,7 +2824,7 @@ static int knifetool_modal(bContext *C, wmOperator *op, const wmEvent *event)
                                kcd->snap_midpoints = false;
 
                                knife_recalc_projmat(kcd);
-                               knife_update_active(C, kcd);
+                               knife_update_active(kcd);
                                knife_update_header(C, op, kcd);
                                ED_region_tag_redraw(kcd->ar);
                                do_refresh = true;
@@ -2879,7 +2879,7 @@ static int knifetool_modal(bContext *C, wmOperator *op, const wmEvent *event)
                                        kcd->is_drag_hold = false;
 
                                        /* needed because the last face 'hit' is ignored when dragging */
-                                       knifetool_update_mval(C, kcd, kcd->curr.mval);
+                                       knifetool_update_mval(kcd, kcd->curr.mval);
                                }
 
                                ED_region_tag_redraw(kcd->ar);
@@ -2890,14 +2890,14 @@ static int knifetool_modal(bContext *C, wmOperator *op, const wmEvent *event)
                                        /* shouldn't be possible with default key-layout, just incase... */
                                        if (kcd->is_drag_hold) {
                                                kcd->is_drag_hold = false;
-                                               knifetool_update_mval(C, kcd, kcd->curr.mval);
+                                               knifetool_update_mval(kcd, kcd->curr.mval);
                                        }
 
                                        kcd->prev = kcd->curr;
                                        kcd->curr = kcd->init;
 
                                        knife_project_v2(kcd, kcd->curr.cage, kcd->curr.mval);
-                                       knifetool_update_mval(C, kcd, kcd->curr.mval);
+                                       knifetool_update_mval(kcd, kcd->curr.mval);
 
                                        knife_add_cut(kcd);
 
@@ -2931,7 +2931,7 @@ static int knifetool_modal(bContext *C, wmOperator *op, const wmEvent *event)
                                return OPERATOR_PASS_THROUGH;
                        case MOUSEMOVE: /* mouse moved somewhere to select another loop */
                                if (kcd->mode != MODE_PANNING) {
-                                       knifetool_update_mval_i(C, kcd, event->mval);
+                                       knifetool_update_mval_i(kcd, event->mval);
 
                                        if (kcd->is_drag_hold) {
                                                if (kcd->totlinehit >= 2) {
@@ -2954,7 +2954,7 @@ static int knifetool_modal(bContext *C, wmOperator *op, const wmEvent *event)
        if (do_refresh) {
                /* we don't really need to update mval,
                 * but this happens to be the best way to refresh at the moment */
-               knifetool_update_mval_i(C, kcd, event->mval);
+               knifetool_update_mval_i(kcd, event->mval);
        }
 
        /* keep going until the user confirms */
@@ -3042,7 +3042,7 @@ void EDBM_mesh_knife(bContext *C, LinkNode *polys, bool use_tag, bool cut_throug
                        int i;
 
                        for (i = 0; i < mval_tot; i++) {
-                               knifetool_update_mval(C, kcd, mval_fl[i]);
+                               knifetool_update_mval(kcd, mval_fl[i]);
                                if (i == 0) {
                                        knife_start_cut(kcd);
                                        kcd->mode = MODE_DRAGGING;
@@ -3073,7 +3073,7 @@ void EDBM_mesh_knife(bContext *C, LinkNode *polys, bool use_tag, bool cut_throug
 
                        /* freed on knifetool_finish_ex, but we need again to check if points are visible */
                        if (kcd->cut_through == false) {
-                               knifetool_init_bmbvh(C, kcd);
+                               knifetool_init_bmbvh(kcd);
                        }
 
                        ED_view3d_ob_project_mat_get(kcd->ar->regiondata, kcd->ob, projmat);
index 8db3a2c8d04951bba9709a2d31cbc9b233042537..a4a6ad82dfbf98fee5021614a73037d18d205519 100644 (file)
@@ -63,6 +63,8 @@
 #include "WM_api.h"
 #include "WM_types.h"
 
+#include "DEG_depsgraph.h"
+
 #include "mesh_intern.h"  /* own include */
 
 #define SUBD_SMOOTH_MAX 4.0f
@@ -556,20 +558,23 @@ static void loopcut_update_edge(RingSelOpData *lcd, BMEdge *e, const int preview
        }
 }
 
-static void loopcut_mouse_move(const bContext *C, RingSelOpData *lcd, const int previewlines)
+static void loopcut_mouse_move(const struct EvaluationContext *eval_ctx, RingSelOpData *lcd, const int previewlines)
 {
        float dist = ED_view3d_select_dist_px();
-       BMEdge *e = EDBM_edge_find_nearest(C, &lcd->vc, &dist);
+       BMEdge *e = EDBM_edge_find_nearest(eval_ctx, &lcd->vc, &dist);
        loopcut_update_edge(lcd, e, previewlines);
 }
 
 /* called by both init() and exec() */
 static int loopcut_init(bContext *C, wmOperator *op, const wmEvent *event)
 {
+       EvaluationContext eval_ctx;
        const bool is_interactive = (event != NULL);
        Object *obedit = CTX_data_edit_object(C);
        RingSelOpData *lcd;
 
+       CTX_data_eval_ctx(C, &eval_ctx);
+
        if (modifiers_isDeformedByLattice(obedit) || modifiers_isDeformedByArmature(obedit))
                BKE_report(op->reports, RPT_WARNING, "Loop cut does not work well on deformed edit mesh display");
 
@@ -597,7 +602,7 @@ static int loopcut_init(bContext *C, wmOperator *op, const wmEvent *event)
 
        if (is_interactive) {
                copy_v2_v2_int(lcd->vc.mval, event->mval);
-               loopcut_mouse_move(C, lcd, is_interactive ? 1 : 0);
+               loopcut_mouse_move(&eval_ctx, lcd, is_interactive ? 1 : 0);
        }
        else {
                const int e_index = RNA_int_get(op->ptr, "edge_index");
@@ -670,12 +675,14 @@ static int loopcut_finish(RingSelOpData *lcd, bContext *C, wmOperator *op)
 
 static int loopcut_modal(bContext *C, wmOperator *op, const wmEvent *event)
 {
+       EvaluationContext eval_ctx;
        RingSelOpData *lcd = op->customdata;
        float cuts = lcd->cuts;
        float smoothness = lcd->smoothness;
        bool show_cuts = false;
        const bool has_numinput = hasNumInput(&lcd->num);
 
+       CTX_data_eval_ctx(C, &eval_ctx);
        em_setup_viewcontext(C, &lcd->vc);
        lcd->ar = lcd->vc.ar;
 
@@ -761,7 +768,7 @@ static int loopcut_modal(bContext *C, wmOperator *op, const wmEvent *event)
                                if (!has_numinput) {
                                        lcd->vc.mval[0] = event->mval[0];
                                        lcd->vc.mval[1] = event->mval[1];
-                                       loopcut_mouse_move(C, lcd, (int)lcd->cuts);
+                                       loopcut_mouse_move(&eval_ctx, lcd, (int)lcd->cuts);
 
                                        ED_region_tag_redraw(lcd->ar);
                                        handled = true;
index 0a36b735f39dbe767db668bab360d24556f2388d..29bca00f1a99aa3a941484caa1576cafb50ea17a 100644 (file)
@@ -59,6 +59,8 @@
 #include "bmesh.h"
 #include "bmesh_tools.h"
 
+#include "DEG_depsgraph.h"
+
 #include "mesh_intern.h"  /* own include */
 
 struct PathSelectParams {
@@ -570,19 +572,19 @@ static bool edbm_shortest_path_pick_ex(
 
 static int edbm_shortest_path_pick_exec(bContext *C, wmOperator *op);
 
-static BMElem *edbm_elem_find_nearest(const bContext *C, ViewContext *vc, const char htype)
+static BMElem *edbm_elem_find_nearest(const struct EvaluationContext *eval_ctx, ViewContext *vc, const char htype)
 {
        BMEditMesh *em = vc->em;
        float dist = ED_view3d_select_dist_px();
 
        if ((em->selectmode & SCE_SELECT_VERTEX) && (htype == BM_VERT)) {
-               return (BMElem *)EDBM_vert_find_nearest(C, vc, &dist);
+               return (BMElem *)EDBM_vert_find_nearest(eval_ctx, vc, &dist);
        }
        else if ((em->selectmode & SCE_SELECT_EDGE) && (htype == BM_EDGE)) {
-               return (BMElem *)EDBM_edge_find_nearest(C, vc, &dist);
+               return (BMElem *)EDBM_edge_find_nearest(eval_ctx, vc, &dist);
        }
        else if ((em->selectmode & SCE_SELECT_FACE) && (htype == BM_FACE)) {
-               return (BMElem *)EDBM_face_find_nearest(C, vc, &dist);
+               return (BMElem *)EDBM_face_find_nearest(eval_ctx, vc, &dist);
        }
 
        return NULL;
@@ -605,10 +607,12 @@ static int edbm_shortest_path_pick_invoke(bContext *C, wmOperator *op, const wmE
                return edbm_shortest_path_pick_exec(C, op);
        }
 
+       EvaluationContext eval_ctx;
        ViewContext vc;
        BMEditMesh *em;
        bool track_active = true;
 
+       CTX_data_eval_ctx(C, &eval_ctx);
        em_setup_viewcontext(C, &vc);
        copy_v2_v2_int(vc.mval, event->mval);
        em = vc.em;
@@ -617,14 +621,14 @@ static int edbm_shortest_path_pick_invoke(bContext *C, wmOperator *op, const wmE
 
        BMElem *ele_src, *ele_dst;
        if (!(ele_src = edbm_elem_active_elem_or_face_get(em->bm)) ||
-           !(ele_dst = edbm_elem_find_nearest(C, &vc, ele_src->head.htype)))
+           !(ele_dst = edbm_elem_find_nearest(&eval_ctx, &vc, ele_src->head.htype)))
        {
                /* special case, toggle edge tags even when we don't have a path */
                if (((em->selectmode & SCE_SELECT_EDGE) &&
                     (vc.scene->toolsettings->edge_mode != EDGE_MODE_SELECT)) &&
                    /* check if we only have a destination edge */
                    ((ele_src == NULL) &&
-                    (ele_dst = edbm_elem_find_nearest(C, &vc, BM_EDGE))))
+                    (ele_dst = edbm_elem_find_nearest(&eval_ctx, &vc, BM_EDGE))))
                {
                        ele_src = ele_dst;
                        track_active = false;
index 97ae8ae166d1639ec9d5b9adf76a65268b3d8583..7fe4e58d2e0a72d645068c2383a7c34496065ff1 100644 (file)
@@ -68,6 +68,8 @@
 
 #include "bmesh_tools.h"
 
+#include "DEG_depsgraph.h"
+
 #include "mesh_intern.h"  /* own include */
 
 /* use bmesh operator flags for a few operators */
@@ -194,7 +196,9 @@ static BLI_bitmap *edbm_backbuf_alloc(const int size)
 
 /* reads rect, and builds selection array for quick lookup */
 /* returns if all is OK */
-bool EDBM_backbuf_border_init(const bContext *C, ViewContext *vc, short xmin, short ymin, short xmax, short ymax)
+bool EDBM_backbuf_border_init(
+        const struct EvaluationContext *eval_ctx, ViewContext *vc, short xmin,
+        short ymin, short xmax, short ymax)
 {
        struct ImBuf *buf;
        unsigned int *dr;
@@ -204,7 +208,7 @@ bool EDBM_backbuf_border_init(const bContext *C, ViewContext *vc, short xmin, sh
                return false;
        }
        
-       buf = ED_view3d_backbuf_read(C, vc, xmin, ymin, xmax, ymax);
+       buf = ED_view3d_backbuf_read(eval_ctx, vc, xmin, ymin, xmax, ymax);
        if ((buf == NULL) || (bm_vertoffs == 0)) {
                return false;
        }
@@ -267,7 +271,7 @@ static void edbm_mask_lasso_px_cb(int x, int x_end, int y, void *user_data)
  * - grab again and compare
  * returns 'OK' 
  */
-bool EDBM_backbuf_border_mask_init(const bContext *C, ViewContext *vc, const int mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax)
+bool EDBM_backbuf_border_mask_init(const struct EvaluationContext *eval_ctx, ViewContext *vc, const int mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax)
 {
        unsigned int *dr, *dr_mask, *dr_mask_arr;
        struct ImBuf *buf;
@@ -284,7 +288,7 @@ bool EDBM_backbuf_border_mask_init(const bContext *C, ViewContext *vc, const int
                return false;
        }
 
-       buf = ED_view3d_backbuf_read(C, vc, xmin, ymin, xmax, ymax);
+       buf = ED_view3d_backbuf_read(eval_ctx, vc, xmin, ymin, xmax, ymax);
        if ((buf == NULL) || (bm_vertoffs == 0)) {
                return false;
        }
@@ -317,7 +321,9 @@ bool EDBM_backbuf_border_mask_init(const bContext *C, ViewContext *vc, const int
 }
 
 /* circle shaped sample area */
-bool EDBM_backbuf_circle_init(const bContext *C, ViewContext *vc, short xs, short ys, short rads)
+bool EDBM_backbuf_circle_init(
+        const struct EvaluationContext *eval_ctx, ViewContext *vc,
+        short xs, short ys, short rads)
 {
        struct ImBuf *buf;
        unsigned int *dr;
@@ -336,7 +342,7 @@ bool EDBM_backbuf_circle_init(const bContext *C, ViewContext *vc, short xs, shor
 
        xmin = xs - rads; xmax = xs + rads;
        ymin = ys - rads; ymax = ys + rads;
-       buf = ED_view3d_backbuf_read(C, vc, xmin, ymin, xmax, ymax);
+       buf = ED_view3d_backbuf_read(eval_ctx, vc, xmin, ymin, xmax, ymax);
        if ((buf == NULL) || (bm_vertoffs == 0)) {
                return false;
        }
@@ -435,7 +441,7 @@ static void findnearestvert__doClosest(void *userData, BMVert *eve, const float
  * \param use_cycle Cycle over elements within #FIND_NEAR_CYCLE_THRESHOLD_MIN in order of index.
  */
 BMVert *EDBM_vert_find_nearest_ex(
-        const bContext *C, ViewContext *vc, float *r_dist,
+        const struct EvaluationContext *eval_ctx, ViewContext *vc, float *r_dist,
         const bool use_select_bias, bool use_cycle)
 {
        BMesh *bm = vc->em->bm;
@@ -447,10 +453,10 @@ BMVert *EDBM_vert_find_nearest_ex(
                BMVert *eve;
                
                /* No afterqueue (yet), so we check it now, otherwise the bm_xxxofs indices are bad. */
-               ED_view3d_backbuf_validate(C, vc);
+               ED_view3d_backbuf_validate(eval_ctx, vc);
 
                index = ED_view3d_backbuf_sample_rect(
-                       C, vc, vc->mval, dist_px, bm_wireoffs, 0xFFFFFF, &dist_test);
+                       eval_ctx, vc, vc->mval, dist_px, bm_wireoffs, 0xFFFFFF, &dist_test);
                eve = index ? BM_vert_at_index_find_or_table(bm, index - 1) : NULL;
                
                if (eve) {
@@ -485,7 +491,7 @@ BMVert *EDBM_vert_find_nearest_ex(
                data.cycle_index_prev = prev_select_index;
 
                ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d);
-               mesh_foreachScreenVert(C, vc, findnearestvert__doClosest, &data, clip_flag);
+               mesh_foreachScreenVert(eval_ctx, vc, findnearestvert__doClosest, &data, clip_flag);
 
                hit = (data.use_cycle && data.hit_cycle.vert) ? &data.hit_cycle : &data.hit;
                *r_dist = hit->dist;
@@ -497,9 +503,9 @@ BMVert *EDBM_vert_find_nearest_ex(
        }
 }
 
-BMVert *EDBM_vert_find_nearest(const bContext *C, ViewContext *vc, float *r_dist)
+BMVert *EDBM_vert_find_nearest(const struct EvaluationContext *eval_ctx, ViewContext *vc, float *r_dist)
 {
-       return EDBM_vert_find_nearest_ex(C, vc, r_dist, false, false);
+       return EDBM_vert_find_nearest_ex(eval_ctx, vc, r_dist, false, false);
 }
 
 /* find the distance to the edge we already have */
@@ -621,7 +627,7 @@ static void find_nearest_edge__doClosest(
 }
 
 BMEdge *EDBM_edge_find_nearest_ex(
-        const bContext *C, ViewContext *vc, float *r_dist,
+        const struct EvaluationContext *eval_ctx, ViewContext *vc, float *r_dist,
         float *r_dist_center,
         const bool use_select_bias, const bool use_cycle,
         BMEdge **r_eed_zbuf)
@@ -635,9 +641,9 @@ BMEdge *EDBM_edge_find_nearest_ex(
                BMEdge *eed;
 
                /* No afterqueue (yet), so we check it now, otherwise the bm_xxxofs indices are bad. */
-               ED_view3d_backbuf_validate(C, vc);
+               ED_view3d_backbuf_validate(eval_ctx, vc);
 
-               index = ED_view3d_backbuf_sample_rect(C, vc, vc->mval, dist_px, bm_solidoffs, bm_wireoffs, &dist_test);
+               index = ED_view3d_backbuf_sample_rect(eval_ctx, vc, vc->mval, dist_px, bm_solidoffs, bm_wireoffs, &dist_test);
                eed = index ? BM_edge_at_index_find_or_table(bm, index - 1) : NULL;
 
                if (r_eed_zbuf) {
@@ -655,7 +661,7 @@ BMEdge *EDBM_edge_find_nearest_ex(
 
                        ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d);
 
-                       mesh_foreachScreenEdge(C, vc, find_nearest_edge_center__doZBuf, &data, V3D_PROJ_TEST_CLIP_DEFAULT);
+                       mesh_foreachScreenEdge(eval_ctx, vc, find_nearest_edge_center__doZBuf, &data, V3D_PROJ_TEST_CLIP_DEFAULT);
 
                        *r_dist_center = data.dist;
                }
@@ -695,7 +701,7 @@ BMEdge *EDBM_edge_find_nearest_ex(
                data.cycle_index_prev = prev_select_index;
 
                ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d);
-               mesh_foreachScreenEdge(C, vc, find_nearest_edge__doClosest, &data, clip_flag);
+               mesh_foreachScreenEdge(eval_ctx, vc, find_nearest_edge__doClosest, &data, clip_flag);
 
                hit = (data.use_cycle && data.hit_cycle.edge) ? &data.hit_cycle : &data.hit;
                *r_dist = hit->dist;
@@ -711,9 +717,9 @@ BMEdge *EDBM_edge_find_nearest_ex(
 }
 
 BMEdge *EDBM_edge_find_nearest(
-        const bContext *C, ViewContext *vc, float *r_dist)
+        const struct EvaluationContext *eval_ctx, ViewContext *vc, float *r_dist)
 {
-       return EDBM_edge_find_nearest_ex(C, vc, r_dist, NULL, false, false, NULL);
+       return EDBM_edge_find_nearest_ex(eval_ctx, vc, r_dist, NULL, false, false, NULL);
 }
 
 /* find the distance to the face we already have */
@@ -787,7 +793,7 @@ static void findnearestface__doClosest(void *userData, BMFace *efa, const float
 
 
 BMFace *EDBM_face_find_nearest_ex(
-        const bContext *C, ViewContext *vc, float *r_dist,
+        const struct EvaluationContext *eval_ctx, ViewContext *vc, float *r_dist,
         float *r_dist_center,
         const bool use_select_bias, const bool use_cycle,
         BMFace **r_efa_zbuf)
@@ -799,9 +805,9 @@ BMFace *EDBM_face_find_nearest_ex(
                unsigned int index;
                BMFace *efa;
 
-               ED_view3d_backbuf_validate(C, vc);
+               ED_view3d_backbuf_validate(eval_ctx, vc);
 
-               index = ED_view3d_backbuf_sample(C, vc, vc->mval[0], vc->mval[1]);
+               index = ED_view3d_backbuf_sample(eval_ctx, vc, vc->mval[0], vc->mval[1]);
                efa = index ? BM_face_at_index_find_or_table(bm, index - 1) : NULL;
                
                if (r_efa_zbuf) {
@@ -819,7 +825,7 @@ BMFace *EDBM_face_find_nearest_ex(
 
                        ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d);
 
-                       mesh_foreachScreenFace(C, vc, find_nearest_face_center__doZBuf, &data, V3D_PROJ_TEST_CLIP_DEFAULT);
+                       mesh_foreachScreenFace(eval_ctx, vc, find_nearest_face_center__doZBuf, &data, V3D_PROJ_TEST_CLIP_DEFAULT);
 
                        *r_dist_center = data.dist;
                }
@@ -857,7 +863,7 @@ BMFace *EDBM_face_find_nearest_ex(
                data.cycle_index_prev = prev_select_index;
 
                ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d);
-               mesh_foreachScreenFace(C, vc, findnearestface__doClosest, &data, clip_flag);
+               mesh_foreachScreenFace(eval_ctx, vc, findnearestface__doClosest, &data, clip_flag);
 
                hit = (data.use_cycle && data.hit_cycle.face) ? &data.hit_cycle : &data.hit;
                *r_dist = hit->dist;
@@ -872,9 +878,9 @@ BMFace *EDBM_face_find_nearest_ex(
        }
 }
 
-BMFace *EDBM_face_find_nearest(const bContext *C, ViewContext *vc, float *r_dist)
+BMFace *EDBM_face_find_nearest(const struct EvaluationContext *eval_ctx, ViewContext *vc, float *r_dist)
 {
-       return EDBM_face_find_nearest_ex(C, vc, r_dist, NULL, false, false, NULL);
+       return EDBM_face_find_nearest_ex(eval_ctx, vc, r_dist, NULL, false, false, NULL);
 }
 
 #undef FIND_NEAR_SELECT_BIAS
@@ -886,7 +892,9 @@ BMFace *EDBM_face_find_nearest(const bContext *C, ViewContext *vc, float *r_dist
  * selected vertices and edges get disadvantage
  * return 1 if found one
  */
-static int unified_findnearest(const bContext *C, ViewContext *vc, BMVert **r_eve, BMEdge **r_eed, BMFace **r_efa)
+static int unified_findnearest(
+        const struct EvaluationContext *eval_ctx, ViewContext *vc,
+        BMVert **r_eve, BMEdge **r_eed, BMFace **r_efa)
 {
        BMEditMesh *em = vc->em;
        static short mval_prev[2] = {-1, -1};
@@ -905,12 +913,12 @@ static int unified_findnearest(const bContext *C, ViewContext *vc, BMVert **r_ev
 
 
        /* no afterqueue (yet), so we check it now, otherwise the em_xxxofs indices are bad */
-       ED_view3d_backbuf_validate(C, vc);
+       ED_view3d_backbuf_validate(eval_ctx, vc);
 
        if ((dist > 0.0f) && em->selectmode & SCE_SELECT_FACE) {
                float dist_center = 0.0f;
                float *dist_center_p = (em->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_VERTEX)) ? &dist_center : NULL;
-               efa = EDBM_face_find_nearest_ex(C, vc, &dist, dist_center_p, true, use_cycle, &efa_zbuf);
+               efa = EDBM_face_find_nearest_ex(eval_ctx, vc, &dist, dist_center_p, true, use_cycle, &efa_zbuf);
                if (efa && dist_center_p) {
                        dist = min_ff(dist_margin, dist_center);
                }
@@ -919,14 +927,14 @@ static int unified_findnearest(const bContext *C, ViewContext *vc, BMVert **r_ev
        if ((dist > 0.0f) && (em->selectmode & SCE_SELECT_EDGE)) {
                float dist_center = 0.0f;
                float *dist_center_p = (em->selectmode & SCE_SELECT_VERTEX) ? &dist_center : NULL;
-               eed = EDBM_edge_find_nearest_ex(C, vc, &dist, dist_center_p, true, use_cycle, &eed_zbuf);
+               eed = EDBM_edge_find_nearest_ex(eval_ctx, vc, &dist, dist_center_p, true, use_cycle, &eed_zbuf);
                if (eed && dist_center_p) {
                        dist = min_ff(dist_margin, dist_center);
                }
        }
 
        if ((dist > 0.0f) && em->selectmode & SCE_SELECT_VERTEX) {
-               eve = EDBM_vert_find_nearest_ex(C, vc, &dist, true, use_cycle);
+               eve = EDBM_vert_find_nearest_ex(eval_ctx, vc, &dist, true, use_cycle);
        }
 
        /* return only one of 3 pointers, for frontbuffer redraws */
@@ -1559,6 +1567,7 @@ static void mouse_mesh_loop_edge(BMEditMesh *em, BMEdge *eed, bool select, bool
 
 static bool mouse_mesh_loop(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle, bool ring)
 {
+       EvaluationContext eval_ctx;
        ViewContext vc;
        BMEditMesh *em;
        BMEdge *eed;
@@ -1568,15 +1577,16 @@ static bool mouse_mesh_loop(bContext *C, const int mval[2], bool extend, bool de
        float dist = ED_view3d_select_dist_px() * 0.6666f;
        float mvalf[2];
 
+       CTX_data_eval_ctx(C, &eval_ctx);
        em_setup_viewcontext(C, &vc);
        mvalf[0] = (float)(vc.mval[0] = mval[0]);
        mvalf[1] = (float)(vc.mval[1] = mval[1]);
        em = vc.em;
 
        /* no afterqueue (yet), so we check it now, otherwise the bm_xxxofs indices are bad */
-       ED_view3d_backbuf_validate(C, &vc);
+       ED_view3d_backbuf_validate(&eval_ctx, &vc);
 
-       eed = EDBM_edge_find_nearest_ex(C, &vc, &dist, NULL, true, true, NULL);
+       eed = EDBM_edge_find_nearest_ex(&eval_ctx, &vc, &dist, NULL, true, true, NULL);
        if (eed == NULL) {
                return false;
        }
@@ -1819,17 +1829,19 @@ void MESH_OT_select_interior_faces(wmOperatorType *ot)
 /* gets called via generic mouse select operator */
 bool EDBM_select_pick(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
 {
+       EvaluationContext eval_ctx;
        ViewContext vc;
        BMVert *eve = NULL;
        BMEdge *eed = NULL;
        BMFace *efa = NULL;
 
        /* setup view context for argument to callbacks */
+       CTX_data_eval_ctx(C, &eval_ctx);
        em_setup_viewcontext(C, &vc);
        vc.mval[0] = mval[0];
        vc.mval[1] = mval[1];
 
-       if (unified_findnearest(C, &vc, &eve, &eed, &efa)) {
+       if (unified_findnearest(&eval_ctx, &vc, &eve, &eed, &efa)) {
 
                /* Deselect everything */
                if (extend == false && deselect == false && toggle == false)
@@ -2793,6 +2805,7 @@ static void edbm_select_linked_pick_ex(BMEditMesh *em, BMElem *ele, bool sel, in
 static int edbm_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
 {
        Object *obedit = CTX_data_edit_object(C);
+       EvaluationContext eval_ctx;
        ViewContext vc;
        BMEditMesh *em;
        BMesh *bm;
@@ -2810,6 +2823,7 @@ static int edbm_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmE
        view3d_operator_needs_opengl(C);
 
        /* setup view context for argument to callbacks */
+       CTX_data_eval_ctx(C, &eval_ctx);
        em_setup_viewcontext(C, &vc);
        em = vc.em;
        bm = em->bm;
@@ -2822,7 +2836,7 @@ static int edbm_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmE
        vc.mval[1] = event->mval[1];
 
        /* return warning! */
-       if (unified_findnearest(C, &vc, &eve, &eed, &efa) == 0) {
+       if (unified_findnearest(&eval_ctx, &vc, &eve, &eed, &efa) == 0) {
                WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit);
 
                return OPERATOR_CANCELLED;
index 7ec8e42e6df70919a2a203bddf8418b7e40b7934..8fddf2551b8db1dc1ef5818c65b8a2df4ee0c1e0 100644 (file)
@@ -88,6 +88,7 @@ static void join_mesh_single(
         Material **matar, int *matmap, int totcol,
         int *vertofs, int *edgeofs, int *loopofs, int *polyofs)
 {
+       EvaluationContext eval_ctx;
        int a, b;
 
        Mesh *me = base_src->object->data;
@@ -95,7 +96,6 @@ static void join_mesh_single(
        MEdge *medge = *medge_pp;
        MLoop *mloop = *mloop_pp;
        MPoly *mpoly = *mpoly_pp;
-       EvaluationContext eval_ctx;
 
        CTX_data_eval_ctx(C, &eval_ctx);
 
@@ -1106,6 +1106,7 @@ int *mesh_get_x_mirror_faces(Object *ob, BMEditMesh *em, DerivedMesh *dm)
  */
 bool ED_mesh_pick_face(bContext *C, Object *ob, const int mval[2], unsigned int *index, int size)
 {
+       EvaluationContext eval_ctx;
        ViewContext vc;
        Mesh *me = ob->data;
 
@@ -1114,6 +1115,7 @@ bool ED_mesh_pick_face(bContext *C, Object *ob, const int mval[2], unsigned int
        if (!me || me->totpoly == 0)
                return false;
 
+       CTX_data_eval_ctx(C, &eval_ctx);
        view3d_set_viewcontext(C, &vc);
 
        if (size) {
@@ -1121,11 +1123,11 @@ bool ED_mesh_pick_face(bContext *C, Object *ob, const int mval[2], unsigned int
                 * on an edge in the backbuf, we can still select a face */
 
                float dummy_dist;
-               *index = ED_view3d_backbuf_sample_rect(C, &vc, mval, size, 1, me->totpoly + 1, &dummy_dist);
+               *index = ED_view3d_backbuf_sample_rect(&eval_ctx, &vc, mval, size, 1, me->totpoly + 1, &dummy_dist);
        }
        else {
                /* sample only on the exact position */
-               *index = ED_view3d_backbuf_sample(C, &vc, mval[0], mval[1]);
+               *index = ED_view3d_backbuf_sample(&eval_ctx, &vc, mval[0], mval[1]);
        }
 
        if ((*index) == 0 || (*index) > (unsigned int)me->totpoly)
@@ -1293,11 +1295,11 @@ bool ED_mesh_pick_vert(bContext *C, Object *ob, const int mval[2], unsigned int
                         * on an face in the backbuf, we can still select a vert */
 
                        float dummy_dist;
-                       *index = ED_view3d_backbuf_sample_rect(C, &vc, mval, size, 1, me->totvert + 1, &dummy_dist);
+                       *index = ED_view3d_backbuf_sample_rect(&eval_ctx, &vc, mval, size, 1, me->totvert + 1, &dummy_dist);
                }
                else {
                        /* sample only on the exact position */
-                       *index = ED_view3d_backbuf_sample(C, &vc, mval[0], mval[1]);
+                       *index = ED_view3d_backbuf_sample(&eval_ctx, &vc, mval[0], mval[1]);
                }
 
                if ((*index) == 0 || (*index) > (unsigned int)me->totvert)
index f8d30f4c8f363dbdbb422f24737eb12f2ead8e21..47d354ac72a8ab509e5556e992e4b82eaf74bdb0 100644 (file)
@@ -584,6 +584,7 @@ bool ED_mball_select_pick(bContext *C, const int mval[2], bool extend, bool dese
 {
        static MetaElem *startelem = NULL;
        Object *obedit = CTX_data_edit_object(C);
+       EvaluationContext eval_ctx;
        ViewContext vc;
        MetaBall *mb = (MetaBall *)obedit->data;
        MetaElem *ml, *ml_act = NULL;
@@ -591,11 +592,12 @@ bool ED_mball_select_pick(bContext *C, const int mval[2], bool extend, bool dese
        unsigned int buffer[MAXPICKBUF];
        rcti rect;
 
+       CTX_data_eval_ctx(C, &eval_ctx);
        view3d_set_viewcontext(C, &vc);
 
        BLI_rcti_init_pt_radius(&rect, mval, 12);
 
-       hits = view3d_opengl_select(C, &vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_NEAREST);
+       hits = view3d_opengl_select(&eval_ctx, &vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_NEAREST);
 
        /* does startelem exist? */
        ml = mb->editelems->first;
index 32059759fb9999b0fa8b3e07def8ec813c17b235..1baa1926bd2495860750036889babf9e84d0491f 100644 (file)
@@ -1277,7 +1277,11 @@ static int object_transform_axis_target_invoke(bContext *C, wmOperator *op, cons
                return OPERATOR_PASS_THROUGH;
        }
 
-       ED_view3d_autodist_init(C, vc.depsgraph, vc.ar, vc.v3d, 0);
+       EvaluationContext eval_ctx;
+
+       CTX_data_eval_ctx(C, &eval_ctx);
+
+       ED_view3d_autodist_init(&eval_ctx, vc.depsgraph, vc.ar, vc.v3d, 0);
 
        if (vc.rv3d->depths != NULL) {
                vc.rv3d->depths->damaged = true;
index 1838c0fba5f6a48eef63b5d6e871968914850e45..171c5f4ed3094416ebe66553a7d96760723c6c6d 100644 (file)
@@ -86,7 +86,9 @@
 
 #include "physics_intern.h"
 
-void PE_create_particle_edit(const bContext *C, Scene *scene, SceneLayer *sl, Object *ob, PointCache *cache, ParticleSystem *psys);
+void PE_create_particle_edit(
+        const EvaluationContext *eval_ctx, Scene *scene, SceneLayer *sl, Object *ob,
+        PointCache *cache, ParticleSystem *psys);
 void PTCacheUndo_clear(PTCacheEdit *edit);
 void recalc_lengths(PTCacheEdit *edit);
 void recalc_emitter_field(Object *ob, ParticleSystem *psys);
@@ -216,7 +218,8 @@ static float pe_brush_size_get(const Scene *UNUSED(scene), ParticleBrushData *br
  *
  * note: this function runs on poll, therefor it can runs many times a second
  * keep it fast! */
-static PTCacheEdit *pe_get_current(const bContext *C, Scene *scene, SceneLayer *sl, Object *ob, int create)
+static PTCacheEdit *pe_get_current(
+        const EvaluationContext *eval_ctx, Scene *scene, SceneLayer *sl, Object *ob, int create)
 {
        ParticleEditSettings *pset= PE_settings(scene);
        PTCacheEdit *edit = NULL;
@@ -256,18 +259,18 @@ static PTCacheEdit *pe_get_current(const bContext *C, Scene *scene, SceneLayer *
                                if (psys->part && psys->part->type == PART_HAIR) {
                                        if (psys->flag & PSYS_HAIR_DYNAMICS && psys->pointcache->flag & PTCACHE_BAKED) {
                                                if (create && !psys->pointcache->edit)
-                                                       PE_create_particle_edit(C, scene, sl, ob, pid->cache, NULL);
+                                                       PE_create_particle_edit(eval_ctx, scene, sl, ob, pid->cache, NULL);
                                                edit = pid->cache->edit;
                                        }
                                        else {
                                                if (create && !psys->edit && psys->flag & PSYS_HAIR_DONE)
-                                                       PE_create_particle_edit(C, scene, sl, ob, NULL, psys);
+                                                       PE_create_particle_edit(eval_ctx, scene, sl, ob, NULL, psys);
                                                edit = psys->edit;
                                        }
                                }
                                else {
                                        if (create && pid->cache->flag & PTCACHE_BAKED && !pid->cache->edit)
-                                               PE_create_particle_edit(C, scene, sl, ob, pid->cache, psys);
+                                               PE_create_particle_edit(eval_ctx, scene, sl, ob, pid->cache, psys);
                                        edit = pid->cache->edit;
                                }
 
@@ -278,7 +281,7 @@ static PTCacheEdit *pe_get_current(const bContext *C, Scene *scene, SceneLayer *
                        if (create && pid->cache->flag & PTCACHE_BAKED && !pid->cache->edit) {
                                pset->flag |= PE_FADE_TIME;
                                // NICE TO HAVE but doesn't work: pset->brushtype = PE_BRUSH_COMB;
-                               PE_create_particle_edit(C, scene, sl, ob, pid->cache, NULL);
+                               PE_create_particle_edit(eval_ctx, scene, sl, ob, pid->cache, NULL);
                        }
                        edit = pid->cache->edit;
                        break;
@@ -287,7 +290,7 @@ static PTCacheEdit *pe_get_current(const bContext *C, Scene *scene, SceneLayer *
                        if (create && pid->cache->flag & PTCACHE_BAKED && !pid->cache->edit) {
                                pset->flag |= PE_FADE_TIME;
                                // NICE TO HAVE but doesn't work: pset->brushtype = PE_BRUSH_COMB;
-                               PE_create_particle_edit(C, scene, sl, ob, pid->cache, NULL);
+                               PE_create_particle_edit(eval_ctx, scene, sl, ob, pid->cache, NULL);
                        }
                        edit = pid->cache->edit;
                        break;
@@ -307,15 +310,16 @@ PTCacheEdit *PE_get_current(Scene *scene, SceneLayer *sl, Object *ob)
        return pe_get_current(NULL, scene, sl, ob, 0);
 }
 
-PTCacheEdit *PE_create_current(const bContext *C, Scene *scene, Object *ob)
+PTCacheEdit *PE_create_current(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
-       return pe_get_current(C, scene, NULL, ob, 1);
+       return pe_get_current(eval_ctx, scene, NULL, ob, 1);
 }
 
-void PE_current_changed(const bContext *C, Scene *scene, Object *ob)
+void PE_current_changed(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
-       if (ob->mode == OB_MODE_PARTICLE_EDIT)
-               PE_create_current(C, scene, ob);
+       if (ob->mode == OB_MODE_PARTICLE_EDIT) {
+               PE_create_current(eval_ctx, scene, ob);
+       }
 }
 
 void PE_hide_keys_time(Scene *scene, PTCacheEdit *edit, float cfra)
@@ -408,10 +412,13 @@ static void PE_set_view3d_data(bContext *C, PEData *data)
 
        if (V3D_IS_ZBUF(data->vc.v3d)) {
                if (data->vc.v3d->flag & V3D_INVALID_BACKBUF) {
+                       EvaluationContext eval_ctx;
+                       CTX_data_eval_ctx(C, &eval_ctx);
+
                        /* needed or else the draw matrix can be incorrect */
                        view3d_operator_needs_opengl(C);
 
-                       ED_view3d_backbuf_validate(C, &data->vc);
+                       ED_view3d_backbuf_validate(&eval_ctx, &data->vc);
                        /* we may need to force an update here by setting the rv3d as dirty
                         * for now it seems ok, but take care!:
                         * rv3d->depths->dirty = 1; */
@@ -1266,20 +1273,17 @@ static void update_velocities(PTCacheEdit *edit)
        }
 }
 
-void PE_update_object(const bContext *C, Scene *scene, SceneLayer *sl, Object *ob, int useflag)
+void PE_update_object(const EvaluationContext *eval_ctx, Scene *scene, SceneLayer *sl, Object *ob, int useflag)
 {
        /* use this to do partial particle updates, not usable when adding or
         * removing, then a full redo is necessary and calling this may crash */
        ParticleEditSettings *pset= PE_settings(scene);
        PTCacheEdit *edit = PE_get_current(scene, sl, ob);
-       EvaluationContext eval_ctx;
        POINT_P;
 
        if (!edit)
                return;
 
-       CTX_data_eval_ctx(C, &eval_ctx);
-
        /* flag all particles to be updated if not using flag */
        if (!useflag)
                LOOP_POINTS {
@@ -1299,7 +1303,7 @@ void PE_update_object(const bContext *C, Scene *scene, SceneLayer *sl, Object *o
        PE_hide_keys_time(scene, edit, CFRA);
 
        /* regenerate path caches */
-       psys_cache_edit_paths(&eval_ctx, scene, ob, edit, CFRA, G.is_rendering);
+       psys_cache_edit_paths(eval_ctx, scene, ob, edit, CFRA, G.is_rendering);
 
        /* disable update flag */
        LOOP_POINTS {
@@ -2200,6 +2204,9 @@ static int rekey_exec(bContext *C, wmOperator *op)
 {
        PEData data;
 
+       EvaluationContext eval_ctx;
+       CTX_data_eval_ctx(C, &eval_ctx);
+
        PE_set_data(C, &data);
 
        data.dval= 1.0f / (float)(data.totrekey-1);
@@ -2208,7 +2215,7 @@ static int rekey_exec(bContext *C, wmOperator *op)
        foreach_selected_point(&data, rekey_particle);
        
        recalc_lengths(data.edit);
-       PE_update_object(C, data.scene, data.scene_layer, data.ob, 1);
+       PE_update_object(&eval_ctx, data.scene, data.scene_layer, data.ob, 1);
        WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob);
 
        return OPERATOR_FINISHED;
@@ -2542,11 +2549,14 @@ static int subdivide_exec(bContext *C, wmOperator *UNUSED(op))
 {
        PEData data;
 
+       EvaluationContext eval_ctx;
+       CTX_data_eval_ctx(C, &eval_ctx);
+
        PE_set_data(C, &data);
        foreach_point(&data, subdivide_particle);
        
        recalc_lengths(data.edit);
-       PE_update_object(C, data.scene, data.scene_layer, data.ob, 1);
+       PE_update_object(&eval_ctx, data.scene, data.scene_layer, data.ob, 1);
        WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob);
 
        return OPERATOR_FINISHED;
@@ -3821,6 +3831,9 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
        if (!PE_start_edit(edit))
                return;
 
+       EvaluationContext eval_ctx;
+       CTX_data_eval_ctx(C, &eval_ctx);
+
        RNA_float_get_array(itemptr, "mouse", mousef);
        mouse[0] = mousef[0];
        mouse[1] = mousef[1];
@@ -4002,8 +4015,9 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
                                psys_free_path_cache(NULL, edit);
                                DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
                        }
-                       else
-                               PE_update_object(C, scene, sl, ob, 1);
+                       else {
+                               PE_update_object(&eval_ctx, scene, sl, ob, 1);
+                       }
         &nb