Revision: 42769
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42769
Author:   mont29
Date:     2011-12-20 14:15:59 +0000 (Tue, 20 Dec 2011)
Log Message:
-----------
New modifier type: eModifierTypeType_NonGeometrical, for modifiers affecting 
CustomData layers only (e.g. UVProject and  WeightVG ones).

Also, allow applying to obdata those modifiers, even with shapekeys, but do not 
allow applying them *as* shapekey (as shapekeys do not have CD layers).

Fix [#29636] Vertex Weight Mix modifier "apply" button don't work.

Note: applying whit shape keys currently always uses base shape, not current 
one (for apply to obdata as well as apply to shapekey), but this is another 
topic...

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_modifier.h
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/object/object_modifier.c
    trunk/blender/source/blender/modifiers/intern/MOD_uvproject.c
    trunk/blender/source/blender/modifiers/intern/MOD_weightvgedit.c
    trunk/blender/source/blender/modifiers/intern/MOD_weightvgmix.c
    trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c

Modified: trunk/blender/source/blender/blenkernel/BKE_modifier.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_modifier.h      2011-12-20 
13:51:16 UTC (rev 42768)
+++ trunk/blender/source/blender/blenkernel/BKE_modifier.h      2011-12-20 
14:15:59 UTC (rev 42769)
@@ -65,6 +65,11 @@
         * unless it's a mesh and can be exploded -> curve can also emit 
particles
         */
        eModifierTypeType_DeformOrConstruct,
+
+       /* Like eModifierTypeType_Nonconstructive, but does not affect the 
geometry
+        * of the object, rather some of its CustomData layers.
+        * E.g. UVProject and WeightVG modifiers. */
+       eModifierTypeType_NonGeometrical,
 } ModifierTypeType;
 
 typedef enum {
@@ -311,6 +316,7 @@
 int           modifier_couldBeCage(struct Scene *scene, struct ModifierData 
*md);
 int           modifier_isCorrectableDeformed(struct ModifierData *md);
 int                      modifier_sameTopology(ModifierData *md);
+int           modifier_nonGeometrical(ModifierData *md);
 int           modifier_isEnabled(struct Scene *scene, struct ModifierData *md, 
int required_mode);
 void          modifier_setError(struct ModifierData *md, const char *format, 
...)
 #ifdef __GNUC__

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c   2011-12-20 
13:51:16 UTC (rev 42768)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c   2011-12-20 
14:15:59 UTC (rev 42769)
@@ -239,9 +239,16 @@
 int modifier_sameTopology(ModifierData *md)
 {
        ModifierTypeInfo *mti = modifierType_getInfo(md->type);
-       return ( mti->type == eModifierTypeType_OnlyDeform || mti->type == 
eModifierTypeType_Nonconstructive);
+       return ELEM3(mti->type, eModifierTypeType_OnlyDeform, 
eModifierTypeType_Nonconstructive,
+                    eModifierTypeType_NonGeometrical);
 }
 
+int modifier_nonGeometrical(ModifierData *md)
+{
+       ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+       return (mti->type == eModifierTypeType_NonGeometrical);
+}
+
 void modifier_setError(ModifierData *md, const char *format, ...)
 {
        char buffer[512];

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c        
2011-12-20 13:51:16 UTC (rev 42768)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c        
2011-12-20 14:15:59 UTC (rev 42769)
@@ -845,7 +845,7 @@
                                uiLayoutSetOperatorContext(row, 
WM_OP_INVOKE_DEFAULT);
                                uiItemEnumO(row, "OBJECT_OT_modifier_apply", 
IFACE_("Apply"), 0, "apply_as", MODIFIER_APPLY_DATA);
                                
-                               if (modifier_sameTopology(md))
+                               if (modifier_sameTopology(md) && 
!modifier_nonGeometrical(md))
                                        uiItemEnumO(row, 
"OBJECT_OT_modifier_apply", IFACE_("Apply as Shape"), 0, "apply_as", 
MODIFIER_APPLY_SHAPE);
                        }
                        
@@ -853,7 +853,7 @@
                        uiBlockSetButLock(block, ob && ob->id.lib, 
ERROR_LIBDATA_MESSAGE);
                        
                        if (!ELEM5(md->type, eModifierType_Fluidsim, 
eModifierType_Softbody, eModifierType_ParticleSystem, eModifierType_Cloth, 
eModifierType_Smoke))
-                               uiItemO(row, TIP_("Copy"), ICON_NONE, 
"OBJECT_OT_modifier_copy");
+                               uiItemO(row, IFACE_("Copy"), ICON_NONE, 
"OBJECT_OT_modifier_copy");
                }
                
                /* result is the layout block inside the box, that we return so 
that modifier settings can be drawn */

