Blender V2.61 - r43446

DNA_nla_types.h

Go to the documentation of this file.
00001 /*
00002  * ***** BEGIN GPL LICENSE BLOCK *****
00003  *
00004  * This program is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU General Public License
00006  * as published by the Free Software Foundation; either version 2
00007  * of the License, or (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software Foundation,
00016  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00017  *
00018  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
00019  * All rights reserved.
00020  *
00021  * The Original Code is: all of this file.
00022  *
00023  * Contributor(s): none yet.
00024  *
00025  * ***** END GPL LICENSE BLOCK *****
00026  */
00027 
00032 #ifndef DNA_NLA_TYPES_H
00033 #define DNA_NLA_TYPES_H
00034 
00035 #include "DNA_listBase.h"
00036 
00037 struct bAction;
00038 struct Ipo;
00039 struct Object;
00040 
00041 /* simple uniform modifier structure, assumed it can hold all type info */
00042 typedef struct bActionModifier {
00043     struct bActionModifier *next, *prev;
00044     short type, flag;
00045     char channel[32];
00046     
00047     /* noise modifier */
00048     float noisesize, turbul;
00049     short channels;
00050     
00051     /* path deform modifier */
00052     short no_rot_axis;
00053     struct Object *ob;  
00054 } bActionModifier;
00055 
00056 /* NLA-Modifier Types */
00057 #define ACTSTRIP_MOD_DEFORM     0
00058 #define ACTSTRIP_MOD_NOISE      1
00059 #define ACTSTRIP_MOD_OOMPH      2
00060 
00061 typedef struct bActionStrip {
00062     struct bActionStrip *next, *prev;
00063     short   flag, mode;
00064     short   stride_axis;        /* axis 0=x, 1=y, 2=z */
00065     short   curmod;             /* current modifier for buttons */
00066 
00067     struct  Ipo *ipo;           /* Blending ipo - was used for some old NAN era experiments. Non-functional currently. */
00068     struct  bAction *act;       /* The action referenced by this strip */
00069     struct  Object *object;     /* For groups, the actual object being nla'ed */
00070     float   start, end;         /* The range of frames covered by this strip */
00071     float   actstart, actend;   /* The range of frames taken from the action */
00072     float   actoffs;            /* Offset within action, for cycles and striding */
00073     float   stridelen;          /* The stridelength (considered when flag & ACT_USESTRIDE) */
00074     float   repeat;             /* The number of times to repeat the action range */
00075     float   scale;              /* The amount the action range is scaled by */
00076 
00077     float   blendin, blendout;  /* The number of frames on either end of the strip's length to fade in/out */
00078     
00079     char    stridechannel[32];  /* Instead of stridelen, it uses an action channel */
00080     char    offs_bone[32];      /* if repeat, use this bone/channel for defining offset */
00081     
00082     ListBase modifiers;         /* modifier stack */
00083 } bActionStrip;
00084 
00085 /* strip->mode (these defines aren't really used, but are here for reference) */
00086 #define ACTSTRIPMODE_BLEND      0
00087 #define ACTSTRIPMODE_ADD        1
00088 
00089 /* strip->flag */
00090 typedef enum eActStrip_Flag {
00091     ACTSTRIP_SELECT         = (1<<0),
00092     ACTSTRIP_USESTRIDE      = (1<<1),
00093     ACTSTRIP_BLENDTONEXT    = (1<<2),   /* Not implemented. Is not used anywhere */
00094     ACTSTRIP_HOLDLASTFRAME  = (1<<3),
00095     ACTSTRIP_ACTIVE         = (1<<4),
00096     ACTSTRIP_LOCK_ACTION    = (1<<5),
00097     ACTSTRIP_MUTE           = (1<<6),
00098     ACTSTRIP_REVERSE        = (1<<7),   /* This has yet to be implemented. To indicate that a strip should be played backwards */
00099     ACTSTRIP_CYCLIC_USEX    = (1<<8),
00100     ACTSTRIP_CYCLIC_USEY    = (1<<9),
00101     ACTSTRIP_CYCLIC_USEZ    = (1<<10),
00102     ACTSTRIP_AUTO_BLENDS    = (1<<11)
00103 } eActStrip_Flag;
00104 
00105 #endif
00106