diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/asset-manager.cpp | 3 | ||||
| -rw-r--r-- | src/asset-manager.hpp | 1 | ||||
| -rw-r--r-- | src/ecs.cpp | 3 | ||||
| -rw-r--r-- | src/main.cpp | 3 | ||||
| -rw-r--r-- | src/memory.hpp | 7 |
5 files changed, 16 insertions, 1 deletions
diff --git a/src/asset-manager.cpp b/src/asset-manager.cpp index ef5a3b4..d463cff 100644 --- a/src/asset-manager.cpp +++ b/src/asset-manager.cpp @@ -99,3 +99,6 @@ void AM_DebugPrint() { } } +void AM_Teardown() { + Buckets_Destroy(Asset_BucketContainer); +} diff --git a/src/asset-manager.hpp b/src/asset-manager.hpp index 6d0259b..7c7f878 100644 --- a/src/asset-manager.hpp +++ b/src/asset-manager.hpp @@ -22,6 +22,7 @@ AssetHandle AM_Register(const void *data, int64_t size, const char *key); AssetHandle AM_Register(const char *path); void AM_Destroy(AssetHandle assetHandle); const Asset *AM_Get(AssetHandle assetHandle); +void AM_Teardown(); void AM_DebugPrint(); #endif /* PKE_ASSET_MANAGER_HPP */ diff --git a/src/ecs.cpp b/src/ecs.cpp index 88088f5..fe1dfb6 100644 --- a/src/ecs.cpp +++ b/src/ecs.cpp @@ -397,4 +397,7 @@ void ECS_Teardown() { entitiesYetToBeRemoved.~DynArray(); EntitiesToBeRemoved.~DynArray(); entitiesMarkedForRemoval.~DynArray(); + Buckets_Destroy(Entities_BucketContainer); + Buckets_Destroy(Comp_GrBinds_BucketContainer); + Buckets_Destroy(Comp_Instance_BucketContainer); } diff --git a/src/main.cpp b/src/main.cpp index 5026013..9a6a955 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -100,9 +100,10 @@ int main() { Event_Teardown(); EntityType_Teardown(); ECS_Teardown(); + AM_DebugPrint(); + AM_Teardown(); DestroyWindow(); Pke_DebugPrint(); - AM_DebugPrint(); printf("PKE EXITING\n"); return 0; } diff --git a/src/memory.hpp b/src/memory.hpp index 6d431fc..50be56b 100644 --- a/src/memory.hpp +++ b/src/memory.hpp @@ -98,4 +98,11 @@ static inline constexpr uint64_t Buckets_GetItemIndex(uint64_t handle) { return handle >> 32; } +template <typename T, typename CT> +static inline constexpr void Buckets_Destroy(BucketContainer<T, CT> &bktContainer) { + if (bktContainer.buckets == nullptr || bktContainer.buckets == CAFE_BABE(T)) return; + Pke_Delete<T>(bktContainer.buckets, bktContainer.bucketCounter); + bktContainer.buckets = CAFE_BABE(T); +} + #endif /* PKE_MEMORY_HPP */ |
