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