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