mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
milek7/sim branch network code import
This commit is contained in:
46
Timer.cpp
46
Timer.cpp
@@ -15,13 +15,14 @@ namespace Timer {
|
||||
|
||||
subsystem_stopwatches subsystem;
|
||||
|
||||
double DeltaTime, DeltaRenderTime;
|
||||
double DeltaTime = 0.0, DeltaRenderTime = 0.0;
|
||||
double fFPS{ 0.0f };
|
||||
double fLastTime{ 0.0f };
|
||||
DWORD dwFrames{ 0 };
|
||||
double fSimulationTime{ 0.0 };
|
||||
double fSoundTimer{ 0.0 };
|
||||
double fSinceStart{ 0.0 };
|
||||
double override_delta = -1.0f;
|
||||
|
||||
double GetTime()
|
||||
{
|
||||
@@ -30,6 +31,8 @@ double GetTime()
|
||||
|
||||
double GetDeltaTime()
|
||||
{ // czas symulacji (stoi gdy pauza)
|
||||
if (override_delta != -1.0f)
|
||||
return override_delta;
|
||||
return DeltaTime;
|
||||
}
|
||||
|
||||
@@ -38,35 +41,31 @@ double GetDeltaRenderTime()
|
||||
return DeltaRenderTime;
|
||||
}
|
||||
|
||||
void SetDeltaTime(double t)
|
||||
void set_delta_override(double t)
|
||||
{
|
||||
DeltaTime = t;
|
||||
}
|
||||
|
||||
bool GetSoundTimer()
|
||||
{ // Ra: być może, by dźwięki nie modyfikowały się zbyt często, po 0.1s zeruje się ten licznik
|
||||
return (fSoundTimer == 0.0f);
|
||||
}
|
||||
|
||||
double GetFPS()
|
||||
{
|
||||
return fFPS;
|
||||
override_delta = t;
|
||||
}
|
||||
|
||||
void ResetTimers()
|
||||
{
|
||||
UpdateTimers( Global.iPause != 0 );
|
||||
DeltaTime = 0.1;
|
||||
DeltaTime = 0.0;
|
||||
DeltaRenderTime = 0.0;
|
||||
fSoundTimer = 0.0;
|
||||
};
|
||||
}
|
||||
|
||||
LONGLONG fr, count, oldCount;
|
||||
|
||||
void UpdateTimers(bool pause) {
|
||||
uint64_t fr, count, oldCount;
|
||||
|
||||
void UpdateTimers(bool pause)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
QueryPerformanceFrequency((LARGE_INTEGER *)&fr);
|
||||
QueryPerformanceCounter((LARGE_INTEGER *)&count);
|
||||
#elif __unix__
|
||||
timespec ts;
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
count = (uint64_t)ts.tv_sec * 1000000000 + (uint64_t)ts.tv_nsec;
|
||||
fr = 1000000000;
|
||||
#endif
|
||||
DeltaRenderTime = double(count - oldCount) / double(fr);
|
||||
if (!pause)
|
||||
{
|
||||
@@ -77,15 +76,19 @@ void UpdateTimers(bool pause) {
|
||||
|
||||
if (DeltaTime > 1.0)
|
||||
DeltaTime = 1.0;
|
||||
|
||||
fSimulationTime += GetDeltaTime();
|
||||
}
|
||||
else
|
||||
DeltaTime = 0.0; // wszystko stoi, bo czas nie płynie
|
||||
|
||||
oldCount = count;
|
||||
// Keep track of the time lapse and frame count
|
||||
#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
|
||||
#if __unix__
|
||||
double fTime = (double)(count / 1000000000);
|
||||
#elif _WIN32_WINNT >= _WIN32_WINNT_VISTA
|
||||
double fTime = ::GetTickCount64() * 0.001f; // Get current time in seconds
|
||||
#else
|
||||
#elif _WIN32
|
||||
double fTime = ::GetTickCount() * 0.001f; // Get current time in seconds
|
||||
#endif
|
||||
++dwFrames; // licznik ramek
|
||||
@@ -96,7 +99,6 @@ void UpdateTimers(bool pause) {
|
||||
fLastTime = fTime;
|
||||
dwFrames = 0L;
|
||||
}
|
||||
fSimulationTime += DeltaTime;
|
||||
};
|
||||
|
||||
}; // namespace timer
|
||||
|
||||
Reference in New Issue
Block a user