45 lines
1.7 KiB
C++
45 lines
1.7 KiB
C++
//========= 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
|