diff options
| -rw-r--r-- | editor/editor.cpp | 3 | ||||
| -rw-r--r-- | src/bucketed-array.hpp | 65 | ||||
| -rw-r--r-- | src/camera.cpp | 1 | ||||
| -rw-r--r-- | src/ecs.cpp | 1 | ||||
| -rw-r--r-- | src/game-settings.hpp | 4 | ||||
| -rw-r--r-- | src/game.cpp | 6 | ||||
| -rw-r--r-- | src/level.cpp | 1 |
7 files changed, 11 insertions, 70 deletions
diff --git a/editor/editor.cpp b/editor/editor.cpp index 03049bc..938f3ef 100644 --- a/editor/editor.cpp +++ b/editor/editor.cpp @@ -702,7 +702,8 @@ void RecordImGuiEditorWrapper() { } ImGuiIO &io = ImGui::GetIO(); - ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); + ImGui::Text("Application average %.03f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); + ImGui::Text("Application average %.03f ms/tick (%.1f TPS)", 1000.0f / pkeSettings.stats.tick_rate, pkeSettings.stats.tick_rate); ImGui::EndMenu(); } diff --git a/src/bucketed-array.hpp b/src/bucketed-array.hpp deleted file mode 100644 index 150fa66..0000000 --- a/src/bucketed-array.hpp +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef PKE_BUCKETED_ARRAY_HPP -#define PKE_BUCKETED_ARRAY_HPP - -#include <cstddef> -#include <cassert> - -#include "pk.h" - -constexpr pk_handle_bucket_index_T BucketContainerDefaultBucketCount = 16; -constexpr pk_handle_item_index_T BucketContainerDefaultItemCount = 256; - -template<typename T, typename CT = struct pk_handle, pk_handle_item_index_T BKT_CNT = BucketContainerDefaultBucketCount> -struct BucketContainer { - CT limits; - CT pkeHandle; - T* buckets[BKT_CNT]; - T& operator[](CT) const; -}; - -template<typename T, typename CT, pk_handle_item_index_T BKT_CNT> -T& -BucketContainer<T, CT, BKT_CNT>::operator[](CT handle) const { - assert(handle.bucketIndex < this->limits.bucketIndex); - assert(handle.itemIndex < this->limits.itemIndex); - assert(handle.bucketIndex != this->pkeHandle.bucketIndex || handle.itemIndex < this->pkeHandle.itemIndex); - return this->buckets[handle.bucketIndex][handle.itemIndex]; -} - -template<typename T, typename CT, pk_handle_item_index_T BKT_CNT> -void Buckets_Init(BucketContainer<T, CT, BKT_CNT> &bktContainer, size_t maxItemCount = BucketContainerDefaultItemCount) { - bktContainer.limits.bucketIndex = BKT_CNT; - bktContainer.limits.itemIndex = maxItemCount; - bktContainer.pkeHandle.bucketIndex = 0; - bktContainer.pkeHandle.itemIndex = 0; - for (pk_handle_item_index_T i = 0; i < BKT_CNT; ++i) { - bktContainer.buckets[i] = nullptr; - } - bktContainer.buckets[0] = pk_new<T>(maxItemCount); -} - -template<typename T, typename CT, pk_handle_item_index_T BKT_CNT> -inline CT Buckets_NewHandle(BucketContainer<T, CT, BKT_CNT> &bktContainer) { - CT returnValue = bktContainer.pkeHandle; - bktContainer.pkeHandle.itemIndex += 1; - if (bktContainer.pkeHandle.itemIndex >= bktContainer.limits.itemIndex) { - bktContainer.pkeHandle.itemIndex = 0; - bktContainer.pkeHandle.bucketIndex += 1; - assert(bktContainer.pkeHandle.bucketIndex < bktContainer.limits.bucketIndex); - } - if (bktContainer.pkeHandle.itemIndex == 0) { - bktContainer.buckets[bktContainer.pkeHandle.bucketIndex] = pk_new<T>(bktContainer.limits.itemIndex); - } - return returnValue; -} - -template<typename T, typename CT, pk_handle_item_index_T BKT_CNT> -static inline constexpr void Buckets_Destroy(BucketContainer<T, CT, BKT_CNT> &bktContainer) { - for (pk_handle_item_index_T i = 0; i <= bktContainer.pkeHandle.bucketIndex; ++i) { - if (bktContainer.buckets[i] == nullptr) continue; - pk_delete<T>(bktContainer.buckets[i], bktContainer.limits.itemIndex); - bktContainer.buckets[i] = CAFE_BABE(T); - } -} - -#endif /* PKE_BUCKETED_ARRAY_HPP */ diff --git a/src/camera.cpp b/src/camera.cpp index 14f6694..e0a31fa 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -1,7 +1,6 @@ #include "BulletCollision/CollisionShapes/btSphereShape.h" #include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h" -#include "bucketed-array.hpp" #include "camera.hpp" #include "ecs.hpp" #include "math-helpers.hpp" diff --git a/src/ecs.cpp b/src/ecs.cpp index 6ff4d5c..b0b5f6c 100644 --- a/src/ecs.cpp +++ b/src/ecs.cpp @@ -1,7 +1,6 @@ #include "ecs.hpp" -#include "bucketed-array.hpp" #include "game-settings.hpp" #include "math-helpers.hpp" #include "physics.hpp" diff --git a/src/game-settings.hpp b/src/game-settings.hpp index ba078b9..e6740e0 100644 --- a/src/game-settings.hpp +++ b/src/game-settings.hpp @@ -48,6 +48,10 @@ struct GameSettings { LevelHandle previousLevel = LevelHandle_MAX; bool was_framebuffer_resized = false; } rt; + struct stats { + double last_deltas[3] = {}; + double tick_rate = 0; + } stats; }; extern GameSettings pkeSettings; diff --git a/src/game.cpp b/src/game.cpp index 08a392c..349acb1 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -265,9 +265,13 @@ void Game_Main(PKEWindowProperties windowProps, const char *executablePath) { } } + pkeSettings.stats.last_deltas[0] = pkeSettings.stats.last_deltas[1]; + pkeSettings.stats.last_deltas[1] = pkeSettings.stats.last_deltas[2]; + pkeSettings.stats.last_deltas[2] = deltaThisTick; + pkeSettings.stats.tick_rate = 3.L / (pkeSettings.stats.last_deltas[0] + pkeSettings.stats.last_deltas[1] + pkeSettings.stats.last_deltas[2]); if ((currentTimePoint - lastLogTimePoint).count() > std::chrono::nanoseconds::period::den) { lastLogTimePoint = currentTimePoint; - fprintf(stdout, "TPS: ~%ld - actual:%ld - presents:%ld\n", int64_t(1 / deltaThisTick), tickCount, renderCount); + fprintf(stdout, "TPS: ~%.03f - actual:%ld - presents:%ld\n", pkeSettings.stats.tick_rate, tickCount, renderCount); fflush(stdout); tickCount = 0; renderCount = 0; diff --git a/src/level.cpp b/src/level.cpp index d05009c..14e189f 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -1,7 +1,6 @@ #include "level.hpp" -#include "bucketed-array.hpp" #include "ecs.hpp" #include "pk.h" |
