From be1b32e4e49e6f8b51aca193c8a2399af893008f Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Thu, 27 Dec 2018 09:58:19 +0100 Subject: Fix T59884: Rigidbody Calculate Mass Sets Mass to 0 rigidbody_get_mesh() needs an evaluated object Reviewers: sergey, brecht Maniphest Tasks: T59884 Differential Revision: https://developer.blender.org/D4125 --- source/blender/editors/physics/rigidbody_object.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'source/blender/editors/physics/rigidbody_object.c') diff --git a/source/blender/editors/physics/rigidbody_object.c b/source/blender/editors/physics/rigidbody_object.c index ff411d4bece..1c0ceed2455 100644 --- a/source/blender/editors/physics/rigidbody_object.c +++ b/source/blender/editors/physics/rigidbody_object.c @@ -51,6 +51,7 @@ #include "DEG_depsgraph.h" #include "DEG_depsgraph_build.h" +#include "DEG_depsgraph_query.h" #include "RNA_access.h" #include "RNA_define.h" @@ -490,6 +491,7 @@ static const EnumPropertyItem *rigidbody_materials_itemf(bContext *UNUSED(C), Po static int rigidbody_objects_calc_mass_exec(bContext *C, wmOperator *op) { + Depsgraph *depsgraph = CTX_data_depsgraph(C); int material = RNA_enum_get(op->ptr, "material"); float density; bool changed = false; @@ -520,7 +522,8 @@ static int rigidbody_objects_calc_mass_exec(bContext *C, wmOperator *op) /* mass is calculated from the approximate volume of the object, * and the density of the material we're simulating */ - BKE_rigidbody_calc_volume(ob, &volume); + Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob); + BKE_rigidbody_calc_volume(ob_eval, &volume); mass = volume * density; /* use RNA-system to change the property and perform all necessary changes */ @@ -561,7 +564,7 @@ void RIGIDBODY_OT_mass_calculate(wmOperatorType *ot) ot->poll = ED_operator_scene_editable; /* flags */ - ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_USE_EVAL_DATA; /* properties */ ot->prop = prop = RNA_def_enum(ot->srna, "material", -- cgit v1.2.3