[Bf-blender-cvs] [7c86782ff21] temp-workspace-object-mode-removal: Pass object mode to multires functions

Campbell Barton noreply at git.blender.org
Tue Feb 6 15:27:34 CET 2018


Commit: 7c86782ff21cf88f191da3eaf2807c3696374d20
Author: Campbell Barton
Date:   Wed Feb 7 01:13:30 2018 +1100
Branches: temp-workspace-object-mode-removal
https://developer.blender.org/rB7c86782ff21cf88f191da3eaf2807c3696374d20

Pass object mode to multires functions

===================================================================

M	source/blender/blenkernel/BKE_DerivedMesh.h
M	source/blender/blenkernel/BKE_multires.h
M	source/blender/blenkernel/BKE_object.h
M	source/blender/blenkernel/intern/cdderivedmesh.c
M	source/blender/blenkernel/intern/multires.c
M	source/blender/blenkernel/intern/object.c
M	source/blender/blenkernel/intern/paint.c
M	source/blender/blenkernel/intern/subsurf_ccg.c
M	source/blender/bmesh/intern/bmesh_mesh.c
M	source/blender/editors/object/object_bake.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/editors/object/object_relations.c
M	source/blender/editors/sculpt_paint/paint_hide.c
M	source/blender/editors/sculpt_paint/sculpt.c
M	source/blender/modifiers/intern/MOD_multires.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index f3d803a6394..c3cea6c883c 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -100,6 +100,8 @@ struct GPUDrawObject;
 struct PBVH;
 struct EvaluationContext;
 
+#include "DNA_object_enums.h"
+
 /* number of sub-elements each mesh element has (for interpolation) */
 #define SUB_ELEMS_VERT 0
 #define SUB_ELEMS_EDGE 2
@@ -381,7 +383,7 @@ struct DerivedMesh {
 
 	/** Get the BVH used for paint modes
 	 */
-	struct PBVH *(*getPBVH)(const struct EvaluationContext *eval_ctx, struct Object *ob, DerivedMesh *dm);
+	struct PBVH *(*getPBVH)(struct Object *ob, DerivedMesh *dm, eObjectMode object_mode);
 
 	/* Drawing Operations */
 
diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h
index e27a0f919ff..22933a093ed 100644
--- a/source/blender/blenkernel/BKE_multires.h
+++ b/source/blender/blenkernel/BKE_multires.h
@@ -48,21 +48,21 @@ struct MVert;
 struct MPoly;
 struct MLoopTri;
 
+#include "DNA_object_enums.h"
+
 /* Delete mesh mdisps and grid paint masks */
 void multires_customdata_delete(struct Mesh *me);
 
-void multires_set_tot_level(
-        const struct EvaluationContext *eval_ctx, struct Object *ob,
-        struct MultiresModifierData *mmd, int lvl);
+void multires_set_tot_level(struct MultiresModifierData *mmd, int lvl, eObjectMode object_mode);
 
 void multires_mark_as_modified(struct Object *ob, enum MultiresModifiedFlags flags);
 
 void multires_force_update(struct Object *ob);
-void multires_force_render_update(const struct EvaluationContext *eval_ctx, struct Object *ob);
+void multires_force_render_update(struct Object *ob, eObjectMode object_mode);
 void multires_force_external_reload(struct Object *ob);
 
 /* internal, only called in subsurf_ccg.c */
-void multires_modifier_update_mdisps(const struct EvaluationContext *eval_ctx, struct DerivedMesh *dm);
+void multires_modifier_update_mdisps(struct DerivedMesh *dm, eObjectMode object_mode);
 void multires_modifier_update_hidden(struct DerivedMesh *dm);
 
 void multiresModifier_set_levels_from_disps(struct MultiresModifierData *mmd, struct Object *ob);
@@ -75,11 +75,11 @@ typedef enum {
 } MultiresFlags;
 
 struct DerivedMesh *multires_make_derived_from_derived(
-        const struct EvaluationContext *eval_ctx,
         struct DerivedMesh *dm,
         struct MultiresModifierData *mmd,
         struct Object *ob,
-        MultiresFlags flags);
+        MultiresFlags flags,
+        eObjectMode object_mode);
 
 struct MultiresModifierData *find_multires_modifier_before(struct Scene *scene,
                                                            struct ModifierData *lastmd);
