[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