Blender V2.61 - r43446
|
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