@@ -87,15 +87,14 @@ struct MultiresModifierData *get_multires_modifier(struct Scene *scene, struct O
 struct DerivedMesh *get_multires_dm(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
                                     struct Object *ob);
 void multiresModifier_del_levels(
-        const struct EvaluationContext *eval_ctx,
-        struct MultiresModifierData *, struct Object *, int direction);
+        struct MultiresModifierData *, struct Object *, int direction, eObjectMode object_mode);
 void multiresModifier_base_apply(
-        const struct EvaluationContext *eval_ctx, struct MultiresModifierData *mmd, struct Object *ob);
+        struct MultiresModifierData *mmd, struct Object *ob, eObjectMode object_mode);
 void multiresModifier_subdivide(
-        const struct EvaluationContext *eval_ctx, struct MultiresModifierData *mmd, struct Object *ob, int updateblock, int simple);
+        struct MultiresModifierData *mmd, struct Object *ob, int updateblock, int simple, eObjectMode object_mode);
 void multiresModifier_sync_levels_ex(
-        const struct EvaluationContext *eval_ctx,
-        struct Object *ob_dst, struct MultiresModifierData *mmd_src, struct MultiresModifierData *mmd_dst);
+        struct Object *ob_dst, struct MultiresModifierData *mmd_src, struct MultiresModifierData *mmd_dst,
+        eObjectMode object_mode);
 int multiresModifier_reshape(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
                              struct Object *dst, struct Object *src);
 int multiresModifier_reshapeFromDM(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
@@ -111,7 +110,7 @@ enum {
 	MULTIRES_SPACE_OBJECT,
 	MULTIRES_SPACE_ABSOLUTE
 };
-void multires_set_space(const struct EvaluationContext *eval_ctx, struct DerivedMesh *dm, struct Object *ob, int from, int to);
+void multires_set_space(struct DerivedMesh *dm, struct Object *ob, int from, int to, eObjectMode object_mode);
 
 /* Related to the old multires */
 void multires_free(struct Multires *mr);
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 913561d5dc4..f4983741071 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -75,8 +75,8 @@ void BKE_object_modifier_hook_reset(struct Object *ob, struct HookModifierData *
 bool BKE_object_support_modifier_type_check(struct Object *ob, int modifier_type);
 
 void BKE_object_link_modifiers(
-        const struct EvaluationContext *eval_ctx,
-        struct Object *ob_dst, const struct Object *ob_src);
+        struct Object *ob_dst, const struct Object *ob_src,
+        eObjectMode object_mode);
 void BKE_object_free_modifiers(struct Object *ob);
 
 void BKE_object_make_proxy(struct Object *ob, struct Object *target, struct Object *gob);
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 33224332b03..c4e9ace2d5d 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -263,7 +263,7 @@ static bool can_pbvh_draw(Object *ob, DerivedMesh *dm)
 }
 
 static PBVH *cdDM_getPBVH(
-        const EvaluationContext *UNUSED(eval_ctx), Object *ob, DerivedMesh *dm)
+        Object *ob, DerivedMesh *dm, eObjectMode UNUSED(object_mode))
 {
 	CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
 
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index c440ec81772..e7c36685c42 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -339,12 +339,12 @@ MultiresModifierData *get_multires_modifier(Scene *scene, Object *ob, bool use_f
 }
 
 static int multires_get_level(
-        const EvaluationContext *eval_ctx, MultiresModifierData *mmd,
-        bool render, bool ignore_simplify)
+        MultiresModifierData *mmd,
+        bool render, bool ignore_simplify, eObjectMode object_mode)
 {
 	if (render)
 		return (mmd->modifier.scene) ? get_render_subsurf_level(&mmd->modifier.scene->r, mmd->renderlvl, true) : mmd->renderlvl;
-	else if (eval_ctx->object_mode == OB_MODE_SCULPT)
+	else if (object_mode == OB_MODE_SCULPT)
 		return mmd->sculptlvl;
 	else if (ignore_simplify)
 		return mmd->lvl;
@@ -352,13 +352,13 @@ static int multires_get_level(
 		return (mmd->modifier.scene) ? get_render_subsurf_level(&mmd->modifier.scene->r, mmd->lvl, false) : mmd->lvl;
 }
 
-void multires_set_tot_level(
-        const EvaluationContext *eval_ctx, Object *UNUSED(ob), MultiresModifierData *mmd, int lvl)
+void multires_set_tot_level(MultiresModifierData *mmd, int lvl, eObjectMode object_mode)
 {
 	mmd->totlvl = lvl;
 
-	if (eval_ctx->object_mode != OB_MODE_SCULPT)
+	if (object_mode != OB_MODE_SCULPT) {
 		mmd->lvl = CLAMPIS(MAX2(mmd->lvl, lvl), 0, mmd->totlvl);
+	}
 
 	mmd->sculptlvl = CLAMPIS(MAX2(mmd->sculptlvl, lvl), 0, mmd->totlvl);
 	mmd->renderlvl = CLAMPIS(MAX2(mmd->renderlvl, lvl), 0, mmd->totlvl);
@@ -396,9 +396,9 @@ void multires_force_external_reload(Object *ob)
 	multires_force_update(ob);
 }
 
-void multires_force_render_update(const EvaluationContext *eval_ctx, Object *ob)
+void multires_force_render_update(Object *ob, eObjectMode object_mode)
 {
-	if (ob && (eval_ctx->object_mode & OB_MODE_SCULPT) && modifiers_findByType(ob, eModifierType_Multires))
+	if (ob && (object_mode & OB_MODE_SCULPT) && modifiers_findByType(ob, eModifierType_Multires))
 		multires_force_update(ob);
 }
 
@@ -438,7 +438,7 @@ int multiresModifier_reshapeFromDeformMod(const struct EvaluationContext *eval_c
 	int numVerts, result;
 	float (*deformedVerts)[3];
 
-	if (multires_get_level(eval_ctx, mmd, false, true) == 0)
+	if (multires_get_level(mmd, false, true, eval_ctx->object_mode) == 0)
 		return 0;
 
 	/* Create DerivedMesh for deformation modifier */
@@ -618,8 +618,7 @@ static void multires_grid_paint_mask_downsample(GridPaintMask *gpm, int level)
 	}
 }
 
