/* * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. * All rights reserved. */ /** \file * \ingroup DNA */ #pragma once #include "DNA_listBase.h" #ifdef __cplusplus extern "C" { #endif struct Ipo; struct Object; struct bAction; /** Simple uniform modifier structure, assumed it can hold all type info. */ typedef struct bActionModifier { struct bActionModifier *next, *prev; short type, flag; char channel[32]; /* noise modifier */ float noisesize, turbul; short channels; /* path deform modifier */ short no_rot_axis; struct Object *ob; } bActionModifier; /* NLA-Modifier Types (UNUSED) */ // #define ACTSTRIP_MOD_DEFORM 0 // #define ACTSTRIP_MOD_NOISE 1 typedef struct bActionStrip { struct bActionStrip *next, *prev; short flag, mode; /** Axis 0=x, 1=y, 2=z. */ short stride_axis; /** Current modifier for buttons. */ short curmod; /** Blending ipo - was used for some old NAN era experiments. Non-functional currently. */ struct Ipo *ipo; /** The action referenced by this strip. */ struct bAction *act; /** For groups, the actual object being nla'ed. */ struct Object *object; /** The range of frames covered by this strip. */ float start, end; /** The range of frames taken from the action. */ float actstart, actend; /** Offset within action, for cycles and striding. */ float actoffs; /** The stridelength (considered when flag & ACT_USESTRIDE). */ float stridelen; /** The number of times to repeat the action range. */ float repeat; /** The amount the action range is scaled by. */ float scale; /** The number of frames on either end of the strip's length to fade in/out. */ float blendin, blendout; /** Instead of stridelen, it uses an action channel. */ char stridechannel[32]; /** If repeat, use this bone/channel for defining offset. */ char offs_bone[32]; /** Modifier stack. */ ListBase modifiers; } bActionStrip; /* strip->mode (these defines aren't really used, but are here for reference) */ #define ACTSTRIPMODE_BLEND 0 #define ACTSTRIPMODE_ADD 1 /** #bActionStrip.flag */ typedef enum eActStrip_Flag { ACTSTRIP_SELECT = (1 << 0), ACTSTRIP_USESTRIDE = (1 << 1), /* Not implemented. Is not used anywhere */ /* ACTSTRIP_BLENDTONEXT = (1 << 2), */ /* UNUSED */ ACTSTRIP_HOLDLASTFRAME = (1 << 3), ACTSTRIP_ACTIVE = (1 << 4), ACTSTRIP_LOCK_ACTION = (1 << 5), ACTSTRIP_MUTE = (1 << 6), /* This has yet to be implemented. To indicate that a strip should be played backwards */ ACTSTRIP_REVERSE = (1 << 7), ACTSTRIP_AUTO_BLENDS = (1 << 11), } eActStrip_Flag; #ifdef __cplusplus } #endif