//===== Copyright (c) 1996-2009, Valve Corporation, All rights reserved. ==== // // Animation commands // //=========================================================================== #ifndef DMEANIMCMD_H #define DMEANIMCMD_H #ifdef _WIN32 #pragma once #endif // Valve includes #include "datamodel/dmelement.h" #include "datamodel/dmattributevar.h" #include "movieobjects/dmelog.h" // Forward declarations class CDmeMotionControl; class CDmeSequenceBase; class CDmeSequence; //----------------------------------------------------------------------------- // Animation commands //----------------------------------------------------------------------------- class CDmeAnimCmd : public CDmElement { DEFINE_ELEMENT( CDmeAnimCmd, CDmElement ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } bool HasAssemblyDmElement() const { return Q_strcmp( "", GetAssemblyDmElementTypeString() ) != 0; } }; //----------------------------------------------------------------------------- // QC fixuploop //----------------------------------------------------------------------------- class CDmeAnimCmdFixupLoop : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdFixupLoop, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString(); CDmaVar< int > m_nStartFrame; CDmaVar< int > m_nEndFrame; }; //----------------------------------------------------------------------------- // QC weightlisrt //----------------------------------------------------------------------------- class CDmeAnimCmdWeightList : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdWeightList, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } CDmaString m_sWeightListName; }; //----------------------------------------------------------------------------- // QC subtract //----------------------------------------------------------------------------- class CDmeAnimCmdSubtract : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdSubtract, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString(); CDmaElement< CDmeSequenceBase > m_eAnimation; CDmaVar< int > m_nFrame; }; //----------------------------------------------------------------------------- // QC presubtract //----------------------------------------------------------------------------- class CDmeAnimCmdPreSubtract : public CDmeAnimCmdSubtract { DEFINE_ELEMENT( CDmeAnimCmdPreSubtract, CDmeAnimCmdSubtract ); public: static const char *GetAssemblyDmElementTypeString(); }; //----------------------------------------------------------------------------- // QC align, alignto, alignbone, alignboneto // // align animationName, boneName = "", any motion, sourceFrame, destinationFrame // alignTo animationName, boneName = "", motion = X | Y, sourceFrame = 0, destinationFrame = 0 // alignBone animationName, bone, any motion, sourceFrame, destinationFrame // alignBoneTo animationName, bone, motion = X | Y, sourceFrame = 0, destinationFrame = 0 //----------------------------------------------------------------------------- class CDmeAnimCmdAlign : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdAlign, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } CDmaElement< CDmeSequenceBase > m_eAnimation; CDmaString m_sBoneName; CDmaVar< int > m_nSourceFrame; CDmaVar< int > m_nDestinatonFrame; CDmaElement< CDmeMotionControl > m_eMotionControl; }; // TODO: QC match // TODO: QC matchblend // TODO: QC worldspaceblend // TODO: QC worldspaceblendloop //----------------------------------------------------------------------------- // QC rotateTo //----------------------------------------------------------------------------- class CDmeAnimCmdRotateTo : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdRotateTo, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString(); CDmaVar< float > m_flAngle; // Specified in degrees }; // ikRule, ikFixup handled separately //----------------------------------------------------------------------------- // QC walkframe //----------------------------------------------------------------------------- class CDmeAnimCmdWalkFrame : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdWalkFrame, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } CDmaElement< CDmeMotionControl > m_eMotionControl; CDmaVar< int > m_nEndFrame; }; // TODO: QC walkalignto // TODO: QC walkalign //----------------------------------------------------------------------------- // QC derivative //----------------------------------------------------------------------------- class CDmeAnimCmdDerivative : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdDerivative, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } CDmaVar< float > m_flScale; }; // TODO: QC noanimation //----------------------------------------------------------------------------- // QC lineardelta //----------------------------------------------------------------------------- class CDmeAnimCmdLinearDelta : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdLinearDelta, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } }; //----------------------------------------------------------------------------- // QC splinedelta //----------------------------------------------------------------------------- class CDmeAnimCmdSplineDelta : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdSplineDelta, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } }; //----------------------------------------------------------------------------- // QC compress //----------------------------------------------------------------------------- class CDmeAnimCmdCompress : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdCompress, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } CDmaVar< int > m_nSkipFrames; }; //----------------------------------------------------------------------------- // QC numframes //----------------------------------------------------------------------------- class CDmeAnimCmdNumFrames : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdNumFrames, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } CDmaVar< int > m_nFrames; }; // TODO: counterrotate // TODO: counterrotateto // TODO: localhierarchy //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- class CDmeAnimCmdLocalHierarchy : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdLocalHierarchy, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } CDmaString m_sBoneName; CDmaString m_sParentBoneName; CDmaVar< float > m_flStartFrame; CDmaVar< float > m_flPeakFrame; CDmaVar< float > m_flTailFrame; CDmaVar< float > m_flEndFrame; }; //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- class CDmeAnimCmdNoAnimation : public CDmeAnimCmd { DEFINE_ELEMENT( CDmeAnimCmdNoAnimation, CDmeAnimCmd ); public: static const char *GetAssemblyDmElementTypeString() { return ""; } CDmaVar< bool > m_bNullAttr; }; #endif // DMEANIMCMD_H