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