This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

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