From e6e7f56c9bba3b2191583c4c1d0599370d1f00c7 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 20 Mar 2025 15:30:13 -0400 Subject: pke: replace PkeArray with pk_arr_t --- src/physics.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/physics.cpp') diff --git a/src/physics.cpp b/src/physics.cpp index d939e21..30620fa 100644 --- a/src/physics.cpp +++ b/src/physics.cpp @@ -5,6 +5,7 @@ #include "dynamic-array.hpp" #include "ecs.hpp" #include "game-settings.hpp" +#include "pk.h" #include #include @@ -30,7 +31,7 @@ btConstraintSolver *btSolver = nullptr; struct EntityCollision { CompInstance *a, *b; }; -PkeArray collisionsThisTick{}; +pk_arr_t collisionsThisTick{}; void *pke_btAlignedAllocFunc(size_t size, int alignment) { void *ptr = pk_new_bkt(size, alignment, MemBkt_Bullet); @@ -74,6 +75,7 @@ void pke_btFreeFunc(void *memBlock) { struct CollisionHandlerStruct : public btOverlapFilterCallback { ~CollisionHandlerStruct() override {} bool needBroadphaseCollision(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) const override { + EntityCollision col; auto collided = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) | (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask); if (collided) { @@ -83,10 +85,9 @@ struct CollisionHandlerStruct : public btOverlapFilterCallback { CompInstance *ent0 = reinterpret_cast(col0->getUserPointer()); CompInstance *ent1 = reinterpret_cast(col1->getUserPointer()); if (ent0 != nullptr && ent1 != nullptr) { - PkeArray_Add(&collisionsThisTick, { - .a = ent0, - .b = ent1, - }); + col.a = ent0; + col.b = ent1; + pk_arr_append(&collisionsThisTick, &col); } } } @@ -123,10 +124,10 @@ void Physics_Init() { int32_t Physics_Tick(double delta) { if (pkeSettings.isSimulationPaused == true) return 0; - PkeArray_SoftReset(&collisionsThisTick); + pk_arr_clear(&collisionsThisTick); auto tickCount = BtDynamicsWorld->stepSimulation(delta, 1); for (long i = 0; i < collisionsThisTick.next; ++i) { - ECS_HandleCollision(collisionsThisTick.data[i].a, collisionsThisTick.data[i].b); + ECS_HandleCollision(collisionsThisTick[i].a, collisionsThisTick[i].b); } return tickCount; } -- cgit v1.2.3