From e750478ce3ed4427a468ec77513a60916b9cf9e4 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sat, 26 Jun 2004 18:18:11 +0000 Subject: The revised patch from Leon for new particle effects. New is that objects can have a force field, and Meshes can even deflect (collide) particles. This is in a new sub-menu in Object buttons F7 The full instructions where on the web, Leon mailed it me and I will put it in CMS tomorrow. For those who like to play with it now, here are demo files: http://download.blender.org/demo/test/ Quite some changes where in the integration though... so previous created particle deflectors will not work. Changes to mention now are: - gravity is renamed to 'force field' - force field and deflector options are in Object now, not in Mesh - the options also have its own struct, doesnt add to Object by default - force fields are possible for all object types, but only work on center. So empty objects are typical for it. Work to do: - add draw method in 3d win to denote forcefield objects - check on the UI (panel with different size?) - add 'recalc' button in deflector panel --- source/blender/makesdna/DNA_ipo_types.h | 8 +++++++- source/blender/makesdna/DNA_mesh_types.h | 6 +++--- source/blender/makesdna/DNA_object_types.h | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) (limited to 'source/blender/makesdna') diff --git a/source/blender/makesdna/DNA_ipo_types.h b/source/blender/makesdna/DNA_ipo_types.h index 69dcef38b57..0fc5ce64eaa 100644 --- a/source/blender/makesdna/DNA_ipo_types.h +++ b/source/blender/makesdna/DNA_ipo_types.h @@ -65,7 +65,7 @@ typedef short IPO_Channel; /* ******************** */ -#define OB_TOTIPO 24 +#define OB_TOTIPO 29 #define OB_LOC_X 1 #define OB_LOC_Y 2 @@ -101,6 +101,12 @@ typedef short IPO_Channel; #define OB_COL_B 23 #define OB_COL_A 24 +#define OB_PD_FSTR 25 +#define OB_PD_FFALL 26 +#define OB_PD_SDAMP 27 +#define OB_PD_RDAMP 28 +#define OB_PD_PERM 29 + /* ******************** */ diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h index 8198e5329cd..b80bdf62b2c 100644 --- a/source/blender/makesdna/DNA_mesh_types.h +++ b/source/blender/makesdna/DNA_mesh_types.h @@ -74,12 +74,12 @@ typedef struct Mesh { struct MSticky *msticky; struct Mesh *texcomesh; float *orco; - + struct OcInfo *oc; /* not written in file */ void *sumohandle; - + int totvert, totface; - + int texflag; float loc[3]; float size[3]; diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index b350416f6cd..2528149e89a 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -77,6 +77,19 @@ typedef struct LBuf { struct Object **ob; } LBuf; +typedef struct PartDeflect { + short deflect; /* Deflection flag - does mesh deflect particles*/ + short forcefield; /* Force flag, do the vertices attract / repel particles ? */ + + float pdef_damp; /* Damping factor for particle deflection */ + float pdef_rdamp; /* Random element of damping for deflection */ + float pdef_perm; /* Chance of particle passing through mesh */ + + float f_strength; /* The strength of the force (+ or - ) */ + float f_power; /* The power law - real gravitation is 2 (square) */ +} PartDeflect; + + typedef struct Object { ID id; @@ -179,6 +192,7 @@ typedef struct Object { ListBase constraints; ListBase nlastrips; + PartDeflect *pd; /* particle deflector/attractor/collision data */ struct Life *life; LBuf lbuf; -- cgit v1.2.3