2.5: Modifiers & Menus
[blender-staging.git] / source / blender / makesdna / DNA_modifier_types.h
index 76f6b980aa20a51dc493b09924aaf09a813896e2..912d11dcc8c88225f34b709bb4db237c9954e536 100644 (file)
@@ -41,6 +41,8 @@ typedef enum ModifierType {
        eModifierType_SimpleDeform,
        eModifierType_Multires,
        eModifierType_Surface,
+       eModifierType_Smoke,
+       eModifierType_SmokeHR,
        NUM_MODIFIER_TYPES
 } ModifierType;
 
@@ -237,6 +239,50 @@ typedef struct BMeshModifierData {
        int type;
 } BMeshModifierData;
 
+
+/* Smoke modifier flags */
+#define MOD_SMOKE_TYPE_DOMAIN (1 << 0)
+#define MOD_SMOKE_TYPE_FLOW (1 << 1)
+#define MOD_SMOKE_TYPE_COLL (1 << 2)
+
+typedef struct SmokeModifierData {
+       ModifierData modifier;
+
+       struct SmokeDomainSettings *domain;
+       struct SmokeFlowSettings *flow; /* inflow, outflow, smoke objects */
+       struct SmokeCollSettings *coll; /* collision objects */
+       float time;
+       int type;  /* domain, inflow, outflow, ... */
+} SmokeModifierData;
+
+
+/* noise */
+#define MOD_SMOKE_NOISEWAVE (1<<0)
+#define MOD_SMOKE_NOISEFFT (1<<1)
+#define MOD_SMOKE_NOISECURL (1<<2)
+
+/* flags */
+#define MOD_SMOKE_SHOWHIGHRES (1<<0) /* show high resolution */
+
+typedef struct SmokeHRModifierData {
+       ModifierData modifier;
+
+       struct WTURBULENCE *wt; // WTURBULENCE object, if active
+       struct PointCache *point_cache; /* definition is in DNA_object_force.h */
+       struct ListBase ptcaches;
+       struct GPUTexture *tex;
+       float *view3d; /* voxel data for display */
+       unsigned int v3dnum; /* number of frame in view3d buffer */
+       float time;
+       float strength;
+       int res[3];
+       int maxres;
+       short noise; /* noise type: wave, curl, anisotropic */
+       short pad;
+       int amplify;
+       int flags;
+} SmokeHRModifierData;
+
 typedef struct DisplaceModifierData {
        ModifierData modifier;
 
@@ -272,7 +318,7 @@ typedef struct UVProjectModifierData {
        ModifierData modifier;
 
        /* the objects which do the projecting */
-       struct Object *projectors[10];
+       struct Object *projectors[10]; /* MOD_UVPROJECT_MAX */
        struct Image *image;      /* the image to project */
        int flags;
        int num_projectors;
@@ -402,6 +448,7 @@ typedef struct ClothModifierData {
        struct ClothSimSettings *sim_parms; /* definition is in DNA_cloth_types.h */
        struct ClothCollSettings *coll_parms; /* definition is in DNA_cloth_types.h */
        struct PointCache *point_cache; /* definition is in DNA_object_force.h */
+       struct ListBase ptcaches;
 } ClothModifierData;
 
 typedef struct CollisionModifierData {
@@ -427,9 +474,14 @@ typedef struct CollisionModifierData {
 typedef struct SurfaceModifierData {
        ModifierData    modifier;
 
+       struct MVert *x; /* old position */
+       struct MVert *v; /* velocity */
+
        struct DerivedMesh *dm;
 
        struct BVHTreeFromMesh *bvhtree; /* bounding volume hierarchy of the mesh faces */
+
+       int cfra, numverts;
 } SurfaceModifierData;
 
 typedef enum {
@@ -503,12 +555,15 @@ typedef enum {
        eParticleInstanceFlag_Unborn =          (1<<3),
        eParticleInstanceFlag_Alive =           (1<<4),
        eParticleInstanceFlag_Dead =            (1<<5),
+       eParticleInstanceFlag_KeepShape =       (1<<6),
+       eParticleInstanceFlag_UseSize =         (1<<7),
 } ParticleInstanceModifierFlag;
 
 typedef struct ParticleInstanceModifierData {
        ModifierData modifier;
        struct Object *ob;
-       short psys, flag, rt[2];
+       short psys, flag, axis, rt;
+       float position, random_position;
 } ParticleInstanceModifierData;
 
 typedef enum {
@@ -614,4 +669,6 @@ typedef struct SimpleDeformModifierData {
    coordinates or global coordinates of origin */
 #define MOD_SIMPLEDEFORM_ORIGIN_LOCAL                  (1<<0)
 
+#define MOD_UVPROJECT_MAX                              10
+
 #endif