Fix T65996: metaballs converted to meshes appear to render at an incorrect isosurface.
[blender.git] / source / blender / makesdna / DNA_ipo_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  * \deprecated
23  *   The contents of this file are now officially deprecated.
24  *   They were used for the 'old' animation system,
25  *   which has (as of 2.50) been replaced with a completely new system by Joshua Leung (aligorith).
26  *   All defines, etc. are only still maintained to provide backwards compatibility for old files.
27  */
28
29 #ifndef __DNA_IPO_TYPES_H__
30 #define __DNA_IPO_TYPES_H__
31
32 #include "DNA_listBase.h"
33 #include "DNA_curve_types.h"
34 #include "DNA_vec_types.h"
35
36 #include "DNA_ID.h"
37
38 #include "BLI_compiler_attrs.h"
39
40 /* -------------------------- Type Defines --------------------------- */
41
42 /* --- IPO Curve Driver --- */
43
44 /* IPO Curve Driver */
45 typedef struct IpoDriver {
46   /** Target/driver ob. */
47   struct Object *ob;
48   /** Sub-channel to use. */
49   short blocktype, adrcode;
50
51   /** Driver settings. */
52   short type, flag;
53   /** Bone, or python expression here. */
54   char name[128];
55 } IpoDriver;
56
57 /* --- IPO Curve --- */
58
59 /* IPO Curve */
60 typedef struct IpoCurve {
61   struct IpoCurve *next, *prev;
62
63   /** Array of BPoints (sizeof(BPoint) * totvert) - i.e. baked/imported data. */
64   struct BPoint *bp;
65   /** Array of BezTriples (sizeof(BezTriple) * totvert)  - i.e. user-editable keyframes . */
66   struct BezTriple *bezt;
67
68   /** Bounding boxes. */
69   rctf maxrct, totrct;
70
71   /** Blocktype= ipo-blocktype; adrcode= type of ipo-curve; vartype= 'format' of data. */
72   short blocktype, adrcode, vartype;
73   /** Total number of BezTriples (i.e. keyframes) on curve. */
74   short totvert;
75   /** Interpolation and extrapolation modes . */
76   short ipo, extrap;
77   /** Flag= settings; rt= ???. */
78   short flag, rt;
79   /** Minimum/maximum y-extents for curve. */
80   float ymin, ymax;
81   /** ???. */
82   unsigned int bitmask;
83
84   /** Minimum/maximum values for sliders (in action editor). */
85   float slide_min, slide_max;
86   /** Value of ipo-curve for current frame. */
87   float curval;
88
89   /** Pointer to ipo-driver for this curve. */
90   IpoDriver *driver;
91 } IpoCurve;
92
93 /* --- ID-Datablock --- */
94
95 /* IPO Data-Block */
96 typedef struct Ipo {
97   ID id;
98
99   /** A list of IpoCurve structs in a linked list. */
100   ListBase curve;
101   /** Rect defining extents of keyframes?. */
102   rctf cur;
103
104   /** Blocktype: self-explanatory; showkey: either 0 or 1
105    * (show vertical yellow lines for editing). */
106   short blocktype, showkey;
107   /** Muteipo: either 0 or 1 (whether ipo block is muted). */
108   short muteipo;
109   char _pad[2];
110 } Ipo;
111
112 /* ----------- adrcodes (for matching ipo-curves to data) ------------- */
113
114 /* defines: are these duped or new? */
115 #define IPOBUTY 17
116
117 #define TOB_IPO 1
118 #define TOB_IPODROT 2
119
120 /* disptype */
121 #define IPO_DISPDEGR 1
122 #define IPO_DISPBITS 2
123 #define IPO_DISPTIME 3
124
125 /* ********** Object (ID_OB) ********** */
126
127 #define OB_TOTIPO 30
128 #define OB_TOTNAM 30
129
130 #define OB_LOC_X 1
131 #define OB_LOC_Y 2
132 #define OB_LOC_Z 3
133 #define OB_DLOC_X 4
134 #define OB_DLOC_Y 5
135 #define OB_DLOC_Z 6
136
137 #define OB_ROT_X 7
138 #define OB_ROT_Y 8
139 #define OB_ROT_Z 9
140 #define OB_DROT_X 10
141 #define OB_DROT_Y 11
142 #define OB_DROT_Z 12
143
144 #define OB_SIZE_X 13
145 #define OB_SIZE_Y 14
146 #define OB_SIZE_Z 15
147 #define OB_DSIZE_X 16
148 #define OB_DSIZE_Y 17
149 #define OB_DSIZE_Z 18
150
151 #define OB_LAY 19
152
153 #define OB_TIME 20
154
155 #define OB_COL_R 21
156 #define OB_COL_G 22
157 #define OB_COL_B 23
158 #define OB_COL_A 24
159
160 #define OB_PD_FSTR 25
161 #define OB_PD_FFALL 26
162 #define OB_PD_SDAMP 27
163 #define OB_PD_RDAMP 28
164 #define OB_PD_PERM 29
165 #define OB_PD_FMAXD 30
166
167 /* exception: driver channel, for bone driver only */
168 #define OB_ROT_DIFF 100
169
170 /* ********** Material (ID_MA) ********** */
171
172 #define MA_TOTIPO 40
173 #define MA_TOTNAM 26
174
175 #define MA_COL_R 1
176 #define MA_COL_G 2
177 #define MA_COL_B 3
178 #define MA_SPEC_R 4
179 #define MA_SPEC_G 5
180 #define MA_SPEC_B 6
181 #define MA_MIR_R 7
182 #define MA_MIR_G 8
183 #define MA_MIR_B 9
184 #define MA_REF 10
185 #define MA_ALPHA 11
186 #define MA_EMIT 12
187 #define MA_AMB 13
188 #define MA_SPEC 14
189 #define MA_HARD 15
190 #define MA_SPTR 16
191 #define MA_IOR 17
192 #define MA_MODE 18
193 #define MA_HASIZE 19
194 #define MA_TRANSLU 20
195 #define MA_RAYM 21
196 #define MA_FRESMIR 22
197 #define MA_FRESMIRI 23
198 #define MA_FRESTRA 24
199 #define MA_FRESTRAI 25
200 #define MA_ADD 26
201
202 #define MA_MAP1 (1 << 5)
203 #define MA_MAP2 (1 << 6)
204 #define MA_MAP3 (1 << 7)
205 #define MA_MAP4 (1 << 8)
206 #define MA_MAP5 (1 << 9)
207 #define MA_MAP6 (1 << 10)
208 #define MA_MAP7 (1 << 11)
209 #define MA_MAP8 (1 << 12)
210 #define MA_MAP9 (1 << 13)
211 #define MA_MAP10 (1 << 14)
212 #define MA_MAP11 (1 << 15)
213 #define MA_MAP12 (1 << 16)
214 #define MA_MAP13 (1 << 17)
215 #define MA_MAP14 (1 << 18)
216 #define MA_MAP15 (1 << 19)
217 #define MA_MAP16 (1 << 20)
218 #define MA_MAP17 (1 << 21)
219 #define MA_MAP18 (1 << 22)
220
221 /* ********** Texture Slots (MTex) ********** */
222
223 #define TEX_TOTNAM 14
224
225 #define MAP_OFS_X 1
226 #define MAP_OFS_Y 2
227 #define MAP_OFS_Z 3
228 #define MAP_SIZE_X 4
229 #define MAP_SIZE_Y 5
230 #define MAP_SIZE_Z 6
231 #define MAP_R 7
232 #define MAP_G 8
233 #define MAP_B 9
234
235 #define MAP_DVAR 10
236 #define MAP_COLF 11
237 #define MAP_NORF 12
238 #define MAP_VARF 13
239 #define MAP_DISP 14
240
241 /* ********** Texture (ID_TE) ********** */
242
243 #define TE_TOTIPO 26
244 #define TE_TOTNAM 26
245
246 #define TE_NSIZE 1
247 #define TE_NDEPTH 2
248 #define TE_NTYPE 3
249 #define TE_TURB 4
250
251 #define TE_VNW1 5
252 #define TE_VNW2 6
253 #define TE_VNW3 7
254 #define TE_VNW4 8
255 #define TE_VNMEXP 9
256 #define TE_VN_DISTM 10
257 #define TE_VN_COLT 11
258
259 #define TE_ISCA 12
260 #define TE_DISTA 13
261
262 #define TE_MG_TYP 14
263 #define TE_MGH 15
264 #define TE_MG_LAC 16
265 #define TE_MG_OCT 17
266 #define TE_MG_OFF 18
267 #define TE_MG_GAIN 19
268
269 #define TE_N_BAS1 20
270 #define TE_N_BAS2 21
271
272 #define TE_COL_R 22
273 #define TE_COL_G 23
274 #define TE_COL_B 24
275 #define TE_BRIGHT 25
276 #define TE_CONTRA 26
277
278 /* ******** Sequence (ID_SEQ) ********** */
279
280 #define SEQ_TOTIPO 1
281 #define SEQ_TOTNAM 1
282
283 #define SEQ_FAC1 1
284 #define SEQ_FAC_SPEED 2
285 #define SEQ_FAC_OPACITY 3
286
287 /* ********* Curve (ID_CU) *********** */
288
289 #define CU_TOTIPO 1
290 #define CU_TOTNAM 1
291
292 #define CU_SPEED 1
293
294 /* ********* ShapeKey (ID_KE) *********** */
295
296 #define KEY_TOTIPO 64
297 #define KEY_TOTNAM 64
298
299 #define KEY_SPEED 0
300 #define KEY_NR 1
301
302 /* ********* World (ID_WO) *********** */
303
304 #define WO_TOTIPO 29
305 #define WO_TOTNAM 16
306
307 #define WO_HOR_R 1
308 #define WO_HOR_G 2
309 #define WO_HOR_B 3
310 #define WO_ZEN_R 4
311 #define WO_ZEN_G 5
312 #define WO_ZEN_B 6
313
314 #define WO_EXPOS 7
315
316 #define WO_MISI 8
317 #define WO_MISTDI 9
318 #define WO_MISTSTA 10
319 #define WO_MISTHI 11
320
321 /* Stars are deprecated */
322 #define WO_STAR_R 12
323 #define WO_STAR_G 13
324 #define WO_STAR_B 14
325 #define WO_STARDIST 15
326 #define WO_STARSIZE 16
327
328 /* ********** Light (ID_LA) ********** */
329
330 #define LA_TOTIPO 21
331 #define LA_TOTNAM 10
332
333 #define LA_ENERGY 1
334 #define LA_COL_R 2
335 #define LA_COL_G 3
336 #define LA_COL_B 4
337 #define LA_DIST 5
338 #define LA_SPOTSI 6
339 #define LA_SPOTBL 7
340 #define LA_QUAD1 8
341 #define LA_QUAD2 9
342 #define LA_HALOINT 10
343
344 /* ********* Camera (ID_CA) ************ */
345
346 #define CAM_TOTIPO 7
347 #define CAM_TOTNAM 7
348
349 #define CAM_LENS 1
350 #define CAM_STA 2
351 #define CAM_END 3
352
353 /* yafray aperture & focal distance curves */
354 #define CAM_YF_APERT 4
355 #define CAM_YF_FDIST 5
356
357 #define CAM_SHIFT_X 6
358 #define CAM_SHIFT_Y 7
359
360 /* ********* Sound (ID_SO) *********** */
361
362 #define SND_TOTIPO 4
363 #define SND_TOTNAM 4
364
365 #define SND_VOLUME 1
366 #define SND_PITCH 2
367 #define SND_PANNING 3
368 #define SND_ATTEN 4
369
370 /* ******* PoseChannel (ID_PO) ********* */
371
372 #define AC_TOTIPO 13
373 #define AC_TOTNAM 13
374
375 #define AC_LOC_X 1
376 #define AC_LOC_Y 2
377 #define AC_LOC_Z 3
378
379 #define AC_SIZE_X 13
380 #define AC_SIZE_Y 14
381 #define AC_SIZE_Z 15
382
383 #define AC_EUL_X 16
384 #define AC_EUL_Y 17
385 #define AC_EUL_Z 18
386
387 #define AC_QUAT_W 25
388 #define AC_QUAT_X 26
389 #define AC_QUAT_Y 27
390 #define AC_QUAT_Z 28
391
392 /* ******** Constraint (ID_CO) ********** */
393
394 #define CO_TOTIPO 2
395 #define CO_TOTNAM 2
396
397 #define CO_ENFORCE 1
398 #define CO_HEADTAIL 2
399
400 /* ****** FluidSim (ID_FLUIDSIM) ****** */
401
402 #define FLUIDSIM_TOTIPO 13
403 #define FLUIDSIM_TOTNAM 13
404
405 #define FLUIDSIM_VISC 1
406 #define FLUIDSIM_TIME 2
407
408 #define FLUIDSIM_GRAV_X 3
409 #define FLUIDSIM_GRAV_Y 4
410 #define FLUIDSIM_GRAV_Z 5
411
412 #define FLUIDSIM_VEL_X 6
413 #define FLUIDSIM_VEL_Y 7
414 #define FLUIDSIM_VEL_Z 8
415
416 #define FLUIDSIM_ACTIVE 9
417
418 #define FLUIDSIM_ATTR_FORCE_STR 10
419 #define FLUIDSIM_ATTR_FORCE_RADIUS 11
420 #define FLUIDSIM_VEL_FORCE_STR 12
421 #define FLUIDSIM_VEL_FORCE_RADIUS 13
422
423 /* ******************** */
424 /* particle ipos */
425
426 /* ******* Particle (ID_PA) ******** */
427 #define PART_TOTIPO 25
428 #define PART_TOTNAM 25
429
430 #define PART_EMIT_FREQ 1
431 /* #define PART_EMIT_LIFE   2 */ /*UNUSED*/
432 #define PART_EMIT_VEL 3
433 #define PART_EMIT_AVE 4
434 /* #define PART_EMIT_SIZE   5 */ /*UNUSED*/
435
436 #define PART_AVE 6
437 #define PART_SIZE 7
438 #define PART_DRAG 8
439 #define PART_BROWN 9
440 #define PART_DAMP 10
441 #define PART_LENGTH 11
442 #define PART_CLUMP 12
443
444 #define PART_GRAV_X 13
445 #define PART_GRAV_Y 14
446 #define PART_GRAV_Z 15
447
448 #define PART_KINK_AMP 16
449 #define PART_KINK_FREQ 17
450 #define PART_KINK_SHAPE 18
451
452 #define PART_BB_TILT 19
453
454 #define PART_PD_FSTR 20
455 #define PART_PD_FFALL 21
456 #define PART_PD_FMAXD 22
457
458 #define PART_PD2_FSTR 23
459 #define PART_PD2_FFALL 24
460 #define PART_PD2_FMAXD 25
461
462 /* -------------------- Defines: Flags and Types ------------------ */
463
464 /* ----- IPO Curve Defines ------- */
465
466 /* icu->vartype */
467 #define IPO_CHAR 0
468 #define IPO_SHORT 1
469 #define IPO_INT 2
470 #define IPO_LONG 3
471 #define IPO_FLOAT 4
472 #define IPO_DOUBLE 5
473 #define IPO_FLOAT_DEGR 6
474
475 /* very special case, in keys */
476 #define IPO_BEZTRIPLE 100
477 #define IPO_BPOINT 101
478
479 /* icu->vartype */
480 #define IPO_BITS 16
481 #define IPO_CHAR_BIT 16
482 #define IPO_SHORT_BIT 17
483 #define IPO_INT_BIT 18
484
485 /* icu->ipo:  the type of curve */
486 #define IPO_CONST 0
487 #define IPO_LIN 1
488 #define IPO_BEZ 2
489 /* not used yet */
490 #define IPO_MIXED 3
491
492 /* icu->extrap */
493 #define IPO_HORIZ 0
494 #define IPO_DIR 1
495 #define IPO_CYCL 2
496 #define IPO_CYCLX 3
497
498 /* icu->flag */
499 #define IPO_VISIBLE 1
500 #define IPO_SELECT 2
501 #define IPO_EDIT 4
502 #define IPO_LOCK 8
503 #define IPO_AUTO_HORIZ 16
504 #define IPO_ACTIVE 32
505 #define IPO_PROTECT 64
506 #define IPO_MUTE 128
507
508 /* ---------- IPO Drivers ----------- */
509
510 /* offset in driver->name for finding second posechannel for rot-diff  */
511 #define DRIVER_NAME_OFFS 32
512
513 /* driver->type */
514 #define IPO_DRIVER_TYPE_NORMAL 0
515 #define IPO_DRIVER_TYPE_PYTHON 1
516
517 /* driver->flag */
518 /* invalid flag: currently only used for buggy pydriver expressions */
519 #define IPO_DRIVER_FLAG_INVALID (1 << 0)
520
521 #endif