-static void multires_del_higher(
-        const EvaluationContext *eval_ctx, MultiresModifierData *mmd, Object *ob, int lvl)
+static void multires_del_higher(MultiresModifierData *mmd, Object *ob, int lvl, eObjectMode object_mode)
 {
 	Mesh *me = (Mesh *)ob->data;
 	int levels = mmd->totlvl - lvl;
@@ -681,15 +680,14 @@ static void multires_del_higher(
 		}
 	}
 
-	multires_set_tot_level(eval_ctx, ob, mmd, lvl);
+	multires_set_tot_level(mmd, lvl, object_mode);
 }
 
 /* (direction = 1) for delete higher, (direction = 0) for lower (not implemented yet) */
-void multiresModifier_del_levels(
-        const EvaluationContext *eval_ctx, MultiresModifierData *mmd, Object *ob, int direction)
+void multiresModifier_del_levels(MultiresModifierData *mmd, Object *ob, int direction, eObjectMode object_mode)
 {
 	Mesh *me = BKE_mesh_from_object(ob);
-	int lvl = multires_get_level(eval_ctx, mmd, false, true);
+	int lvl = multires_get_level(mmd, false, true, object_mode);
 	int levels = mmd->totlvl - lvl;
 	MDisps *mdisps;
 
@@ -700,15 +698,14 @@ void multiresModifier_del_levels(
 	multires_force_update(ob);
 
 	if (mdisps && levels > 0 && direction == 1) {
-		multires_del_higher(eval_ctx, mmd, ob, lvl);
+		multires_del_higher(mmd, ob, lvl, object_mode);
 	}
 
-	multires_set_tot_level(eval_ctx, ob, mmd, lvl);
+	multires_set_tot_level(mmd, lvl, object_mode);
 }
 


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list