Modified: trunk/blender/source/blender/editors/object/object_modifier.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_modifier.c       
2011-12-20 13:51:16 UTC (rev 42768)
+++ trunk/blender/source/blender/editors/object/object_modifier.c       
2011-12-20 14:15:59 UTC (rev 42769)
@@ -452,7 +452,7 @@
                Key *key=me->key;
                KeyBlock *kb;
                
-               if(!modifier_sameTopology(md)) {
+               if(!modifier_sameTopology(md) || mti->type == 
eModifierTypeType_NonGeometrical) {
                        BKE_report(reports, RPT_ERROR, "Only deforming 
modifiers can be applied to Shapes");
                        return 0;
                }
@@ -500,7 +500,7 @@
                Mesh *me = ob->data;
                MultiresModifierData *mmd= find_multires_modifier_before(scene, 
md);
 
-               if( me->key) {
+               if(me->key && mti->type != eModifierTypeType_NonGeometrical) {
                        BKE_report(reports, RPT_ERROR, "Modifier cannot be 
applied to Mesh with Shape Keys");
                        return 0;
                }

Modified: trunk/blender/source/blender/modifiers/intern/MOD_uvproject.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_uvproject.c       
2011-12-20 13:51:16 UTC (rev 42768)
+++ trunk/blender/source/blender/modifiers/intern/MOD_uvproject.c       
2011-12-20 14:15:59 UTC (rev 42769)
@@ -407,7 +407,7 @@
        /* name */              "UVProject",
        /* structName */        "UVProjectModifierData",
        /* structSize */        sizeof(UVProjectModifierData),
-       /* type */              eModifierTypeType_Nonconstructive,
+       /* type */              eModifierTypeType_NonGeometrical,
        /* flags */             eModifierTypeFlag_AcceptsMesh
                                                        | 
eModifierTypeFlag_SupportsMapping
                                                        | 
eModifierTypeFlag_SupportsEditmode

Modified: trunk/blender/source/blender/modifiers/intern/MOD_weightvgedit.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_weightvgedit.c    
2011-12-20 13:51:16 UTC (rev 42768)
+++ trunk/blender/source/blender/modifiers/intern/MOD_weightvgedit.c    
2011-12-20 14:15:59 UTC (rev 42769)
@@ -254,7 +254,7 @@
        /* name */              "VertexWeightEdit",
        /* structName */        "WeightVGEditModifierData",
        /* structSize */        sizeof(WeightVGEditModifierData),
-       /* type */              eModifierTypeType_Nonconstructive,
+       /* type */              eModifierTypeType_NonGeometrical,
        /* flags */             eModifierTypeFlag_AcceptsMesh
 /*                            |eModifierTypeFlag_SupportsMapping*/
                               |eModifierTypeFlag_SupportsEditmode,

Modified: trunk/blender/source/blender/modifiers/intern/MOD_weightvgmix.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_weightvgmix.c     
2011-12-20 13:51:16 UTC (rev 42768)
+++ trunk/blender/source/blender/modifiers/intern/MOD_weightvgmix.c     
2011-12-20 14:15:59 UTC (rev 42769)
@@ -386,7 +386,7 @@
        /* name */              "VertexWeightMix",
        /* structName */        "WeightVGMixModifierData",
        /* structSize */        sizeof(WeightVGMixModifierData),
-       /* type */              eModifierTypeType_Nonconstructive,
+       /* type */              eModifierTypeType_NonGeometrical,
        /* flags */             eModifierTypeFlag_AcceptsMesh
 /*                            |eModifierTypeFlag_SupportsMapping*/
                               |eModifierTypeFlag_SupportsEditmode,

Modified: trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c       
2011-12-20 13:51:16 UTC (rev 42768)
+++ trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c       
2011-12-20 14:15:59 UTC (rev 42769)
@@ -520,7 +520,7 @@
        /* name */              "VertexWeightProximity",
        /* structName */        "WeightVGProximityModifierData",
        /* structSize */        sizeof(WeightVGProximityModifierData),
-       /* type */              eModifierTypeType_Nonconstructive,
+       /* type */              eModifierTypeType_NonGeometrical,
        /* flags */             eModifierTypeFlag_AcceptsMesh
 /*                            |eModifierTypeFlag_SupportsMapping*/
                               |eModifierTypeFlag_SupportsEditmode,

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to