83 lines
3.2 KiB
C++
83 lines
3.2 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
//=======================================================================================//
|
|
|
|
#ifndef SCREENSHOT_H
|
|
#define SCREENSHOT_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
#include "mathlib/vector.h"
|
|
#include "qlimits.h"
|
|
#include "replay/basereplayserializeable.h"
|
|
#include "strtools.h"
|
|
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
#define SUBDIR_SCREENSHOTS "screenshots"
|
|
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
class CReplayScreenshot : public CBaseReplaySerializeable {
|
|
public:
|
|
inline CReplayScreenshot(int nWidth = 0, int nHeight = 0,
|
|
const char *pBaseFilename = NULL)
|
|
: m_nWidth(nWidth), m_nHeight(nHeight) {
|
|
if (pBaseFilename) {
|
|
V_strncpy(m_szBaseFilename, pBaseFilename,
|
|
sizeof(m_szBaseFilename));
|
|
}
|
|
}
|
|
|
|
virtual bool Read(KeyValues *pIn);
|
|
virtual void Write(KeyValues *pOut);
|
|
virtual const char *GetSubKeyTitle() const;
|
|
virtual const char *GetPath() const;
|
|
|
|
int m_nWidth; // Screenshot width (does not include power-of-2 padding)
|
|
int m_nHeight; // Screenshot height (does not include power-of-2 padding)
|
|
char m_szBaseFilename[MAX_OSPATH];
|
|
};
|
|
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
struct CaptureScreenshotParams_t // To be passed from the client into
|
|
// IReplayHistoryManager::CaptureScreenshot()
|
|
{
|
|
float m_flDelay; // Delay from now (in seconds) when we will take the
|
|
// screenshot
|
|
int m_nEntity; // Should be 0 if no camera adjustment is needed, otherwise
|
|
// should be the index of the entity index from which
|
|
// m_posCamera will be based
|
|
Vector m_posCamera; // Local position, relative to entity's index (if
|
|
// m_nEntity > 0) for camera position
|
|
QAngle m_angCamera; // World angles of camera - used if m_bUseCameraAngles
|
|
// is true
|
|
bool
|
|
m_bUseCameraAngles; // Should we use m_angCamera - m_nEntity can't be 0
|
|
bool
|
|
m_bIgnoreMinTimeBetweenScreenshots; // Force screenshot, regardless of
|
|
// replay_mintimebetweenscreenshots?
|
|
bool m_bPrimary; // Only set to true for the primary screenshot, which is
|
|
// taken when the user saves their replay
|
|
};
|
|
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
struct WriteReplayScreenshotParams_t // Passed from the engine into the client
|
|
// to take a screenshot
|
|
{
|
|
const char *m_pFilename;
|
|
int m_nWidth;
|
|
int m_nHeight;
|
|
Vector *m_pOrigin; // Perspective origin from which to render. Can be NULL
|
|
QAngle *m_pAngles; // Perspective angles from which to render. Can be NULL
|
|
};
|
|
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
#endif // SCREENSHOT_H
|