summaryrefslogtreecommitdiff
path: root/hammer/mapkeyframe.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /hammer/mapkeyframe.h
downloadarchived-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.h98
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