initial
This commit is contained in:
60
public/gcsdk/jobtime.h
Normal file
60
public/gcsdk/jobtime.h
Normal file
@@ -0,0 +1,60 @@
|
||||
//====== Copyright <20>, Valve Corporation, All rights reserved. =======
|
||||
//
|
||||
// Purpose: Encapsultes the job system's version of time (which is != to wall clock time)
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef JOBTIME_H
|
||||
#define JOBTIME_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
namespace GCSDK
|
||||
{
|
||||
|
||||
// CJobTime
|
||||
// This is our primary job time structure. It's similar to the Windows FILETIME structure, but
|
||||
// with 1/10th the nominal resolution.
|
||||
// It offers 1 microsecond resolution beginning on January 1, 1601.
|
||||
// This is NOT wall clock time, it is time based proxy for a frame counter.
|
||||
// This time PAUSES when you are in the debugger. Most timeout checks (things that don't need to be
|
||||
// exact time wise should use this );
|
||||
class CJobTime
|
||||
{
|
||||
public:
|
||||
CJobTime();
|
||||
|
||||
void SetToJobTime();
|
||||
void SetFromJobTime( int64 dMicroSecOffset );
|
||||
|
||||
// Amount of time that's passed between this CJobTime and the current time.
|
||||
int64 CServerMicroSecsPassed() const;
|
||||
|
||||
// Time accessors
|
||||
uint64 LTime() const { return m_lTime; }
|
||||
void SetLTime( uint64 lTime ) { m_lTime = lTime; }
|
||||
|
||||
// Access our cached current time value
|
||||
static void UpdateJobTime( int cMicroSecPerShellFrame );
|
||||
static void SetCurrentJobTime( uint64 lCurrentTime );
|
||||
static uint64 LJobTimeCur() { return sm_lTimeCur; }
|
||||
|
||||
bool operator==( const CJobTime &val ) const { return val.m_lTime == m_lTime; }
|
||||
bool operator!=( const CJobTime &val ) const { return val.m_lTime != m_lTime; }
|
||||
bool operator<( const CJobTime &val ) const { return m_lTime < val.m_lTime; }
|
||||
bool operator>( const CJobTime &val ) const { return m_lTime > val.m_lTime; }
|
||||
const CJobTime& operator+( const int64 &val ) { m_lTime += val; return *this; }
|
||||
const CJobTime& operator+=( const int64 &val ) { m_lTime += val; return *this; }
|
||||
|
||||
private:
|
||||
|
||||
uint64 m_lTime; // Our time value (microseconds since 1/1/1601)
|
||||
static uint64 sm_lTimeCur; // Cached value of the current time (updated each frame)
|
||||
};
|
||||
|
||||
const uint64 k_lJobTimeMaxFuture = (uint64)-1;
|
||||
|
||||
|
||||
}
|
||||
#endif // JOBTIME_H
|
||||
Reference in New Issue
Block a user