[Bf-blender-cvs] [be1b32e4e49] master: Fix T59884: Rigidbody Calculate Mass Sets Mass to 0

Philipp Oeser noreply at git.blender.org
Thu Dec 27 15:11:51 CET 2018


Commit: be1b32e4e49e6f8b51aca193c8a2399af893008f
Author: Philipp Oeser
Date:   Thu Dec 27 09:58:19 2018 +0100
Branches: master
https://developer.blender.org/rBbe1b32e4e49e6f8b51aca193c8a2399af893008f

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

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

M	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",



More information about the Bf-blender-cvs mailing list