Preferences: remove author field
[blender.git] / source / blender / makesdna / DNA_effect_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file DNA_effect_types.h
29  *  \ingroup DNA
30  */
31
32 #ifndef __DNA_EFFECT_TYPES_H__
33 #define __DNA_EFFECT_TYPES_H__
34
35 /* don't forget, new effects also in writefile.c for dna!!! */
36
37 #define PAF_MAXMULT             4
38
39 /* paf->flag (keep bit 0 free for compatibility) */
40 #define PAF_BSPLINE             2
41 #define PAF_STATIC              4
42 #define PAF_FACE                8
43 #define PAF_ANIMATED    16
44                 /* show particles before they're emitted*/
45 #define PAF_UNBORN              32
46                 /* emit only from faces*/
47 #define PAF_OFACE               64
48                 /* show emitter (don't hide actual mesh)*/
49 #define PAF_SHOWE               128
50                 /* true random emit from faces (not just ordered jitter)*/
51 #define PAF_TRAND               256
52                 /* even distribution in face emission based on face areas*/
53 #define PAF_EDISTR              512
54                 /*show particles after they've died*/
55 #define PAF_DIED                2048
56
57
58 /*paf->flag2 for pos/neg paf->flag2neg*/
59 #define PAF_TEXTIME             1       /*texture timing*/
60
61         /* eff->type */
62 #define EFF_BUILD               0
63 #define EFF_PARTICLE    1
64 #define EFF_WAVE                2
65
66         /* eff->flag */
67 #define EFF_SELECT              1
68
69         /* paf->stype */
70 #define PAF_NORMAL              0
71 #define PAF_VECT                1
72
73         /* paf->texmap */
74 #define PAF_TEXINT              0
75 #define PAF_TEXRGB              1
76 #define PAF_TEXGRAD             2
77
78 typedef struct Effect {
79         struct Effect *next, *prev;
80         short type, flag, buttype, rt;
81
82 } Effect;
83
84 typedef struct BuildEff {
85         struct BuildEff *next, *prev;
86         short type, flag, buttype, rt;
87
88         float len, sfra;
89
90 } BuildEff;
91
92 #
93 #
94 typedef struct Particle {
95         float co[3], no[3];
96         float time, lifetime;
97         short mat_nr, rt;
98 } Particle;
99
100 struct Collection;
101
102 typedef struct PartEff {
103         struct PartEff *next, *prev;
104         short type, flag, buttype, stype, vertgroup, userjit;
105
106         float sta, end, lifetime;
107         int totpart, totkey, seed;
108
109         float normfac, obfac, randfac, texfac, randlife;
110         float force[3];
111         float damp;
112
113         float nabla, vectsize, maxlen, pad, defvec[3];
114
115         float mult[4], life[4];
116         short child[4], mat[4];
117         short texmap, curmult;
118         short staticstep, omat, timetex, speedtex, flag2, flag2neg;
119         short disp, vertgroup_v;
120
121         /** MAX_VGROUP_NAME. */
122         char vgroupname[64], vgroupname_v[64];
123         /** Inverse matrix of parent Object. */
124         float imat[4][4];
125
126         Particle *keys;
127         struct Collection *group;
128
129 } PartEff;
130
131
132 typedef struct WaveEff {
133         struct WaveEff *next, *prev;
134         short type, flag, buttype, stype;
135
136         float startx, starty, height, width;
137         float narrow, speed, minfac, damp;
138
139         float timeoffs, lifetime;
140
141 } WaveEff;
142
143 #endif