[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47694] trunk/blender/source/blender/ makesrna/intern/rna_modifier.c: Force multires update when changing subdivision type.

Nicholas Bishop nicholasbishop at gmail.com
Sun Jun 10 19:06:39 CEST 2012


Revision: 47694
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47694
Author:   nicholasbishop
Date:     2012-06-10 17:06:26 +0000 (Sun, 10 Jun 2012)
Log Message:
-----------
Force multires update when changing subdivision type.

Fixes bug [#31050] Changing multires subdivision algorithm can ruin mesh

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-06-10 16:37:22 UTC (rev 47693)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-06-10 17:06:26 UTC (rev 47694)
@@ -477,6 +477,15 @@
 	}
 }
 
+static void rna_MultiresModifier_type_set(PointerRNA *ptr, int value)
+{
+	Object *ob = (Object *)ptr->id.data;
+	MultiresModifierData *mmd = (MultiresModifierData *)ptr->data;
+
+	multires_force_update(ob);
+	mmd->simple = value;
+}
+
 static void rna_MultiresModifier_level_range(PointerRNA *ptr, int *min, int *max, int *softmin, int *softmax)
 {
 	MultiresModifierData *mmd = (MultiresModifierData *)ptr->data;
@@ -739,7 +748,7 @@
 
 #else
 
-static void rna_def_property_subdivision_common(StructRNA *srna, const char type[])
+static PropertyRNA *rna_def_property_subdivision_common(StructRNA *srna, const char type[])
 {
 	static EnumPropertyItem prop_subdivision_type_items[] = {
 		{0, "CATMULL_CLARK", 0, "Catmull-Clark", ""},
@@ -752,6 +761,8 @@
 	RNA_def_property_enum_items(prop, prop_subdivision_type_items);
 	RNA_def_property_ui_text(prop, "Subdivision Type", "Select type of subdivision algorithm");
 	RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+	return prop;
 }
 
 static void rna_def_modifier_subsurf(BlenderRNA *brna)
@@ -901,7 +912,8 @@
 	RNA_def_struct_sdna(srna, "MultiresModifierData");
 	RNA_def_struct_ui_icon(srna, ICON_MOD_MULTIRES);
 
-	rna_def_property_subdivision_common(srna, "simple");
+	prop = rna_def_property_subdivision_common(srna, "simple");
+	RNA_def_property_enum_funcs(prop, NULL, "rna_MultiresModifier_type_set", NULL);
 
 	prop = RNA_def_property(srna, "levels", PROP_INT, PROP_UNSIGNED);
 	RNA_def_property_int_sdna(prop, NULL, "lvl");




More information about the Bf-blender-cvs mailing list