From b2548ba4ce295fcd94a50123fb543fac2ef2bc33 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 14 Nov 2024 14:46:23 -0500 Subject: add pk.h and major pkmem refactor Completely replaces the memory module with pkmem pkmem is a newer implementation of the same bucket memory structure. Also includes replacing pkstr.h with pk.h's pkstr --- src/camera.cpp | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'src/camera.cpp') diff --git a/src/camera.cpp b/src/camera.cpp index 3982642..75aa40f 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -5,7 +5,6 @@ #include "camera.hpp" #include "ecs.hpp" #include "math-helpers.hpp" -#include "memory.hpp" #include "physics.hpp" PkeCamera NullCamera { @@ -21,7 +20,7 @@ PkeCamera NullCamera { }; PkeCamera *ActiveCamera = &NullCamera; -const PkeHandleItemIndex_T MAX_CAMERAS_PER_BUCKET = 32; +const pk_handle_item_index_T MAX_CAMERAS_PER_BUCKET = 32; BucketContainer Camera_BucketContainer{}; btSphereShape CameraShape{1.f}; @@ -34,10 +33,10 @@ PkeCamera &PkeCamera_Register_Inner(PkeCamera &cam, const InstPos &instPos) { btVector3 localInertia(0, 0, 0); CameraShape.calculateLocalInertia(instPos.mass, localInertia); - cam.phys.inst->bt.motionState = Pke_New(MemBkt_Bullet); + cam.phys.inst->bt.motionState = pk_new(MemBkt_Bullet); new (cam.phys.inst->bt.motionState) btDefaultMotionState(instPos.posRot); - cam.phys.inst->bt.rigidBody = Pke_New(MemBkt_Bullet); + cam.phys.inst->bt.rigidBody = pk_new(MemBkt_Bullet); new (cam.phys.inst->bt.rigidBody) btRigidBody(instPos.mass, cam.phys.inst->bt.motionState, &CameraShape, localInertia); cam.phys.inst->bt.rigidBody->setLinearVelocity(btVector3(0,0,0)); @@ -72,10 +71,10 @@ PkeCamera *PkeCamera_Get(CameraHandle cameraHandle) { PkeCamera *PkeCamera_Get(EntityHandle handle) { assert(handle != EntityHandle_MAX); - for (PkeHandleBucketIndex_T b = 0; b <= Camera_BucketContainer.pkeHandle.bucketIndex; ++b) { + for (pk_handle_bucket_index_T b = 0; b <= Camera_BucketContainer.pkeHandle.bucketIndex; ++b) { auto &bkt = Camera_BucketContainer.buckets[b]; long itemCount = Camera_BucketContainer.pkeHandle.bucketIndex == b ? Camera_BucketContainer.pkeHandle.itemIndex : Camera_BucketContainer.limits.itemIndex; - for (PkeHandleItemIndex_T i = 0; i < itemCount; ++i) { + for (pk_handle_item_index_T i = 0; i < itemCount; ++i) { auto &cam = bkt[i]; if (cam.handle == handle) return &Camera_BucketContainer.buckets[cam.camHandle.bucketIndex][cam.camHandle.itemIndex]; @@ -107,7 +106,7 @@ void PkeCamera_AttachToInstance(CameraHandle cameraHandle, CompInstance *inst) { cam.phys.inst->bt.rigidBody->activate(); assert(cam.phys.constraint == nullptr || cam.phys.constraint == CAFE_BABE(btTypedConstraint)); - cam.phys.constraint = Pke_New(MemBkt_Bullet); + cam.phys.constraint = pk_new(MemBkt_Bullet); new (cam.phys.constraint) btPoint2PointConstraint(*cam.phys.inst->bt.rigidBody, *inst->bt.rigidBody, btVector3(0.f, -1.f, -1.f), cameraOffset); BtDynamicsWorld->addConstraint(cam.phys.constraint); @@ -119,7 +118,7 @@ void PkeCamera_DetachFromInstance(CameraHandle cameraHandle, CompInstance *inst) assert(cameraHandle != CameraHandle_MAX); auto &cam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex][cameraHandle.itemIndex]; BtDynamicsWorld->removeConstraint(cam.phys.constraint); - Pke_Delete(cam.phys.constraint, MemBkt_Bullet); + pk_delete(cam.phys.constraint, MemBkt_Bullet); cam.phys.constraint = CAFE_BABE(btTypedConstraint); cam.stale = PKE_CAMERA_STALE_POSROT; } @@ -127,10 +126,10 @@ void PkeCamera_DetachFromInstance(CameraHandle cameraHandle, CompInstance *inst) void PkeCamera_SetPrimary(CameraHandle cameraHandle) { assert(cameraHandle != CameraHandle_MAX); auto &primaryCam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex][cameraHandle.itemIndex]; - for (PkeHandleBucketIndex_T b = 0; b <= Camera_BucketContainer.pkeHandle.bucketIndex; ++b) { + for (pk_handle_bucket_index_T b = 0; b <= Camera_BucketContainer.pkeHandle.bucketIndex; ++b) { auto &bkt = Camera_BucketContainer.buckets[b]; long itemCount = Camera_BucketContainer.pkeHandle.bucketIndex == b ? Camera_BucketContainer.pkeHandle.itemIndex : Camera_BucketContainer.limits.itemIndex; - for (PkeHandleItemIndex_T i = 0; i < itemCount; ++i) { + for (pk_handle_item_index_T i = 0; i < itemCount; ++i) { auto *cam = &bkt[i]; if (cam->parentHandle != primaryCam.parentHandle) { continue; @@ -148,7 +147,7 @@ void PkeCamera_Destroy(CameraHandle cameraHandle) { if (cam.phys.constraint != nullptr && cam.phys.constraint != CAFE_BABE(btTypedConstraint)) { // reminder: this is not currently handled by ECS BtDynamicsWorld->removeConstraint(cam.phys.constraint); - Pke_Delete(cam.phys.constraint, MemBkt_Bullet); + pk_delete(cam.phys.constraint, MemBkt_Bullet); } ECS_MarkForRemoval(camPtr); @@ -176,7 +175,7 @@ PkeCamera *PkeCamera_GetCameras(int64_t bucketIndex, int64_t &count) { void PkeCamera_Init() { Buckets_Init(Camera_BucketContainer, MAX_CAMERAS_PER_BUCKET); - NullCamera.phys.inst = Pke_New(); + NullCamera.phys.inst = pk_new(); InstPos instPos{ .scale = btVector3(1.f, 1.f, 1.f), .mass = 1.f, @@ -187,11 +186,11 @@ void PkeCamera_Init() { void PkeCamera_Teardown() { Buckets_Destroy(Camera_BucketContainer); BtDynamicsWorld->removeRigidBody(NullCamera.phys.inst->bt.rigidBody); - Pke_Delete(NullCamera.phys.inst->bt.motionState, MemBkt_Bullet); - Pke_Delete(NullCamera.phys.inst->bt.rigidBody, MemBkt_Bullet); + pk_delete(NullCamera.phys.inst->bt.motionState, MemBkt_Bullet); + pk_delete(NullCamera.phys.inst->bt.rigidBody, MemBkt_Bullet); NullCamera.phys.inst->bt.motionState = CAFE_BABE(btDefaultMotionState); NullCamera.phys.inst->bt.rigidBody = CAFE_BABE(btRigidBody); - Pke_Delete(NullCamera.phys.inst); + pk_delete(NullCamera.phys.inst); NullCamera.phys.inst = CAFE_BABE(CompInstance); } @@ -206,10 +205,10 @@ void PkeCamera_Tick(double delta) { * could be that removing pos and rot from the camera would make this unnecessary? * See the camera serializer for more. */ - for (PkeHandleBucketIndex_T b = 0; b <= Camera_BucketContainer.pkeHandle.bucketIndex; ++b) { + for (pk_handle_bucket_index_T b = 0; b <= Camera_BucketContainer.pkeHandle.bucketIndex; ++b) { auto &bkt = Camera_BucketContainer.buckets[b]; long itemCount = Camera_BucketContainer.pkeHandle.bucketIndex == b ? Camera_BucketContainer.pkeHandle.itemIndex : Camera_BucketContainer.limits.itemIndex; - for (PkeHandleItemIndex_T i = 0; i < itemCount; ++i) { + for (pk_handle_item_index_T i = 0; i < itemCount; ++i) { auto &cam = bkt[i]; if (cam.handle == EntityHandle_MAX) { continue; -- cgit v1.2.3