You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.0 KiB
68 lines
2.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef MAPANIMATOR_H |
|
#define MAPANIMATOR_H |
|
#pragma once |
|
|
|
|
|
#include "MapClass.h" |
|
#include "MapKeyFrame.h" |
|
|
|
|
|
class CMapAnimator : public CMapKeyFrame |
|
{ |
|
public: |
|
|
|
DECLARE_MAPCLASS( CMapAnimator, CMapKeyFrame ); |
|
|
|
// |
|
// Factories. |
|
// |
|
static CMapClass *CreateMapAnimator(CHelperInfo *pHelperInfo, CMapEntity *pParent); |
|
|
|
// |
|
// Construction/destruction. |
|
// |
|
CMapAnimator(); |
|
~CMapAnimator(); |
|
|
|
virtual size_t GetSize( void ) { return sizeof(*this); } |
|
virtual CMapClass *Copy(bool bUpdateDependencies); |
|
virtual CMapClass *CopyFrom(CMapClass *pFrom, bool bUpdateDependencies); |
|
|
|
virtual void UpdateAnimation( float animTime ); |
|
virtual void OnClone( CMapClass *pClone, CMapWorld *pWorld, const CMapObjectList &OriginalList, CMapObjectList &NewList ); |
|
virtual bool GetTransformMatrix( VMatrix& matrix ); |
|
virtual void OnParentKeyChanged( const char* key, const char* value ); |
|
virtual CMapAnimator *GetAnimator(void) { return this; } |
|
void RebuildPath( void ); |
|
|
|
float GetKeyFramesAtTime( float time, CMapKeyFrame *&pKeyFrame, CMapKeyFrame *&pPrevKeyFrame ); |
|
CMapEntity *CreateNewKeyFrame( float time ); |
|
void GetAnimationAtTime( float animTime, Vector& newOrigin, Quaternion &newAngles ); |
|
static void GetAnimationAtTime( CMapKeyFrame *currentKey, CMapKeyFrame *pPrevKey, float animTime, Vector& newOrigin, Quaternion &newAngles, int posInterpolator, int rotInterpolator ); |
|
|
|
int GetNumKeysChanged() {return m_nKeysChanged;} |
|
|
|
private: |
|
// Used by the keys to detect when changes need to be sent to the position interpolators. |
|
int m_nKeysChanged; |
|
|
|
VMatrix m_CoordFrame; |
|
bool m_bCurrentlyAnimating; |
|
CMapKeyFrame *m_pCurrentKeyFrame; // keyframe it's currently at |
|
|
|
int m_iTimeModifier; |
|
int m_iPositionInterpolator; |
|
int m_iRotationInterpolator; |
|
|
|
friend CMapKeyFrame; |
|
}; |
|
|
|
|
|
#endif // MAPANIMATOR_H
|
|
|