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