diff options
Diffstat (limited to 'source/blender/makesdna/DNA_particle_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_particle_types.h | 61 |
1 files changed, 38 insertions, 23 deletions
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h index 115344bd899..7dd69b2151c 100644 --- a/source/blender/makesdna/DNA_particle_types.h +++ b/source/blender/makesdna/DNA_particle_types.h @@ -66,6 +66,8 @@ typedef struct ParticleData { 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 states */ @@ -125,18 +127,18 @@ typedef struct ParticleSettings { /* general values */ float sta, end, lifetime, randlife; - float timetweak, jitfac, keyed_time; + float timetweak, jitfac, keyed_time, eff_hair, rt; int totpart, userjit, grid_res; /* initial velocity factors */ float normfac, obfac, randfac, partfac, tanfac, tanphase, reactfac; - float rotfac, avefac, phasefac; + float avefac, phasefac, randrotfac, randphasefac; /* physical properties */ float mass, size, randsize, reactshape; /* global physical properties */ float acc[3], dragfac, brownfac, dampfac; /* length */ - float length, abslength, randlength, pad; + float length, abslength, randlength; /* children */ int child_nbr, ren_child_nbr; float parents, childsize, childrandsize; @@ -166,29 +168,30 @@ typedef struct ParticleSettings { struct Object *bb_ob; struct Ipo *ipo; struct PartDeflect *pd; + struct PartDeflect *pd2; } ParticleSettings; -typedef struct ParticleSystem{ +typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in copy_particlesystem */ struct ParticleSystem *next, *prev; - ParticleSettings *part; - - ParticleData *particles; + ParticleSettings *part; /* particle settings */ - ChildParticle *child; + ParticleData *particles; /* (parent) particles */ + ChildParticle *child; /* child particles */ - struct ParticleEdit *edit; + struct ParticleEdit *edit; /* particle editmode (runtime) */ - struct ParticleCacheKey **pathcache; - struct ParticleCacheKey **childcache; + struct ParticleCacheKey **pathcache; /* path cache (runtime) */ + struct ParticleCacheKey **childcache; /* child cache (runtime) */ + ListBase pathcachebufs, childcachebufs; /* buffers for the above */ - struct SoftBody *soft; + struct SoftBody *soft; /* hair softbody */ struct Object *target_ob; struct Object *keyed_ob; struct Object *lattice; - struct ListBase effectors, reactevents; + struct ListBase effectors, reactevents; /* runtime */ float imat[4][4]; /* used for duplicators */ float cfra; @@ -196,13 +199,16 @@ typedef struct ParticleSystem{ int flag, totpart, totchild, totcached, totchildcache, rt; short recalc, target_psys, keyed_psys, totkeyed, softflag, bakespace; - char bb_uvname[3][32]; + char bb_uvname[3][32]; /* billboard uv name */ /* if you change these remember to update array lengths to PSYS_TOT_VG! */ - short vgroup[11], vg_neg, rt3[2]; + short vgroup[12], vg_neg, rt3; /* vertex groups */ /* temporary storage during render */ void *renderdata; + + /* point cache */ + struct PointCache *pointcache; }ParticleSystem; /* general particle maximums */ @@ -218,13 +224,14 @@ typedef struct ParticleSystem{ #define PART_EMITTER 0 #define PART_REACTOR 1 #define PART_HAIR 2 +#define PART_FLUID 3 /* part->flag */ #define PART_REACT_STA_END 1 #define PART_REACT_MULTIPLE 2 #define PART_LOOP 4 -#define PART_LOOP_INSTANT 8 +//#define PART_LOOP_INSTANT 8 #define PART_HAIR_GEOMETRY 16 @@ -255,10 +262,13 @@ typedef struct ParticleSystem{ #define PART_GRID_INVERT (1<<26) +#define PART_CHILD_EFFECT (1<<27) #define PART_CHILD_SEAMS (1<<28) #define PART_CHILD_RENDER (1<<29) #define PART_CHILD_GUIDE (1<<30) +#define PART_SELF_EFFECT (1<<22) + /* part->rotfrom */ #define PART_ROT_KEYS 0 /* interpolate directly from keys */ #define PART_ROT_ZINCR 1 /* same as zdir but done incrementally from previous position */ @@ -288,8 +298,6 @@ typedef struct ParticleSystem{ #define PART_KINK_RADIAL 2 #define PART_KINK_WAVE 3 #define PART_KINK_BRAID 4 -#define PART_KINK_ROT 5 -#define PART_KINK_ROLL 6 /* part->draw */ #define PART_DRAW_VEL 1 @@ -352,12 +360,16 @@ typedef struct ParticleSystem{ /* part->rotmode */ #define PART_ROT_NOR 1 #define PART_ROT_VEL 2 -#define PART_ROT_RAND 3 +#define PART_ROT_GLOB_X 3 +#define PART_ROT_GLOB_Y 4 +#define PART_ROT_GLOB_Z 5 +#define PART_ROT_OB_X 6 +#define PART_ROT_OB_Y 7 +#define PART_ROT_OB_Z 8 /* part->avemode */ #define PART_AVE_SPIN 1 #define PART_AVE_RAND 2 -#define PART_AVE_VEL 3 /* part->reactevent */ #define PART_EVENT_DEATH 0 @@ -380,7 +392,7 @@ typedef struct ParticleSystem{ //#define PSYS_BAKING 2 //#define PSYS_BAKE_UI 4 #define PSYS_KEYED_TIME 8 -#define PSYS_ENABLED 16 +#define PSYS_ENABLED 16 /* deprecated */ #define PSYS_FIRST_KEYED 32 #define PSYS_DRAWING 64 //#define PSYS_SOFT_BAKE 128 @@ -388,7 +400,8 @@ typedef struct ParticleSystem{ #define PSYS_HAIR_DONE 512 #define PSYS_KEYED 1024 #define PSYS_EDITED 2048 -#define PSYS_PROTECT_CACHE 4096 +//#define PSYS_PROTECT_CACHE 4096 +#define PSYS_DISABLED 8192 /* pars->flag */ #define PARS_UNEXIST 1 @@ -405,9 +418,10 @@ typedef struct ParticleSystem{ #define PARS_DEAD 1 #define PARS_UNBORN 2 #define PARS_ALIVE 3 +#define PARS_DYING 4 /* psys->vg */ -#define PSYS_TOT_VG 11 +#define PSYS_TOT_VG 12 #define PSYS_VG_DENSITY 0 #define PSYS_VG_VEL 1 @@ -420,6 +434,7 @@ typedef struct ParticleSystem{ #define PSYS_VG_SIZE 8 #define PSYS_VG_TAN 9 #define PSYS_VG_ROT 10 +#define PSYS_VG_EFFECTOR 11 /* part->boidrules */ #define BOID_TOT_RULES 8 |