From 2009501214f3c2e3f8d8b1a06432afdf39276bd5 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Wed, 7 Nov 2018 14:49:35 -0500 Subject: Added Kinematic Character Controllers --- src/shared/phys/physcommon.cpp | 46 +++++++++++++++++++++++++++++++----------- src/shared/phys/physcommon.hpp | 4 +++- 2 files changed, 37 insertions(+), 13 deletions(-) (limited to 'src/shared/phys') diff --git a/src/shared/phys/physcommon.cpp b/src/shared/phys/physcommon.cpp index 11f18c9..783f282 100644 --- a/src/shared/phys/physcommon.cpp +++ b/src/shared/phys/physcommon.cpp @@ -10,22 +10,43 @@ using namespace std::chrono; btDiscreteDynamicsWorld* World; std::list Objects; +std::list Chars; + +extern void dropRigidBody(btRigidBody* b); +extern void dropChar(btKinematicCharacterController* a); // Removes all objects from the world -void ClearObjects(btDiscreteDynamicsWorld* wr, std::list objs, void(*f)(btRigidBody*)) { +//void ClearObjects(btDiscreteDynamicsWorld* wr, std::list objs, void(*f)(btRigidBody*)) { - for(std::list::iterator Iterator = objs.begin(); Iterator != objs.end(); ++Iterator) { - btRigidBody *Object = *Iterator; + //for(std::list::iterator Iterator = objs.begin(); Iterator != objs.end(); ++Iterator) { + //btRigidBody *Object = *Iterator; - if(f){ - (*f)(Object); - } + //if(f){ + //(*f)(Object); + //} + + //// Remove the object from the world + //wr->removeRigidBody(Object); + //delete Object; + //} + //objs.clear(); +//} +void ClearObjects(){ + for(std::list::iterator itr = Objects.begin(); itr != Objects.end(); ++itr){ + dropRigidBody(*itr); + World->removeRigidBody(*itr); + delete *itr; + } + Objects.clear(); +} - // Remove the object from the world - wr->removeRigidBody(Object); - delete Object; +void ClearChars(){ + for(std::list::iterator itr = Chars.begin(); itr != Chars.end(); ++itr){ + dropChar(*itr); + World->removeVehicle(*itr); + delete *itr; } - objs.clear(); + Chars.clear(); } btBroadphaseInterface* BroadPhase; @@ -48,8 +69,9 @@ void phys_genesis(){ //printf("Created physics world: %p\n",World); } -void phys_shutdown(void(*f)(btRigidBody*)){ - ClearObjects(World,Objects,f); +void phys_shutdown(){ + ClearObjects(); + ClearChars(); printf("cleared objects\n"); delete BroadPhase; printf("deleted broadphase\n"); diff --git a/src/shared/phys/physcommon.hpp b/src/shared/phys/physcommon.hpp index 00061ec..dd5fe14 100644 --- a/src/shared/phys/physcommon.hpp +++ b/src/shared/phys/physcommon.hpp @@ -1,5 +1,7 @@ #ifndef _shared_physcommon_ +#include +#include void gameloop_phys(void(*f)(btRigidBody*)); void phys_genesis(); -void phys_shutdown(void(*f)(btRigidBody*)); +void phys_shutdown(); #endif -- cgit v1.2.3-70-g09d2