milek7/sim branch network code import

This commit is contained in:
tmj-fstate
2020-02-16 03:03:17 +01:00
parent 2ce3091e8f
commit 7a0c89f508
56 changed files with 2609 additions and 426 deletions

View File

@@ -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