merge with 2.5 (not trunk, last merge message said that on accident) at r22252
[blender.git] / source / blender / blenkernel / BKE_modifier.h
index 4065cbb70075f18b45d3f6eedd12c52772053bc5..42a4743fd227786e291aad494a6b4ced95d4a758 100644 (file)
@@ -33,6 +33,7 @@
 #include "DNA_modifier_types.h"                /* needed for all enum typdefs */
 #include "BKE_customdata.h"
 
+struct ID;
 struct EditMesh;
 struct DerivedMesh;
 struct DagForest;
@@ -43,6 +44,7 @@ struct ListBase;
 struct LinkNode;
 struct bArmature;
 struct ModifierData;
+struct BMEditMesh;
 
 typedef enum {
        /* Should not be used, only for None modifier type */
@@ -62,7 +64,7 @@ typedef enum {
         * used for particles modifier that doesn't actually modify the object
         * unless it's a mesh and can be exploded -> curve can also emit particles
         */
-       eModifierTypeType_DeformOrConstruct
+       eModifierTypeType_DeformOrConstruct,
 } ModifierTypeType;
 
 typedef enum {
@@ -87,6 +89,9 @@ typedef enum {
        /* For modifiers that support pointcache, so we can check to see if it has files we need to deal with
        */
        eModifierTypeFlag_UsesPointCache = (1<<6),
+
+       /* For physics modifiers, max one per type */
+       eModifierTypeFlag_Single = (1<<7)
 } ModifierTypeFlag;
 
 typedef void (*ObjectWalkFunc)(void *userData, struct Object *ob, struct Object **obpoin);
@@ -131,13 +136,13 @@ typedef struct ModifierTypeInfo {
         */
        void (*deformVertsEM)(
                    struct ModifierData *md, struct Object *ob,
-                   struct EditMesh *editData, struct DerivedMesh *derivedData,
+                   struct BMEditMesh *editData, struct DerivedMesh *derivedData,
                    float (*vertexCos)[3], int numVerts);
 
        /* Set deform matrix per vertex for crazyspace correction */
        void (*deformMatricesEM)(
                    struct ModifierData *md, struct Object *ob,
-                   struct EditMesh *editData, struct DerivedMesh *derivedData,
+                   struct BMEditMesh *editData, struct DerivedMesh *derivedData,
                    float (*vertexCos)[3], float (*defMats)[3][3], int numVerts);
 
        /********************* Non-deform modifier functions *********************/
@@ -175,7 +180,7 @@ typedef struct ModifierTypeInfo {
         */
        struct DerivedMesh *(*applyModifierEM)(
                                    struct ModifierData *md, struct Object *ob,
-                                   struct EditMesh *editData,
+                                   struct BMEditMesh *editData,
                                    struct DerivedMesh *derivedData);