3#ifndef ENGINE_SHARED_DEMO_H
4#define ENGINE_SHARED_DEMO_H
45 void Write(
int Type,
const void *pData,
int Size);
52 int Start(
IStorage *pStorage,
IConsole *pConsole,
const char *pFilename,
const char *pNetversion,
const char *pMap,
const SHA256_DIGEST &Sha256,
unsigned MapCrc,
const char *pType,
unsigned MapSize,
unsigned char *pMapData,
IOHANDLE MapFile,
DEMOFUNC_FILTER pfnFilter,
void *pUser);
145#if defined(CONF_VIDEORECORDER)
183 void Pause()
override;
185 void Stop(
const char *pErrorMessage =
"");
186 void SetSpeed(
float Speed)
override;
190 bool SeekTime(
float Seconds)
override;
192 bool SetPos(
int WantedTick)
override;
194 void GetDemoName(
char *pBuffer,
size_t BufferSize)
const override;
199 void Update(
bool RealTime =
true);
216 bool Slice(
const char *pDemo,
const char *pDst,
int StartTick,
int EndTick,
DEMOFUNC_FILTER pfnFilter,
void *pUser)
override;
IConsole * m_pConsole
Definition demo.h:209
CSnapshotDelta * m_pSnapshotDeltaSixup
Definition demo.h:212
CSnapshotDelta * m_pSnapshotDelta
Definition demo.h:211
bool Slice(const char *pDemo, const char *pDst, int StartTick, int EndTick, DEMOFUNC_FILTER pfnFilter, void *pUser) override
Definition demo.cpp:1431
IStorage * m_pStorage
Definition demo.h:210
virtual void Init(CSnapshotDelta *pSnapshotDelta, CSnapshotDelta *pSnapshotDeltaSixup, IConsole *pConsole, IStorage *pStorage)
Definition demo.cpp:1423
int64_t m_Filepos
Definition demo.h:111
int m_Tick
Definition demo.h:112
CKeyFrame(int64_t Filepos, int Tick)
Definition demo.h:114
CTimelineMarkers m_TimelineMarkers
Definition demo.h:82
bool m_LiveStateUpdating
Definition demo.h:97
float m_IntraTickSincePrev
Definition demo.h:94
CDemoHeader m_Header
Definition demo.h:81
int64_t m_LastScan
Definition demo.h:87
float m_IntraTick
Definition demo.h:93
int m_LiveStateFailedCount
Definition demo.h:98
IDemoPlayer::CInfo m_Info
Definition demo.h:84
int64_t m_CurrentTime
Definition demo.h:88
int64_t m_LastUpdate
Definition demo.h:86
int m_LiveStateUnchangedCount
Definition demo.h:99
int m_NextTick
Definition demo.h:90
int m_PreviousTick
Definition demo.h:91
float m_TickTime
Definition demo.h:95
virtual void OnDemoPlayerMessage(void *pData, int Size)=0
virtual ~IListener()=default
virtual void OnDemoPlayerSnapshot(void *pData, int Size)=0
bool SeekTick(ETickOffset TickOffset) override
Definition demo.cpp:1020
const char * ErrorMessage() const override
Definition demo.h:197
int m_LastSnapshotDataSize
Definition demo.h:140
std::vector< CKeyFrame > m_vKeyFrames
Definition demo.h:125
void SetListener(IListener *pListener)
Definition demo.cpp:521
int Load(IStorage *pStorage, IConsole *pConsole, const char *pFilename, int StorageType)
Definition demo.cpp:828
bool m_Sixup
Definition demo.h:167
int m_SpeedIndex
Definition demo.h:127
void Play()
Definition demo.cpp:981
EScanFileResult ScanFile()
Definition demo.cpp:591
bool ExtractMap(IStorage *pStorage)
Definition demo.cpp:914
bool SeekTime(float Seconds) override
Definition demo.cpp:1014
CDemoPlayer(CSnapshotDelta *pSnapshotDelta, CSnapshotDelta *pSnapshotDeltaSixup, bool UseVideo)
Definition demo.cpp:511
IListener * m_pListener
Definition demo.h:103
const char * Filename() const
Definition demo.h:196
IOHANDLE m_File
Definition demo.h:121
bool SeekPercent(float Percent) override
Definition demo.cpp:1008
bool IsPlaying() const override
Definition demo.h:203
EReadChunkHeaderResult
Definition demo.h:150
@ CHUNKHEADER_SUCCESS
Definition demo.h:151
@ CHUNKHEADER_ERROR
Definition demo.h:152
@ CHUNKHEADER_EOF
Definition demo.h:153
~CDemoPlayer() override
Definition demo.cpp:516
void UpdateTimes()
Definition demo.cpp:1247
bool IsSixup() const
Definition demo.h:200
void AdjustSpeedIndex(int Offset) override
Definition demo.cpp:1127
bool m_UseVideo
Definition demo.h:144
IConsole * m_pConsole
Definition demo.h:120
CSnapshotDelta * m_pSnapshotDeltaSixup
Definition demo.h:142
CPlaybackInfo m_Info
Definition demo.h:129
char m_aFilename[IO_MAX_PATH_LENGTH]
Definition demo.h:123
unsigned char * GetMapData(IStorage *pStorage)
Definition demo.cpp:896
unsigned char m_aCompressedSnapshotData[CSnapshot::MAX_SIZE]
Definition demo.h:130
CSnapshotDelta * m_pSnapshotDelta
Definition demo.h:141
void SetSpeedIndex(int SpeedIndex) override
Definition demo.cpp:1120
const CMapInfo * GetMapInfo() const
Definition demo.h:204
const CInfo * BaseInfo() const override
Definition demo.h:193
bool m_WasRecording
Definition demo.h:146
void Update(bool RealTime=true)
Definition demo.cpp:1132
const CPlaybackInfo * Info() const
Definition demo.h:202
void SetSpeed(float Speed) override
Definition demo.cpp:1115
EScanFileResult
Definition demo.h:158
@ ERROR_UNRECOVERABLE
Definition demo.h:161
@ ERROR_RECOVERABLE
Definition demo.h:160
@ SUCCESS
Definition demo.h:159
CSnapshotBuffer m_LastSnapshotData
Definition demo.h:139
CSnapshotDelta * SnapshotDelta()
Definition demo.cpp:480
void Unpause() override
Definition demo.cpp:819
unsigned char m_aDecompressedSnapshotData[CSnapshot::MAX_SIZE]
Definition demo.h:131
char m_aErrorMessage[256]
Definition demo.h:124
EReadChunkHeaderResult ReadChunkHeader(int *pType, int *pSize, int *pTick)
Definition demo.cpp:526
int64_t Time()
Definition demo.cpp:954
int64_t m_MapOffset
Definition demo.h:122
void DoTick()
Definition demo.cpp:668
bool GetDemoInfo(IStorage *pStorage, IConsole *pConsole, const char *pFilename, int StorageType, CDemoHeader *pDemoHeader, CTimelineMarkers *pTimelineMarkers, CMapInfo *pMapInfo, IOHANDLE *pFile=nullptr, char *pErrorMessage=nullptr, size_t ErrorMessageSize=0) const override
Definition demo.cpp:1296
unsigned char m_aChunkData[CSnapshot::MAX_SIZE]
Definition demo.h:135
void Pause() override
Definition demo.cpp:810
void Stop(const char *pErrorMessage="")
Definition demo.cpp:1263
CSnapshotBuffer m_Snapshot
Definition demo.h:138
bool SetPos(int WantedTick) override
Definition demo.cpp:1044
void Construct(CSnapshotDelta *pSnapshotDelta, CSnapshotDelta *pSnapshotDeltaSixup, bool UseVideo)
Definition demo.cpp:489
CMapInfo m_MapInfo
Definition demo.h:126
void GetDemoName(char *pBuffer, size_t BufferSize) const override
Definition demo.cpp:1291
TUpdateIntraTimesFunc m_UpdateIntraTimesFunc
Definition demo.h:105
int m_LastKeyFrame
Definition demo.h:30
bool IsRecording() const override
Definition demo.h:61
~CDemoRecorder() override
Definition demo.cpp:60
int Start(IStorage *pStorage, IConsole *pConsole, const char *pFilename, const char *pNetversion, const char *pMap, const SHA256_DIGEST &Sha256, unsigned MapCrc, const char *pType, unsigned MapSize, unsigned char *pMapData, IOHANDLE MapFile, DEMOFUNC_FILTER pfnFilter, void *pUser)
Definition demo.cpp:66
void WriteTickMarker(int Tick, bool Keyframe)
Definition demo.cpp:256
char m_aCurrentFilename[IO_MAX_PATH_LENGTH]
Definition demo.h:28
int Length() const override
Definition demo.h:64
void RecordSnapshot(int Tick, const void *pData, int Size)
Definition demo.cpp:331
bool m_NoMapData
Definition demo.h:39
IOHANDLE m_File
Definition demo.h:27
int m_LastTickMarker
Definition demo.h:29
CSnapshotBuffer m_LastSnapshotData
Definition demo.h:33
int Stop(IDemoRecorder::EStopMode Mode, const char *pTargetFilename="") override
Definition demo.cpp:373
CSnapshotDelta * m_pSnapshotDelta
Definition demo.h:34
IStorage * m_pStorage
Definition demo.h:25
int m_NumTimelineMarkers
Definition demo.h:36
int m_FirstTick
Definition demo.h:31
void RecordMessage(const void *pData, int Size)
Definition demo.cpp:361
void AddDemoMarker()
Definition demo.cpp:439
IConsole * m_pConsole
Definition demo.h:24
CDemoRecorder(CSnapshotDelta *pSnapshotDelta, bool NoMapData=false)
Definition demo.cpp:49
DEMOFUNC_FILTER m_pfnFilter
Definition demo.h:41
int m_aTimelineMarkers[MAX_TIMELINE_MARKERS]
Definition demo.h:37
const char * CurrentFilename() const override
Definition demo.h:62
void * m_pUser
Definition demo.h:42
@ MAX_SIZE
Definition snapshot.h:52
ETickOffset
Definition demo.h:84
EStopMode
Definition demo.h:111
Write
Definition connection_pool.h:36
bool(* DEMOFUNC_FILTER)(const void *pData, int DataSize, void *pUser)
Definition demo.h:27
@ MAX_TIMELINE_MARKERS
Definition demo.h:18
@ SERVER_TICK_SPEED
Definition protocol.h:81
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:26
void * IOHANDLE
Definition logger.h:12
std::function< void()> TUpdateIntraTimesFunc
Definition demo.h:16