summaryrefslogtreecommitdiff
path: root/src/physics.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-03-20 15:30:13 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-03-21 11:06:05 -0400
commite6e7f56c9bba3b2191583c4c1d0599370d1f00c7 (patch)
tree27476da693d9e75d920a698d57b74699f9f81c7a /src/physics.cpp
parent9b39b4c8eab360e087423f06ecffb694a3b98b23 (diff)
pke: replace PkeArray with pk_arr_t
Diffstat (limited to 'src/physics.cpp')
-rw-r--r--src/physics.cpp15
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;
}