[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32900] trunk/blender/source/blender: Fix for [#24560] Cloth pinning breaks (when parenting?)
Janne Karhu
jhkarh at gmail.com
Sat Nov 6 23:03:42 CET 2010
Revision: 32900
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32900
Author: jhk
Date: 2010-11-06 23:03:42 +0100 (Sat, 06 Nov 2010)
Log Message:
-----------
Fix for [#24560] Cloth pinning breaks (when parenting?)
* Changing the pin group needs to redo the whole cloth object.
* Also, parent updates weren't flushed properly to pointcache in depsgraph.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/depsgraph.c
trunk/blender/source/blender/makesrna/intern/rna_cloth.c
Modified: trunk/blender/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/depsgraph.c 2010-11-06 21:42:27 UTC (rev 32899)
+++ trunk/blender/source/blender/blenkernel/intern/depsgraph.c 2010-11-06 22:03:42 UTC (rev 32900)
@@ -1858,7 +1858,7 @@
for(itA = node->child; itA; itA= itA->next) {
if(itA->node->type==ID_OB) {
if(itA->node->lasttime!=curtime) {
- ob= (Object*)(node->ob);
+ ob= (Object*)(itA->node->ob);
if(reset || (ob->recalc & OB_RECALC_ALL)) {
if(BKE_ptcache_object_reset(scene, ob, PTCACHE_RESET_DEPSGRAPH))
Modified: trunk/blender/source/blender/makesrna/intern/rna_cloth.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_cloth.c 2010-11-06 21:42:27 UTC (rev 32899)
+++ trunk/blender/source/blender/makesrna/intern/rna_cloth.c 2010-11-06 22:03:42 UTC (rev 32900)
@@ -52,6 +52,18 @@
WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob);
}
+static void rna_cloth_pinning_changed(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ ClothSimSettings *settings = (ClothSimSettings*)ptr->data;
+ ClothModifierData *clmd = (ClothModifierData*)modifiers_findByType(ob, eModifierType_Cloth);
+
+ cloth_free_modifier(clmd);
+
+ DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+ WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob);
+}
+
static void rna_cloth_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
@@ -256,7 +268,7 @@
prop= RNA_def_property(srna, "vertex_group_mass", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_ClothSettings_mass_vgroup_get", "rna_ClothSettings_mass_vgroup_length", "rna_ClothSettings_mass_vgroup_set");
RNA_def_property_ui_text(prop, "Mass Vertex Group", "Vertex Group for pinning of vertices");
- RNA_def_property_update(prop, 0, "rna_cloth_update");
+ RNA_def_property_update(prop, 0, "rna_cloth_pinning_changed");
prop= RNA_def_property(srna, "gravity", PROP_FLOAT, PROP_ACCELERATION);
RNA_def_property_array(prop, 3);
@@ -276,7 +288,7 @@
prop= RNA_def_property(srna, "use_pin_cloth", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", CLOTH_SIMSETTINGS_FLAG_GOAL);
RNA_def_property_ui_text(prop, "Pin Cloth", "Enable pinning of cloth vertices to other objects/positions");
- RNA_def_property_update(prop, 0, "rna_cloth_update");
+ RNA_def_property_update(prop, 0, "rna_cloth_pinning_changed");
prop= RNA_def_property(srna, "pin_stiffness", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "goalspring");
More information about the Bf-blender-cvs
mailing list