== file browser ==
[blender.git] / source / blender / makesdna / DNA_nla_types.h
1 /*
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29
30 #ifndef DNA_NLA_TYPES_H
31 #define DNA_NLA_TYPES_H
32
33 /** \file DNA_nla_types.h
34  *  \ingroup DNA
35  */
36
37 #include "DNA_listBase.h"
38
39 struct bAction;
40 struct Ipo;
41 struct Object;
42
43 /* simple uniform modifier structure, assumed it can hold all type info */
44 typedef struct bActionModifier {
45         struct bActionModifier *next, *prev;
46         short type, flag;
47         char channel[32];
48         
49         /* noise modifier */
50         float noisesize, turbul;
51         short channels;
52         
53         /* path deform modifier */
54         short no_rot_axis;
55         struct Object *ob;      
56 } bActionModifier;
57
58 /* NLA-Modifier Types */
59 #define ACTSTRIP_MOD_DEFORM             0
60 #define ACTSTRIP_MOD_NOISE              1
61 #define ACTSTRIP_MOD_OOMPH              2
62
63 typedef struct bActionStrip {
64         struct bActionStrip *next, *prev;
65         short   flag, mode;
66         short   stride_axis;            /* axis 0=x, 1=y, 2=z */
67         short   curmod;                         /* current modifier for buttons */
68
69         struct  Ipo *ipo;                       /* Blending ipo - was used for some old NAN era experiments. Non-functional currently. */
70         struct  bAction *act;           /* The action referenced by this strip */
71         struct  Object *object;         /* For groups, the actual object being nla'ed */
72         float   start, end;                     /* The range of frames covered by this strip */
73         float   actstart, actend;       /* The range of frames taken from the action */
74         float   actoffs;                        /* Offset within action, for cycles and striding */
75         float   stridelen;                      /* The stridelength (considered when flag & ACT_USESTRIDE) */
76         float   repeat;                         /* The number of times to repeat the action range */
77         float   scale;                          /* The amount the action range is scaled by */
78
79         float   blendin, blendout;      /* The number of frames on either end of the strip's length to fade in/out */
80         
81         char    stridechannel[32];      /* Instead of stridelen, it uses an action channel */
82         char    offs_bone[32];          /* if repeat, use this bone/channel for defining offset */
83         
84         ListBase modifiers;                     /* modifier stack */
85 } bActionStrip;
86
87 /* strip->mode (these defines aren't really used, but are here for reference) */
88 #define ACTSTRIPMODE_BLEND              0
89 #define ACTSTRIPMODE_ADD                1
90
91 /* strip->flag */
92 typedef enum eActStrip_Flag {
93         ACTSTRIP_SELECT                 = (1<<0),
94         ACTSTRIP_USESTRIDE              = (1<<1),
95         ACTSTRIP_BLENDTONEXT    = (1<<2),       /* Not implemented. Is not used anywhere */
96         ACTSTRIP_HOLDLASTFRAME  = (1<<3),
97         ACTSTRIP_ACTIVE                 = (1<<4),
98         ACTSTRIP_LOCK_ACTION    = (1<<5),
99         ACTSTRIP_MUTE                   = (1<<6),
100         ACTSTRIP_REVERSE                = (1<<7),       /* This has yet to be implemented. To indicate that a strip should be played backwards */
101         ACTSTRIP_CYCLIC_USEX    = (1<<8),
102         ACTSTRIP_CYCLIC_USEY    = (1<<9),
103         ACTSTRIP_CYCLIC_USEZ    = (1<<10),
104         ACTSTRIP_AUTO_BLENDS    = (1<<11)
105 } eActStrip_Flag;
106
107 #endif
108