Merge with trunk/2.5 at r25563
[blender-staging.git] / source / blender / makesdna / DNA_modifier_types.h
index d6e7992d4357f3669defc5e21a276e5f020f567c..2491e58f176a823470b727771521ffc81039a292 100644 (file)
@@ -64,6 +64,7 @@ typedef enum ModifierType {
        eModifierType_Surface,
        eModifierType_Smoke,
        eModifierType_ShapeKey,
+       eModifierType_Solidify,
        NUM_MODIFIER_TYPES
 } ModifierType;
 
@@ -492,6 +493,9 @@ typedef struct BooleanModifierData {
 #define MOD_MDEF_INVERT_VGROUP (1<<0)
 #define MOD_MDEF_DYNAMIC_BIND  (1<<1)
 
+#define MOD_MDEF_VOLUME                        0
+#define MOD_MDEF_SURFACE               1
+
 typedef struct MDefInfluence {
        int vertex;
        float weight;
@@ -508,7 +512,7 @@ typedef struct MeshDeformModifierData {
        struct Object *object;                  /* mesh object */
        char defgrp_name[32];                   /* optional vertexgroup name */
 
-       short gridsize, flag, pad[2];
+       short gridsize, flag, mode, pad;
 
        /* variables filled in when bound */
        float *bindweights, *bindcos;   /* computed binding weights */
@@ -523,7 +527,8 @@ typedef struct MeshDeformModifierData {
        float bindmat[4][4];                    /* matrix of cage at binding time */
 
        /* runtime */
-       void (*bindfunc)(struct Scene *scene, struct MeshDeformModifierData *mmd,
+       void (*bindfunc)(struct Scene *scene, struct DerivedMesh *dm,
+               struct MeshDeformModifierData *mmd,
                float *vertexcos, int totvert, float cagemat[][4]);
 } MeshDeformModifierData;
 
@@ -582,9 +587,13 @@ typedef struct MultiresModifierData {
        ModifierData modifier;
 
        char lvl, sculptlvl, renderlvl, totlvl;
-       char simple, pad[3];
+       char simple, flags, pad[2];
 } MultiresModifierData;
 
+typedef enum {
+       eMultiresModifierFlag_ControlEdges = (1<<0),
+} MultiresModifierFlag;
+
 typedef struct FluidsimModifierData {
        ModifierData modifier;
        
@@ -667,4 +676,20 @@ typedef struct ShapeKeyModifierData {
        ModifierData modifier;
 } ShapeKeyModifierData;
 
+typedef struct SolidifyModifierData {
+       ModifierData modifier;
+
+       char vgroup[32];                /* name of vertex group to use */
+       float offset;                   /* new surface offset level*/
+       float crease_inner;
+       float crease_outer;
+       float crease_rim;
+       int flag;
+       char pad[4];
+} SolidifyModifierData;
+
+#define MOD_SOLIDIFY_RIM                       (1<<0)
+#define MOD_SOLIDIFY_EVEN                      (1<<1)
+#define MOD_SOLIDIFY_NORMAL_CALC       (1<<2)
+
 #endif