[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34322] trunk/blender/source/blender: Todo item #19816: Wave modifier does not affect Curve Paths

Sergey Sharybin g.ulairi at gmail.com
Fri Jan 14 17:57:53 CET 2011


Revision: 34322
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34322
Author:   nazgul
Date:     2011-01-14 16:57:53 +0000 (Fri, 14 Jan 2011)
Log Message:
-----------
Todo item #19816: Wave modifier does not affect Curve Paths

Added new option for applyong modifiers on splines' points. This moves
tesselation point and path would be affected by modifiers which are applied on
splines' points.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/displist.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/makesdna/DNA_modifier_types.h
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c

Modified: trunk/blender/source/blender/blenkernel/intern/displist.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/displist.c	2011-01-14 16:49:43 UTC (rev 34321)
+++ trunk/blender/source/blender/blenkernel/intern/displist.c	2011-01-14 16:57:53 UTC (rev 34322)
@@ -1220,10 +1220,20 @@
 
 	preTesselatePoint = NULL;
 	for (; md; md=md->next) {
+		ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
 		if (!modifier_isEnabled(scene, md, required_mode)) continue;
+		if (mti->type == eModifierTypeType_Constructive) return preTesselatePoint;
 
 		if (ELEM3(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) {
-			preTesselatePoint  = md;
+			preTesselatePoint = md;
+
+			/* this modifiers are moving point of tesselation automatically
+			   (some of them even can't be applied on tesselated curve), set flag
+			   for incformation button in modifier's header */
+			md->mode |= eModifierMode_ApplyOnSpline;
+		} else if(md->mode&eModifierMode_ApplyOnSpline) {
+			preTesselatePoint = md;
 		}
 	}
 

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2011-01-14 16:49:43 UTC (rev 34321)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2011-01-14 16:57:53 UTC (rev 34322)
@@ -44,6 +44,7 @@
 #include "BKE_material.h"
 #include "BKE_texture.h"
 #include "BKE_report.h"
+#include "BKE_displist.h"
 
 #include "ED_screen.h"
 #include "ED_render.h"
@@ -738,6 +739,23 @@
 				uiButSetFlag(but, UI_BUT_DISABLED);
 			uiButSetFunc(but, modifiers_setOnCage, ob, md);
 		}
+
+		/* tesselation point for curve-typed objects */
+		if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) {
+			ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+			/* some modifiers could work with pre-tesselated curves only */
+			if (ELEM3(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) {
+				/* add disabled pre-tesselated button, so users could have
+				   message for this modifiers */
+				but = uiDefIconButBitI(block, TOG, eModifierMode_ApplyOnSpline, 0, ICON_SURFACE_DATA, 0, 0, 16, 20, &md->mode, 0.0, 0.0, 0.0, 0.0, "This modifier could be applied on splines' points only");
+				uiButSetFlag(but, UI_BUT_DISABLED);
+			} else if (mti->type != eModifierTypeType_Constructive) {
+				/* constructive modifiers tesselates curve before applying */
+				uiItemR(row, &ptr, "use_apply_on_spline", 0, "", ICON_NULL);
+			}
+		}
+
 		uiBlockEndAlign(block);
 		
 		/* Up/Down + Delete ........................... */

Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2011-01-14 16:49:43 UTC (rev 34321)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2011-01-14 16:57:53 UTC (rev 34322)
@@ -79,6 +79,7 @@
 	eModifierMode_OnCage = (1<<3),
 	eModifierMode_Expanded = (1<<4),
 	eModifierMode_Virtual = (1<<5),
+	eModifierMode_ApplyOnSpline = (1<<6),
 	eModifierMode_DisableTemporary = (1 << 31)
 } ModifierMode;
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2011-01-14 16:49:43 UTC (rev 34321)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2011-01-14 16:57:53 UTC (rev 34322)
@@ -2298,6 +2298,11 @@
 	RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface");
 	RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
 
+	prop= RNA_def_property(srna, "use_apply_on_spline", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_ApplyOnSpline);
+	RNA_def_property_ui_text(prop, "Apply on spline", "Apply this and all preceding deformation modifiers on splines' points rather than on filled curve/surface");
+	RNA_def_property_ui_icon(prop, ICON_SURFACE_DATA, 0);
+	RNA_def_property_update(prop, 0, "rna_Modifier_update");
 
 	/* types */
 	rna_def_modifier_subsurf(brna);




More information about the Bf-blender-cvs mailing list