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