Undo revision 23130 which was a merge with 2.5, a messy one because I did something...
[blender.git] / source / blender / makesdna / DNA_particle_types.h
index 6a0a0e1..925fd31 100644 (file)
@@ -33,7 +33,6 @@
 #define DNA_PARTICLE_TYPES_H
 
 #include "DNA_ID.h"
-#include "DNA_boid_types.h"
 
 struct AnimData;
 
@@ -53,14 +52,6 @@ typedef struct ParticleKey { /* when changed update size of struct to copy_parti
        float time;             /* when this key happens */
 } ParticleKey;
 
-typedef struct BoidParticle {
-       struct Object *ground;
-       struct BoidData data;
-       float gravity[3];
-       float wander[3];
-       float rt;
-} BoidParticle;
-
 /* Child particles are created around or between parent particles */
 typedef struct ChildParticle {
        int num, parent;        /* num is face index on the final derived mesh */
@@ -78,34 +69,42 @@ typedef struct ParticleTarget {
        float time, duration;
 } ParticleTarget;
 
+/* Everything that's non dynamic for a particle:                       */
 typedef struct ParticleData {
-       ParticleKey state;              /* current global coordinates */
+       struct Object *stick_ob;/* object that particle sticks to when dead */
+
+       ParticleKey state;              /* normally current global coordinates or       */
+                                                       /* in sticky object space if dead & sticky      */
 
        ParticleKey prev_state; /* previous state */
-       
+
        HairKey *hair;                  /* hair vertices */
 
-       ParticleKey *keys;              /* keyed keys */
+       ParticleKey *keys;              /* keyed states */
 
-       BoidParticle *boid;             /* boids data */
+       struct BoidData *boid;  /* boids data */
 
-       int totkey;                             /* amount of hair or keyed keys*/
+       float r_rot[4];                 /* random values */
+       float r_ave[3],r_ve[3];
+
+       float fuv[4], foffset;  /* coordinates on face/edge number "num" and depth along*/
+                                                       /* face normal for volume emission                                              */
 
        float time, lifetime;   /* dietime is not nescessarily time+lifetime as */
        float dietime;                  /* particles can die unnaturally (collision)    */
 
+       float size, sizemul;    /* size and multiplier so that we can update size when ever */
+
        int num;                                /* index to vert/edge/face */
        int num_dmcache;                /* index to derived mesh data (face) to avoid slow lookups */
 
-       float fuv[4], foffset;  /* coordinates on face/edge number "num" and depth along*/
-                                                       /* face normal for volume emission                                              */
-
-       float size;                             /* size and multiplier so that we can update size when ever */
+       int totkey;
+       int bpi;                                /* softbody body point start index */
 
        short flag;
-       short alive;                    /* the life state of a particle */
+       short alive;                            /* the life state of a particle */
        short loop;                             /* how many times particle life has looped */
-       short hair_index;
+       short rt2;
 } ParticleData;
 
 typedef struct ParticleSettings {
@@ -195,15 +194,14 @@ typedef struct ParticleSystem{                            /* note, make sure all (runtime) are NULL's in
        ParticleData *particles;                                /* (parent) particles */
        ChildParticle *child;                                   /* child particles */
 
-       struct PTCacheEdit *edit;                                               /* particle editmode (runtime) */
-       void (*free_edit)(struct PTCacheEdit *edit);    /* free callback */
+       struct ParticleEdit *edit;                                              /* particle editmode (runtime) */
+       void (*free_edit)(struct ParticleSystem *sys);  /* free callback */
 
        struct ParticleCacheKey **pathcache;    /* path cache (runtime) */
        struct ParticleCacheKey **childcache;   /* child cache (runtime) */
        ListBase pathcachebufs, childcachebufs; /* buffers for the above */
 
-       struct ClothModifierData *clmd;                                 /* cloth simulation for hair */
-       struct DerivedMesh *hair_in_dm, *hair_out_dm;   /* input/output for cloth simulation */
+       struct SoftBody *soft;                                  /* hair softbody */
 
        struct Object *target_ob;
        struct Object *lattice;
@@ -217,9 +215,9 @@ typedef struct ParticleSystem{                              /* note, make sure all (runtime) are NULL's in
        
        float imat[4][4];       /* used for duplicators */
        float cfra, tree_frame;
-       int seed, rt;
+       int seed;
        int flag, totpart, totchild, totcached, totchildcache;
-       short recalc, target_psys, totkeyed, bakespace;
+       short recalc, target_psys, totkeyed, softflag, bakespace, rt2;
 
        char bb_uvname[3][32];                                  /* billboard uv name */
 
@@ -260,7 +258,7 @@ typedef struct ParticleSystem{                              /* note, make sure all (runtime) are NULL's in
 #define PART_TRAND                     128     
 #define PART_EDISTR                    256     /* particle/face from face areas */
 
-//#define PART_STICKY                  512     /*collided particles can stick to collider*/
+#define PART_STICKY                    512     /*collided particles can stick to collider*/
 #define PART_DIE_ON_COL                (1<<12)
 #define PART_SIZE_DEFL         (1<<13) /* swept sphere deflections */
 #define PART_ROT_DYN           (1<<14) /* dynamic rotation */
@@ -411,11 +409,11 @@ typedef struct ParticleSystem{                            /* note, make sure all (runtime) are NULL's in
 
 /* psys->flag */
 #define PSYS_CURRENT           1
-#define PSYS_GLOBAL_HAIR       2
-#define PSYS_HAIR_DYNAMICS     4
+//#define PSYS_BAKING                  2
+//#define PSYS_BAKE_UI         4
 #define        PSYS_KEYED_TIMING       8
 #define PSYS_ENABLED           16      /* deprecated */
-#define PSYS_HAIR_UPDATED      32  /* signal for updating hair particle mode */
+//#define PSYS_FIRST_KEYED     32
 #define PSYS_DRAWING           64
 //#define PSYS_SOFT_BAKE               128
 #define PSYS_DELETE                    256     /* remove particlesystem as soon as possible */
@@ -428,8 +426,12 @@ typedef struct ParticleSystem{                             /* note, make sure all (runtime) are NULL's in
 /* pars->flag */
 #define PARS_UNEXIST           1
 #define PARS_NO_DISP           2
-//#define PARS_STICKY                  4
-#define PARS_REKEY                     8
+#define PARS_STICKY                    4
+#define PARS_TRANSFORM         8
+#define PARS_HIDE                      16
+#define PARS_TAG                       32
+#define PARS_REKEY                     64
+#define PARS_EDIT_RECALC       128
 
 /* pars->alive */
 #define PARS_KILLED                    0