diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-03-20 15:30:13 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-03-21 11:06:05 -0400 |
| commit | e6e7f56c9bba3b2191583c4c1d0599370d1f00c7 (patch) | |
| tree | 27476da693d9e75d920a698d57b74699f9f81c7a /src/physics.cpp | |
| parent | 9b39b4c8eab360e087423f06ecffb694a3b98b23 (diff) | |
pke: replace PkeArray with pk_arr_t
Diffstat (limited to 'src/physics.cpp')
| -rw-r--r-- | src/physics.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
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 <LinearMath/btAlignedAllocator.h> #include <btBulletDynamicsCommon.h> @@ -30,7 +31,7 @@ btConstraintSolver *btSolver = nullptr; struct EntityCollision { CompInstance *a, *b; }; -PkeArray<EntityCollision> collisionsThisTick{}; +pk_arr_t<EntityCollision> 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<CompInstance *>(col0->getUserPointer()); CompInstance *ent1 = reinterpret_cast<CompInstance *>(col1->getUserPointer()); if (ent0 != nullptr && ent1 != nullptr) { - PkeArray_Add<EntityCollision>(&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; } |
