MBall cleanup: remove unused F_ERROR references, als fix/enhance BKE_mball_basis_find()
[blender.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 /** \file DNA_nla_types.h
29  *  \ingroup DNA
30  */
31
32 #ifndef __DNA_NLA_TYPES_H__
33 #define __DNA_NLA_TYPES_H__
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 (UNUSED) */
57 // #define ACTSTRIP_MOD_DEFORM          0
58 // #define ACTSTRIP_MOD_NOISE           1
59
60 typedef struct bActionStrip {
61         struct bActionStrip *next, *prev;
62         short   flag, mode;
63         short   stride_axis;            /* axis 0=x, 1=y, 2=z */
64         short   curmod;                         /* current modifier for buttons */
65
66         struct  Ipo *ipo;                       /* Blending ipo - was used for some old NAN era experiments. Non-functional currently. */
67         struct  bAction *act;           /* The action referenced by this strip */
68         struct  Object *object;         /* For groups, the actual object being nla'ed */
69         float   start, end;                     /* The range of frames covered by this strip */
70         float   actstart, actend;       /* The range of frames taken from the action */
71         float   actoffs;                        /* Offset within action, for cycles and striding */
72         float   stridelen;                      /* The stridelength (considered when flag & ACT_USESTRIDE) */
73         float   repeat;                         /* The number of times to repeat the action range */
74         float   scale;                          /* The amount the action range is scaled by */
75
76         float   blendin, blendout;      /* The number of frames on either end of the strip's length to fade in/out */
77         
78         char    stridechannel[32];      /* Instead of stridelen, it uses an action channel */
79         char    offs_bone[32];          /* if repeat, use this bone/channel for defining offset */
80         
81         ListBase modifiers;                     /* modifier stack */
82 } bActionStrip;
83
84 /* strip->mode (these defines aren't really used, but are here for reference) */
85 #define ACTSTRIPMODE_BLEND              0
86 #define ACTSTRIPMODE_ADD                1
87
88 /* strip->flag */
89 typedef enum eActStrip_Flag {
90         ACTSTRIP_SELECT                 = (1<<0),
91         ACTSTRIP_USESTRIDE              = (1<<1),
92         ACTSTRIP_BLENDTONEXT    = (1<<2),       /* Not implemented. Is not used anywhere */
93         ACTSTRIP_HOLDLASTFRAME  = (1<<3),
94         ACTSTRIP_ACTIVE                 = (1<<4),
95         ACTSTRIP_LOCK_ACTION    = (1<<5),
96         ACTSTRIP_MUTE                   = (1<<6),
97         ACTSTRIP_REVERSE                = (1<<7),       /* This has yet to be implemented. To indicate that a strip should be played backwards */
98         ACTSTRIP_CYCLIC_USEX    = (1<<8),
99         ACTSTRIP_CYCLIC_USEY    = (1<<9),
100         ACTSTRIP_CYCLIC_USEZ    = (1<<10),
101         ACTSTRIP_AUTO_BLENDS    = (1<<11)
102 } eActStrip_Flag;
103
104 #endif
105