summaryrefslogtreecommitdiff
path: root/src/entities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities.cpp')
-rw-r--r--src/entities.cpp80
1 files changed, 39 insertions, 41 deletions
diff --git a/src/entities.cpp b/src/entities.cpp
index cb66cef..609fc51 100644
--- a/src/entities.cpp
+++ b/src/entities.cpp
@@ -3,10 +3,7 @@
#include "bucketed-array.hpp"
#include "ecs.hpp"
-#include "game-settings.hpp"
-#include "level.hpp"
#include "math-helpers.hpp"
-#include "memory.hpp"
#include "physics.hpp"
#include "plugins.hpp"
#include "static/missing-texture.hpp"
@@ -15,7 +12,6 @@
#include <BulletCollision/CollisionShapes/btConvexHullShape.h>
#include <BulletCollision/CollisionShapes/btConvexPolyhedron.h>
#include <filesystem>
-#include <type_traits>
#include <vulkan/vulkan_core.h>
BucketContainer<EntityType> EntityType_BC{};
@@ -74,10 +70,10 @@ Entity_Base *EntityType_CreateGenericInstance(EntityType *et, Entity_Base *level
btVector3 localInertia(0, 0, 0);
etd.bt.shape->calculateLocalInertia(mass, localInertia);
- compInst->bt.motionState = Pke_New<btDefaultMotionState>(MemBkt_Bullet);
+ compInst->bt.motionState = pk_new<btDefaultMotionState>(MemBkt_Bullet);
new (compInst->bt.motionState) btDefaultMotionState(posRot);
- compInst->bt.rigidBody = Pke_New<btRigidBody>(MemBkt_Bullet);
+ compInst->bt.rigidBody = pk_new<btRigidBody>(MemBkt_Bullet);
new (compInst->bt.rigidBody) btRigidBody(mass, compInst->bt.motionState, etd.bt.shape, localInertia);
compInst->bt.rigidBody->setLinearVelocity(btVector3(0,0,0));
@@ -92,13 +88,13 @@ Entity_Base *EntityType_CreateGenericInstance(EntityType *et, Entity_Base *level
}
EntityType *EntityType_FindByTypeCode(const char *typeCode) {
- for (PkeHandleBucketIndex_T b = 0; b <= EntityType_BC.pkeHandle.bucketIndex; ++b) {
+ for (pk_handle_bucket_index_T b = 0; b <= EntityType_BC.pkeHandle.bucketIndex; ++b) {
auto &bkt = EntityType_BC.buckets[b];
long itemCount = EntityType_BC.pkeHandle.bucketIndex == b ? EntityType_BC.pkeHandle.itemIndex : EntityType_BC.limits.itemIndex;
- for (PkeHandleItemIndex_T i = 0; i < itemCount; ++i) {
+ for (pk_handle_item_index_T i = 0; i < itemCount; ++i) {
auto &entityType = bkt[i];
if (entityType.handle == EntityHandle_MAX) continue;
- if (strcmp(typeCode, entityType.entityTypeCode) == 0) {
+ if (strcmp(typeCode, entityType.entityTypeCode.val) == 0) {
return &entityType;
}
}
@@ -108,10 +104,10 @@ EntityType *EntityType_FindByTypeCode(const char *typeCode) {
EntityType *EntityType_FindByEntityHandle(EntityHandle handle) {
if (handle == EntityHandle_MAX) return nullptr;
- for (PkeHandleBucketIndex_T b = 0; b <= EntityType_BC.pkeHandle.bucketIndex; ++b) {
+ for (pk_handle_bucket_index_T b = 0; b <= EntityType_BC.pkeHandle.bucketIndex; ++b) {
auto &bkt = EntityType_BC.buckets[b];
long itemCount = EntityType_BC.pkeHandle.bucketIndex == b ? EntityType_BC.pkeHandle.itemIndex : EntityType_BC.limits.itemIndex;
- for (PkeHandleItemIndex_T i = 0; i < itemCount; ++i) {
+ for (pk_handle_item_index_T i = 0; i < itemCount; ++i) {
auto &entityType = bkt[i];
if (entityType.handle == handle) {
return &entityType;
@@ -167,7 +163,7 @@ struct EntityTypeDetails_LoadHelperStruct {
} physDbg;
};
struct EntityType_LoadHelperStruct {
- MemBucket *bkt = nullptr;
+ struct pk_membucket *bkt = nullptr;
EntityType &et;
DynArray<EntityTypeDetails_LoadHelperStruct> *etdHelpers = nullptr;
const cgltf_data *gltfData = nullptr;
@@ -220,21 +216,21 @@ void EntityType_PreLoad(EntityType_LoadHelperStruct &helper) {
EntityTypeDetails_LoadHelperStruct &etdHelper = helper.etdHelpers->Push();
etdHelper.etd = &etd;
etd.grBinds = ECS_CreateGrBinds(&helper.et);;
- etdHelper.physDbg.vertexes = reinterpret_cast<DynArray<glm::vec3> *>(Pke_New(sizeof(DynArray<glm::vec3>), 64, helper.bkt));
- etdHelper.physDbg.normals = reinterpret_cast<DynArray<glm::vec3> *>(Pke_New(sizeof(DynArray<glm::vec3>), 64, helper.bkt));
- etdHelper.physDbg.uv = reinterpret_cast<DynArray<glm::vec2> *>(Pke_New(sizeof(DynArray<glm::vec2>), 64, helper.bkt));
- etdHelper.physDbg.indexes = reinterpret_cast<DynArray<uint16_t> *>(Pke_New(sizeof(DynArray<uint16_t>), 64, helper.bkt));
- new (etdHelper.physDbg.vertexes) DynArray<glm::vec3>(helper.bkt);
- new (etdHelper.physDbg.normals) DynArray<glm::vec3>(helper.bkt);
- new (etdHelper.physDbg.uv) DynArray<glm::vec2>(helper.bkt);
- new (etdHelper.physDbg.indexes) DynArray<uint16_t>(helper.bkt);
+ etdHelper.physDbg.vertexes = pk_new<DynArray<glm::vec3>>(64, helper.bkt);
+ etdHelper.physDbg.normals = pk_new<DynArray<glm::vec3>>(64, helper.bkt);
+ etdHelper.physDbg.uv = pk_new<DynArray<glm::vec2>>(64, helper.bkt);
+ etdHelper.physDbg.indexes = pk_new<DynArray<uint16_t>>(64, helper.bkt);
+ // new (etdHelper.physDbg.vertexes) DynArray<glm::vec3>(helper.bkt);
+ // new (etdHelper.physDbg.normals) DynArray<glm::vec3>(helper.bkt);
+ // new (etdHelper.physDbg.uv) DynArray<glm::vec2>(helper.bkt);
+ // new (etdHelper.physDbg.indexes) DynArray<uint16_t>(helper.bkt);
/*
* phys
*/
btConvexHullShape *shape;
{
- shape = Pke_New<btConvexHullShape>(MemBkt_Bullet);
+ shape = pk_new<btConvexHullShape>(MemBkt_Bullet);
btScalar *vertDataPointer = reinterpret_cast<btScalar *>(helper.modelBinAsset->ptr);
/* TODO JCB - 2024-01-02
* we shouldn't assume that the first index is the vertexes
@@ -641,7 +637,7 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i
vkDescriptorSetAllocateInfo.descriptorSetCount = MAX_FRAMES_IN_FLIGHT;
vkDescriptorSetAllocateInfo.pSetLayouts = descriptorSets;
- etdHelper.etd->grBinds->vkDescriptorSets = Pke_New<VkDescriptorSet>(MAX_FRAMES_IN_FLIGHT);
+ etdHelper.etd->grBinds->vkDescriptorSets = pk_new<VkDescriptorSet>(MAX_FRAMES_IN_FLIGHT);
for (long i = 0; i < MAX_FRAMES_IN_FLIGHT; ++i) {
etdHelper.etd->grBinds->vkDescriptorSets[i] = VkDescriptorSet{};
}
@@ -1055,23 +1051,23 @@ void EntityType_Load(EntityType &et) {
AssetHandle modelBinHandle = AM_Register(gltfPath.c_str(), PKE_ASSET_TYPE_UNSET);
const Asset *modelBinAsset = AM_Get(modelBinHandle);
- MemBucket *entLoaderBkt = Pke_BeginTransientBucket();
+ struct pk_membucket *entLoaderBkt = pk_bucket_create("entities", PK_DEFAULT_BUCKET_SIZE, false);
EntityType_LoadHelperStruct helper {
.bkt = entLoaderBkt,
.et = et,
- .etdHelpers = reinterpret_cast<DynArray<EntityTypeDetails_LoadHelperStruct> *>(Pke_New(sizeof(DynArray<EntityTypeDetails_LoadHelperStruct>), 64, entLoaderBkt)),
+ .etdHelpers = pk_new<DynArray<EntityTypeDetails_LoadHelperStruct>>(64, entLoaderBkt),
.gltfData = gltfData,
.modelBinAsset = modelBinAsset,
- .vertMemoryRequirements = reinterpret_cast<DynArray<VkMemoryRequirements> *>(Pke_New(sizeof(DynArray<VkMemoryRequirements>), 64, entLoaderBkt)),
- .instMemoryRequirements = reinterpret_cast<DynArray<VkMemoryRequirements> *>(Pke_New(sizeof(DynArray<VkMemoryRequirements>), 64, entLoaderBkt)),
- .physVertMemoryRequirements = reinterpret_cast<DynArray<VkMemoryRequirements> *>(Pke_New(sizeof(DynArray<VkMemoryRequirements>), 64, entLoaderBkt)),
- .textureMemoryRequirements = reinterpret_cast<DynArray<VkMemoryRequirements> *>(Pke_New(sizeof(DynArray<VkMemoryRequirements>), 64, entLoaderBkt)),
+ .vertMemoryRequirements = pk_new<DynArray<VkMemoryRequirements>>(64, entLoaderBkt),
+ .instMemoryRequirements = pk_new<DynArray<VkMemoryRequirements>>(64, entLoaderBkt),
+ .physVertMemoryRequirements = pk_new<DynArray<VkMemoryRequirements>>(64, entLoaderBkt),
+ .textureMemoryRequirements = pk_new<DynArray<VkMemoryRequirements>>(64, entLoaderBkt),
};
- new (helper.etdHelpers) DynArray<EntityTypeDetails_LoadHelperStruct>{entLoaderBkt};
- new (helper.vertMemoryRequirements) DynArray<VkMemoryRequirements>{entLoaderBkt};
- new (helper.instMemoryRequirements) DynArray<VkMemoryRequirements>{entLoaderBkt};
- new (helper.physVertMemoryRequirements) DynArray<VkMemoryRequirements>{entLoaderBkt};
- new (helper.textureMemoryRequirements) DynArray<VkMemoryRequirements>{entLoaderBkt};
+ // new (helper.etdHelpers) DynArray<EntityTypeDetails_LoadHelperStruct>{entLoaderBkt};
+ // new (helper.vertMemoryRequirements) DynArray<VkMemoryRequirements>{entLoaderBkt};
+ // new (helper.instMemoryRequirements) DynArray<VkMemoryRequirements>{entLoaderBkt};
+ // new (helper.physVertMemoryRequirements) DynArray<VkMemoryRequirements>{entLoaderBkt};
+ // new (helper.textureMemoryRequirements) DynArray<VkMemoryRequirements>{entLoaderBkt};
EntityType_PreLoad(helper);
@@ -1097,7 +1093,7 @@ void EntityType_Load(EntityType &et) {
// cleanup
AM_Release(modelBinHandle);
AM_Release(assetHandle);
- Pke_EndTransientBucket(helper.bkt);
+ pk_bucket_destroy(helper.bkt);
}
void EntityType_Unload(EntityType &et, CompGrBinds *grBindsArr[1]) {
@@ -1208,9 +1204,11 @@ void EntityType_Unload(EntityType &et, CompGrBinds *grBindsArr[1]) {
vkFreeMemory(vkDevice, et.deviceMemoryTexture, vkAllocator);
et.deviceMemoryTexture = VK_NULL_HANDLE;
- if (et.entityTypeCode)
- Pke_Delete<char>(et.entityTypeCode, strlen(et.entityTypeCode));
- et.entityTypeCode = CAFE_BABE(char);
+ if (et.entityTypeCode.reserved != 0)
+ pk_delete<char>(et.entityTypeCode.val, et.entityTypeCode.reserved);
+ et.entityTypeCode.val = CAFE_BABE(char);
+ et.entityTypeCode.length = 0;
+ et.entityTypeCode.reserved = 0;
}
void EntityType_Tick(double delta) {
@@ -1349,11 +1347,11 @@ void EntityType_RolloverInstances(EntityType &et, CompGrBinds &grBinds) {
vkFreeMemory(vkDevice, oldMemory, vkAllocator);
}
-PkeHandleBucketIndex_T EntityType_GetBucketCount() {
+pk_handle_bucket_index_T EntityType_GetBucketCount() {
return EntityType_BC.pkeHandle.bucketIndex + 1;
}
-EntityType *EntityType_GetEntityTypes(PkeHandleBucketIndex_T bucketIndex, PkeHandleItemIndex_T &itemCount) {
+EntityType *EntityType_GetEntityTypes(pk_handle_bucket_index_T bucketIndex, pk_handle_item_index_T &itemCount) {
assert(bucketIndex <= EntityType_BC.pkeHandle.bucketIndex);
if (bucketIndex == EntityType_BC.pkeHandle.bucketIndex) {
itemCount = EntityType_BC.pkeHandle.itemIndex;
@@ -1365,10 +1363,10 @@ EntityType *EntityType_GetEntityTypes(PkeHandleBucketIndex_T bucketIndex, PkeHan
void EntityType_Teardown() {
- for (PkeHandleBucketIndex_T b = 0; b <= EntityType_BC.pkeHandle.bucketIndex; ++b) {
+ for (pk_handle_bucket_index_T b = 0; b <= EntityType_BC.pkeHandle.bucketIndex; ++b) {
auto &bkt = EntityType_BC.buckets[b];
long itemCount = EntityType_BC.pkeHandle.bucketIndex == b ? EntityType_BC.pkeHandle.itemIndex : EntityType_BC.limits.itemIndex;
- for (PkeHandleItemIndex_T i = 0; i < itemCount; ++i) {
+ for (pk_handle_item_index_T i = 0; i < itemCount; ++i) {
auto &et = bkt[i];
if (et.modelAssetKey[0] == '\0') continue;
CompGrBinds *grBindsArr[EntityTypeDetails_MAX] = {nullptr};