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