//========= Copyright Valve Corporation, All rights reserved. ============// // //=======================================================================================// #ifndef IREPLAYPERFORMANCECONTROLLER_H #define IREPLAYPERFORMANCECONTROLLER_H #ifdef _WIN32 #pragma once #endif //---------------------------------------------------------------------------------------- #include "interface.h" #include "tier1/strtools.h" //---------------------------------------------------------------------------------------- class IReplayPerformanceEditor; class CReplay; class Vector; class QAngle; class CReplayPerformance; //---------------------------------------------------------------------------------------- // These values are what we use to represent struct SetViewParams_t { SetViewParams_t() { V_memset( this, 0, sizeof( SetViewParams_t ) ); } SetViewParams_t( float flTime, Vector *pOrigin, QAngle *pAngles, float flFov, float flAccel, float flSpeed, float flRotFilter ) : m_flTime( flTime ), m_pOrigin( pOrigin ), m_pAngles( pAngles ), m_flFov( flFov ), m_flAccel( flAccel ), m_flSpeed( flSpeed ), m_flRotationFilter( flRotFilter ) { } float m_flTime; Vector *m_pOrigin; QAngle *m_pAngles; float m_flFov; // Right now only used for updating UI during playback: float m_flAccel; float m_flSpeed; float m_flRotationFilter; }; //---------------------------------------------------------------------------------------- class IReplayPerformanceController : public IBaseInterface { public: virtual void SetEditor( IReplayPerformanceEditor *pEditor ) = 0; virtual bool IsPlaybackDataLeft() = 0; virtual void StartRecording( CReplay *pReplay, bool bSnip ) = 0; virtual void NotifyRewinding() = 0; virtual void Stop() = 0; virtual bool SaveAsync() = 0; virtual bool SaveAsAsync( const wchar *pTitle ) = 0; virtual bool IsSaving() const = 0; virtual void SaveThink() = 0; virtual bool GetLastSaveStatus() const = 0; virtual bool IsRecording() const = 0; virtual bool IsPlaying() const = 0; virtual bool IsDirty() const = 0; virtual void NotifyDirty() = 0; virtual CReplayPerformance *GetPerformance() = 0; virtual CReplayPerformance *GetSavedPerformance() = 0; virtual bool HasSavedPerformance() = 0; virtual void NotifyPauseState( bool bPaused ) = 0; virtual void ClearRewinding() = 0; virtual void OnSignonStateFull() = 0; virtual float GetPlaybackTimeScale() const = 0; // // Recorder-specific: // virtual void AddEvent_Camera_Change_FirstPerson( float flTime, int nEntityIndex ) = 0; virtual void AddEvent_Camera_Change_ThirdPerson( float flTime, int nEntityIndex ) = 0; virtual void AddEvent_Camera_Change_Free( float flTime ) = 0; virtual void AddEvent_Camera_ChangePlayer( float flTime, int nEntIndex ) = 0; virtual void AddEvent_Camera_SetView( const SetViewParams_t ¶ms ) = 0; virtual void AddEvent_TimeScale( float flTime, float flScale ) = 0; }; //---------------------------------------------------------------------------------------- #endif // IREPLAYPERFORMANCECONTROLLER_H