[Bf-blender-cvs] [33fc85efc70] temp-workspace-object-mode-removal: Avoid passing eval_ctx to modifier functions

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


Commit: 33fc85efc70c30b966cf7eb74ee75ee8c59c033f
Author: Campbell Barton
Date:   Wed Feb 7 01:29:57 2018 +1100
Branches: temp-workspace-object-mode-removal
https://developer.blender.org/rB33fc85efc70c30b966cf7eb74ee75ee8c59c033f

Avoid passing eval_ctx to modifier functions

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

M	source/blender/editors/include/ED_object.h
M	source/blender/editors/object/object_bake_api.c
M	source/blender/editors/object/object_edit.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/editors/object/object_relations.c
M	source/blender/makesrna/intern/rna_object.c
M	source/blender/makesrna/intern/rna_object_force.c

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

diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h
index f5047d8a338..94ee228f4f8 100644
--- a/source/blender/editors/include/ED_object.h
+++ b/source/blender/editors/include/ED_object.h
@@ -192,16 +192,16 @@ enum {
 };
 
 struct ModifierData *ED_object_modifier_add(
-        struct ReportList *reports, struct Main *bmain, const struct EvaluationContext *eval_ctx, struct Scene *scene,
-        struct Object *ob, const char *name, int type);
+        struct ReportList *reports, struct Main *bmain, struct Scene *scene,
+        struct Object *ob, eObjectMode object_mode, const char *name, int type);
 bool ED_object_modifier_remove(struct ReportList *reports, struct Main *bmain,
                                struct Object *ob, struct ModifierData *md);
 void ED_object_modifier_clear(struct Main *bmain, struct Object *ob);
 int ED_object_modifier_move_down(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
 int ED_object_modifier_move_up(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
 int ED_object_modifier_convert(
-        struct ReportList *reports, struct Main *bmain, const struct EvaluationContext *eval_ctx, struct Scene *scene,
-        struct ViewLayer *view_layer, struct Object *ob, struct ModifierData *md);
+        struct ReportList *reports, struct Main *bmain, struct Scene *scene,
+        struct ViewLayer *view_layer, struct Object *ob, eObjectMode object_mode, struct ModifierData *md);
 int ED_object_modifier_apply(struct ReportList *reports, const struct bContext *C, struct Scene *scene,
                              struct Object *ob, struct ModifierData *md, int mode);
 int ED_object_modifier_copy(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
@@ -227,8 +227,8 @@ const struct EnumPropertyItem *ED_object_vgroup_selection_itemf_helper(
         const unsigned int selection_mask);
 
 void ED_object_check_force_modifiers(
-        struct Main *bmain, const struct EvaluationContext *eval_ctx, struct Scene *scene,
-        struct Object *object);
+        struct Main *bmain, struct Scene *scene,
+        struct Object *object, eObjectMode object_mode);
 
 /* object_facemap_ops.c */
 void ED_object_facemap_face_add(struct Object *ob, struct bFaceMap *fmap, int facenum);
diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index f8c2f865daa..50922be76eb 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -853,7 +853,7 @@ static int bake(
 
 			/* triangulating so BVH returns the primitive_id that will be used for rendering */
 			highpoly[i].tri_mod = ED_object_modifier_add(
-			        reports, bmain, RE_GetEvalCtx(re), scene, highpoly[i].ob,
+			        reports, bmain, scene, highpoly[i].ob, OB_MODE_OBJECT,
 			        "TmpTriangulate", eModifierType_Triangulate);
 			tmd = (TriangulateModifierData *)highpoly[i].tri_mod;
 			tmd->quad_method = MOD_TRIANGULATE_QUAD_FIXED;
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index bc02f09ab35..4f775ffd96b 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -1002,7 +1002,7 @@ static void UNUSED_FUNCTION(copy_attr_menu) (Main *bmain, Scene *scene, ViewLaye
 
 /* ******************* force field toggle operator ***************** */
 
-void ED_object_check_force_modifiers(Main *bmain, const EvaluationContext *eval_ctx, Scene *scene, Object *object)
+void ED_object_check_force_modifiers(Main *bmain, Scene *scene, Object *object, eObjectMode object_mode)
 {
 	PartDeflect *pd = object->pd;
 	ModifierData *md = modifiers_findByType(object, eModifierType_Surface);
@@ -1011,7 +1011,7 @@ void ED_object_check_force_modifiers(Main *bmain, const EvaluationContext *eval_
 	if (!md) {
 		if (pd && (pd->shape == PFIELD_SHAPE_SURFACE) && !ELEM(pd->forcefield, 0, PFIELD_GUIDE, PFIELD_TEXTURE)) {
 			if (ELEM(object->type, OB_MESH, OB_SURF, OB_FONT, OB_CURVE)) {
-				ED_object_modifier_add(NULL, bmain, eval_ctx, scene, object, NULL, eModifierType_Surface);
+				ED_object_modifier_add(NULL, bmain, scene, object, object_mode, NULL, eModifierType_Surface);
 			}
 		}
 	}
@@ -1035,7 +1035,7 @@ static int forcefield_toggle_exec(bContext *C, wmOperator *UNUSED(op))
 	else
 		ob->pd->forcefield = 0;
 	
-	ED_object_check_force_modifiers(CTX_data_main(C), &eval_ctx, CTX_data_scene(C), ob);
+	ED_object_check_force_modifiers(CTX_data_main(C), CTX_data_scene(C), ob, eval_ctx.object_mode);
 	WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob);
 	WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob);
 
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 26aa59f526b..5f07a4e4c7d 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -97,8 +97,8 @@ static void modifier_skin_customdata_delete(struct Object *ob);
 
 ModifierData *ED_object_modifier_add(
         ReportList *reports,
-        Main *bmain, const EvaluationContext *eval_ctx, Scene *scene,
-        Object *ob, const char *name, int type)
+        Main *bmain, Scene *scene,
+        Object *ob, eObjectMode object_mode, const char *name, int type)
 {
 	ModifierData *md = NULL, *new_md = NULL;
 	const ModifierTypeInfo *mti = modifierType_getInfo(type);
@@ -165,7 +165,7 @@ ModifierData *ED_object_modifier_add(
 			/* set totlvl from existing MDISPS layer if object already had it */
 			multiresModifier_set_levels_from_disps((MultiresModifierData *)new_md, ob);
 
-			if (eval_ctx->object_mode & OB_MODE_SCULPT) {
+			if (object_mode & OB_MODE_SCULPT) {
 				/* ensure that grid paint mask layer is created */
 				BKE_sculpt_mask_layers_ensure(ob, (MultiresModifierData *)new_md);
 			}
@@ -425,8 +425,8 @@ int ED_object_modifier_move_down(ReportList *reports, Object *ob, ModifierData *
 }
 
 int ED_object_modifier_convert(
-        ReportList *UNUSED(reports), Main *bmain, const EvaluationContext *eval_ctx, Scene *scene,
-        ViewLayer *view_layer, Object *UNUSED(ob), ModifierData *md)
+        ReportList *UNUSED(reports), Main *bmain, Scene *scene,
+        ViewLayer *view_layer, Object *UNUSED(ob), eObjectMode object_mode, ModifierData *md)
 {
 	Object *obn;
 	ParticleSystem *psys;
@@ -440,7 +440,7 @@ int ED_object_modifier_convert(
 	int totpart = 0, totchild = 0;
 
 	if (md->type != eModifierType_ParticleSystem) return 0;
-	if (eval_ctx->object_mode & OB_MODE_PARTICLE_EDIT) return 0;
+	if (object_mode & OB_MODE_PARTICLE_EDIT) return 0;
 
 	psys = ((ParticleSystemModifierData *)md)->psys;
 	part = psys->part;
@@ -761,7 +761,7 @@ static int modifier_add_exec(bContext *C, wmOperator *op)
 	Object *ob = ED_object_active_context(C);
 	int type = RNA_enum_get(op->ptr, "type");
 
-	if (!ED_object_modifier_add(op->reports, bmain, &eval_ctx, scene, ob, NULL, type))
+	if (!ED_object_modifier_add(op->reports, bmain, scene, ob, eval_ctx.object_mode, NULL, type))
 		return OPERATOR_CANCELLED;
 
 	WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob);
@@ -1085,7 +1085,7 @@ static int modifier_convert_exec(bContext *C, wmOperator *op)
 	Object *ob = ED_object_active_context(C);
 	ModifierData *md = edit_modifier_property_get(op, ob, 0);
 
-	if (!md || !ED_object_modifier_convert(op->reports, bmain, &eval_ctx, scene, view_layer, ob, md)) {
+	if (!md || !ED_object_modifier_convert(op->reports, bmain, scene, view_layer, ob, eval_ctx.object_mode, md)) {
 		return OPERATOR_CANCELLED;
 	}
 
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index a1a1e512de8..d76019e9172 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -718,7 +718,7 @@ bool ED_object_parent_set(ReportList *reports, const bContext *C, Scene *scene,
 						case PAR_CURVE: /* curve deform */
 							if (modifiers_isDeformedByCurve(ob) != par) {
 								md = ED_object_modifier_add(
-								        reports, bmain, &eval_ctx, scene, ob, NULL, eModifierType_Curve);
+								        reports, bmain, scene, ob, eval_ctx.object_mode, NULL, eModifierType_Curve);
 								if (md) {
 									((CurveModifierData *)md)->object = par;
 								}
@@ -730,7 +730,7 @@ bool ED_object_parent_set(ReportList *reports, const bContext *C, Scene *scene,
 						case PAR_LATTICE: /* lattice deform */
 							if (modifiers_isDeformedByLattice(ob) != par) {
 								md = ED_object_modifier_add(
-								        reports, bmain, &eval_ctx, scene, ob, NULL, eModifierType_Lattice);
+								        reports, bmain, scene, ob, eval_ctx.object_mode, NULL, eModifierType_Lattice);
 								if (md) {
 									((LatticeModifierData *)md)->object = par;
 								}
@@ -739,7 +739,7 @@ bool ED_object_parent_set(ReportList *reports, const bContext *C, Scene *scene,
 						default: /* armature deform */
 							if (modifiers_isDeformedByArmature(ob) != par) {
 								md = ED_object_modifier_add(
-								        reports, bmain, &eval_ctx, scene, ob, NULL, eModifierType_Armature);
+								        reports, bmain, scene, ob, eval_ctx.object_mode, NULL, eModifierType_Armature);
 								if (md) {
 									((ArmatureModifierData *)md)->object = par;
 								}
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index 9784f8164d0..66585b188e6 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -1398,7 +1398,9 @@ static ModifierData *rna_Object_modifier_new(Object *object, bContext *C, Report
                                              const char *name, int type)
 {
 	Main *bmain = CTX_data_main(C);
-	return ED_object_modifier_add(reports, bmain, bmain->eval_ctx, CTX_data_scene(C), object, name, type);
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
+	return ED_object_modifier_add(reports, bmain, CTX_data_scene(C), object, eval_ctx.object_mode, name, type);
 }
 
 static void rna_Object_modifier_remove(Object *object, bContext *C, Repor

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list