From 64295e2170bd00675d8b39f5bf6d2e32ac01385d Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Dec 2023 23:01:29 +0300 Subject: [PATCH] Minor refactor --- src/logic/ChunksController.cpp | 23 +++++++++-------------- src/util/timeutil.cpp | 11 +++++++++++ src/util/timeutil.h | 10 ++++++++++ 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/logic/ChunksController.cpp b/src/logic/ChunksController.cpp index 936afb45..8ff4ccdd 100644 --- a/src/logic/ChunksController.cpp +++ b/src/logic/ChunksController.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include "../voxels/Block.h" #include "../voxels/Chunk.h" @@ -17,22 +16,18 @@ #include "../world/Level.h" #include "../world/World.h" #include "../maths/voxmaths.h" +#include "../util/timeutil.h" -const uint MAX_WORK_PER_FRAME = 16; +const uint MAX_WORK_PER_FRAME = 64; const uint MIN_SURROUNDING = 9; using std::unique_ptr; using std::shared_ptr; -using std::chrono::high_resolution_clock; -using std::chrono::duration_cast; -using std::chrono::microseconds; - -ChunksController::ChunksController( - Level* level, - Chunks* chunks, - Lighting* lighting, - uint padding) +ChunksController::ChunksController(Level* level, + Chunks* chunks, + Lighting* lighting, + uint padding) : level(level), chunks(chunks), lighting(lighting), @@ -46,11 +41,11 @@ ChunksController::~ChunksController(){ void ChunksController::update(int64_t maxDuration) { int64_t mcstotal = 0; + for (uint i = 0; i < MAX_WORK_PER_FRAME; i++) { - auto start = high_resolution_clock::now(); + timeutil::Timer timer; if (loadVisible()) { - auto elapsed = high_resolution_clock::now() - start; - int64_t mcs = duration_cast(elapsed).count(); + int64_t mcs = timer.stop(); avgDurationMcs = mcs * 0.2 + avgDurationMcs * 0.8; if (mcstotal + max(avgDurationMcs, mcs) * 2 < maxDuration * 1000) { mcstotal += mcs; diff --git a/src/util/timeutil.cpp b/src/util/timeutil.cpp index f0a1a8bf..7cee8e9f 100644 --- a/src/util/timeutil.cpp +++ b/src/util/timeutil.cpp @@ -1,5 +1,16 @@ #include "timeutil.h" +using std::chrono::high_resolution_clock; +using std::chrono::duration_cast; +using std::chrono::microseconds; + +timeutil::Timer::Timer() { + start = high_resolution_clock::now(); +} +int64_t timeutil::Timer::stop() { + return duration_cast(high_resolution_clock::now()-start).count(); +} + float timeutil::time_value(float hour, float minute, float second) { return (hour + (minute + second / 60.0f) / 60.0f) / 24.0f; } diff --git a/src/util/timeutil.h b/src/util/timeutil.h index bad87137..02939e72 100644 --- a/src/util/timeutil.h +++ b/src/util/timeutil.h @@ -1,7 +1,17 @@ #ifndef UTIL_TIMEUTIL_H_ #define UTIL_TIMEUTIL_H_ +#include "../typedefs.h" +#include + namespace timeutil { + class Timer { + std::chrono::high_resolution_clock::time_point start; + public: + Timer(); + int64_t stop(); + }; + float time_value(float hour, float minute, float second); void from_value(float value, int& hour, int& minute, int& second); }