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