diff options
Diffstat (limited to 'public/keyframe/keyframe.h')
| -rw-r--r-- | public/keyframe/keyframe.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/public/keyframe/keyframe.h b/public/keyframe/keyframe.h new file mode 100644 index 0000000..b2cfd27 --- /dev/null +++ b/public/keyframe/keyframe.h @@ -0,0 +1,42 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Keyframed animation header +// shared between game and tools +//=============================================================================// + +#ifndef KEYFRAME_H +#define KEYFRAME_H +#pragma once + + +class IPositionInterpolator +{ +public: + virtual void Release() = 0; + + virtual void GetDetails( char **outName, int *outMinKeyReq, int *outMaxKeyReq ) = 0; + virtual void SetKeyPosition( int keyNum, Vector const &vPos ) = 0; + virtual void InterpolatePosition( float time, Vector &vOut ) = 0; + + // Returns true if the key causes a change that changes the interpolated positions. + virtual bool ProcessKey( char const *pName, char const *pValue ) = 0; +}; + + +// Time modifiers. +int Motion_GetNumberOfTimeModifiers( void ); +bool Motion_GetTimeModifierDetails( int timeInterpNum, const char **outName ); +bool Motion_CalculateModifiedTime( float time, int timeModifierFuncNum, float *outNewTime ); + +// Position interpolators. +int Motion_GetNumberOfPositionInterpolators( void ); +IPositionInterpolator* Motion_GetPositionInterpolator( int interpNum ); + +// Rotation interpolators. +int Motion_GetNumberOfRotationInterpolators( void ); +bool Motion_GetRotationInterpolatorDetails( int rotInterpNum, char **outName, int *outMinKeyReq, int *outMaxKeyReq ); +bool Motion_InterpolateRotation( float time, int interpFuncNum, Quaternion &outQuatRotation ); +bool Motion_SetKeyAngles( int keyNum, Quaternion &quatAngles ); + + +#endif // KEYFRAME_H |