Buildbot: Preliminary support for CentOS based builder
[blender.git] / source / blender / makesdna / DNA_nla_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_NLA_TYPES_H__
25 #define __DNA_NLA_TYPES_H__
26
27 #include "DNA_listBase.h"
28
29 struct Ipo;
30 struct Object;
31 struct bAction;
32
33 /* simple uniform modifier structure, assumed it can hold all type info */
34 typedef struct bActionModifier {
35   struct bActionModifier *next, *prev;
36   short type, flag;
37   char channel[32];
38
39   /* noise modifier */
40   float noisesize, turbul;
41   short channels;
42
43   /* path deform modifier */
44   short no_rot_axis;
45   struct Object *ob;
46 } bActionModifier;
47
48 /* NLA-Modifier Types (UNUSED) */
49 // #define ACTSTRIP_MOD_DEFORM      0
50 // #define ACTSTRIP_MOD_NOISE       1
51
52 typedef struct bActionStrip {
53   struct bActionStrip *next, *prev;
54   short flag, mode;
55   /** Axis 0=x, 1=y, 2=z. */
56   short stride_axis;
57   /** Current modifier for buttons. */
58   short curmod;
59
60   /** Blending ipo - was used for some old NAN era experiments. Non-functional currently. */
61   struct Ipo *ipo;
62   /** The action referenced by this strip. */
63   struct bAction *act;
64   /** For groups, the actual object being nla'ed. */
65   struct Object *object;
66   /** The range of frames covered by this strip. */
67   float start, end;
68   /** The range of frames taken from the action. */
69   float actstart, actend;
70   /** Offset within action, for cycles and striding. */
71   float actoffs;
72   /** The stridelength (considered when flag & ACT_USESTRIDE). */
73   float stridelen;
74   /** The number of times to repeat the action range. */
75   float repeat;
76   /** The amount the action range is scaled by. */
77   float scale;
78
79   /** The number of frames on either end of the strip's length to fade in/out. */
80   float blendin, blendout;
81
82   /** Instead of stridelen, it uses an action channel. */
83   char stridechannel[32];
84   /** If repeat, use this bone/channel for defining offset. */
85   char offs_bone[32];
86
87   /** Modifier stack. */
88   ListBase modifiers;
89 } bActionStrip;
90
91 /* strip->mode (these defines aren't really used, but are here for reference) */
92 #define ACTSTRIPMODE_BLEND 0
93 #define ACTSTRIPMODE_ADD 1
94
95 /* strip->flag */
96 typedef enum eActStrip_Flag {
97   ACTSTRIP_SELECT = (1 << 0),
98   ACTSTRIP_USESTRIDE = (1 << 1),
99   /* Not implemented. Is not used anywhere */
100   ACTSTRIP_BLENDTONEXT = (1 << 2),
101   ACTSTRIP_HOLDLASTFRAME = (1 << 3),
102   ACTSTRIP_ACTIVE = (1 << 4),
103   ACTSTRIP_LOCK_ACTION = (1 << 5),
104   ACTSTRIP_MUTE = (1 << 6),
105   /* This has yet to be implemented. To indicate that a strip should be played backwards */
106   ACTSTRIP_REVERSE = (1 << 7),
107   ACTSTRIP_CYCLIC_USEX = (1 << 8),
108   ACTSTRIP_CYCLIC_USEY = (1 << 9),
109   ACTSTRIP_CYCLIC_USEZ = (1 << 10),
110   ACTSTRIP_AUTO_BLENDS = (1 << 11),
111 } eActStrip_Flag;
112
113 #endif