diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /hammer/mapkeyframe.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'hammer/mapkeyframe.h')
| -rw-r--r-- | hammer/mapkeyframe.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/hammer/mapkeyframe.h b/hammer/mapkeyframe.h new file mode 100644 index 0000000..17d6356 --- /dev/null +++ b/hammer/mapkeyframe.h @@ -0,0 +1,98 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef MAPKEYFRAME_H +#define MAPKEYFRAME_H +#pragma once + + +#include "MapHelper.h" +#include "hammer_mathlib.h" +#include "keyframe/keyframe.h" + + +class CMapAnimator; +class CHelperInfo; + + +class CMapKeyFrame : public CMapHelper +{ +public: + + DECLARE_MAPCLASS(CMapKeyFrame,CMapHelper); + + // + // Factories. + // + static CMapClass *CreateMapKeyFrame(CHelperInfo *pHelperInfo, CMapEntity *pParent); + + // + // Construction/destruction. + // + CMapKeyFrame(void); + ~CMapKeyFrame(void); + + void CalcBounds(BOOL bFullUpdate = FALSE); + + virtual size_t GetSize( void ) { return sizeof(*this); } + void Render3D(CRender3D *pRender); + virtual CMapClass *Copy(bool bUpdateDependencies); + virtual CMapClass *CopyFrom(CMapClass *pFrom, bool bUpdateDependencies); + virtual void SetOrigin( Vector& pfOrigin ); + virtual void GetQuatAngles( Quaternion &outQuat ); + + virtual void OnClone( CMapClass *pClone, CMapWorld *pWorld, const CMapObjectList &OriginalList, CMapObjectList &NewList ); + virtual void OnNotifyDependent(CMapClass *pObject, Notify_Dependent_t eNotifyType); + virtual void OnParentKeyChanged( const char* key, const char* value ); + virtual void OnRemoveFromWorld( CMapWorld *pWorld, bool bNotifyChildren ); + + virtual void UpdateDependencies(CMapWorld *pWorld, CMapClass *pObject); + + bool IsAnyKeyInSequenceSelected( void ); + + CMapKeyFrame *NextKeyFrame( void ); + + void SetAnimator(CMapAnimator *pAnimator); + virtual CMapAnimator *GetAnimator(void) { return m_pAnimator; } + + CMapEntity *GetParentEntity( void ); + + float GetRemainingTime( CMapObjectList *pVisited = NULL ); + float MoveTime( void ) { return m_flMoveTime; } + + IPositionInterpolator* SetupPositionInterpolator( int iInterpolator ); + +protected: + + void SetNextKeyFrame( CMapKeyFrame *pNext ); + void RecalculateTimeFromSpeed( void ); + void CheckForKeyFrameNextKeyLoops( void ); + void BuildPathSegment( CMapKeyFrame *pPrev ); + + IPositionInterpolator *m_pPositionInterpolator; + int m_iPositionInterpolator; + int m_iChangeFrame; + + Quaternion m_qAngles; + QAngle m_Angles; + float m_flMoveTime; // time it takes to travel to next key frame + float m_flSpeed; // average speed travelling to next time; if this is non-zero, m_flMoveTime is calculated from it + CMapAnimator *m_pAnimator; // The animator that is at the head of our path. + CMapKeyFrame *m_pNextKeyFrame; // The next keyframe in our path. + + enum + { + MAX_LINE_POINTS = 10, + }; + + Vector m_LinePoints[MAX_LINE_POINTS]; + bool m_bRebuildPath; + friend CMapAnimator; +}; + + +#endif // MAPKEYFRAME_H |