Team Fortress 2 Source Code as on 22/4/2020
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.

107 lines
3.0 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. //=======================================================================================//
  4. #ifndef IREPLAYPERFORMANCECONTROLLER_H
  5. #define IREPLAYPERFORMANCECONTROLLER_H
  6. #ifdef _WIN32
  7. #pragma once
  8. #endif
  9. //----------------------------------------------------------------------------------------
  10. #include "interface.h"
  11. #include "tier1/strtools.h"
  12. //----------------------------------------------------------------------------------------
  13. class IReplayPerformanceEditor;
  14. class CReplay;
  15. class Vector;
  16. class QAngle;
  17. class CReplayPerformance;
  18. //----------------------------------------------------------------------------------------
  19. // These values are what we use to represent
  20. struct SetViewParams_t
  21. {
  22. SetViewParams_t() { V_memset( this, 0, sizeof( SetViewParams_t ) ); }
  23. SetViewParams_t( float flTime, Vector *pOrigin, QAngle *pAngles, float flFov, float flAccel,
  24. float flSpeed, float flRotFilter )
  25. : m_flTime( flTime ),
  26. m_pOrigin( pOrigin ),
  27. m_pAngles( pAngles ),
  28. m_flFov( flFov ),
  29. m_flAccel( flAccel ),
  30. m_flSpeed( flSpeed ),
  31. m_flRotationFilter( flRotFilter )
  32. {
  33. }
  34. float m_flTime;
  35. Vector *m_pOrigin;
  36. QAngle *m_pAngles;
  37. float m_flFov;
  38. // Right now only used for updating UI during playback:
  39. float m_flAccel;
  40. float m_flSpeed;
  41. float m_flRotationFilter;
  42. };
  43. //----------------------------------------------------------------------------------------
  44. class IReplayPerformanceController : public IBaseInterface
  45. {
  46. public:
  47. virtual void SetEditor( IReplayPerformanceEditor *pEditor ) = 0;
  48. virtual bool IsPlaybackDataLeft() = 0;
  49. virtual void StartRecording( CReplay *pReplay, bool bSnip ) = 0;
  50. virtual void NotifyRewinding() = 0;
  51. virtual void Stop() = 0;
  52. virtual bool SaveAsync() = 0;
  53. virtual bool SaveAsAsync( const wchar *pTitle ) = 0;
  54. virtual bool IsSaving() const = 0;
  55. virtual void SaveThink() = 0;
  56. virtual bool GetLastSaveStatus() const = 0;
  57. virtual bool IsRecording() const = 0;
  58. virtual bool IsPlaying() const = 0;
  59. virtual bool IsDirty() const = 0;
  60. virtual void NotifyDirty() = 0;
  61. virtual CReplayPerformance *GetPerformance() = 0;
  62. virtual CReplayPerformance *GetSavedPerformance() = 0;
  63. virtual bool HasSavedPerformance() = 0;
  64. virtual void NotifyPauseState( bool bPaused ) = 0;
  65. virtual void ClearRewinding() = 0;
  66. virtual void OnSignonStateFull() = 0;
  67. virtual float GetPlaybackTimeScale() const = 0;
  68. //
  69. // Recorder-specific:
  70. //
  71. virtual void AddEvent_Camera_Change_FirstPerson( float flTime, int nEntityIndex ) = 0;
  72. virtual void AddEvent_Camera_Change_ThirdPerson( float flTime, int nEntityIndex ) = 0;
  73. virtual void AddEvent_Camera_Change_Free( float flTime ) = 0;
  74. virtual void AddEvent_Camera_ChangePlayer( float flTime, int nEntIndex ) = 0;
  75. virtual void AddEvent_Camera_SetView( const SetViewParams_t &params ) = 0;
  76. virtual void AddEvent_TimeScale( float flTime, float flScale ) = 0;
  77. };
  78. //----------------------------------------------------------------------------------------
  79. #endif // IREPLAYPERFORMANCECONTROLLER_H