1 #ifndef RADIX_PHYSICS_SYSTEM_HPP
2 #define RADIX_PHYSICS_SYSTEM_HPP
4 #include <unordered_set>
6 #include <bullet/btBulletDynamicsCommon.h>
7 #include <bullet/BulletCollision/CollisionDispatch/btGhostObject.h>
14 class CollisionDispatcher;
23 virtual btScalar
addSingleResult(btManifoldPoint& cp,
const btCollisionObjectWrapper* colObj0Wrap,
24 int partId0,
int index0,
const btCollisionObjectWrapper* colObj1Wrap,
int partId1,
int index1) {
34 : body0(body0), body1(body1) {}
40 return (
size_t) info.
body0 + (size_t) info.
body1;
48 (info0.
body0->getUserPointer() == info1.
body0->getUserPointer()) &&
49 (info0.
body1->getUserPointer() == info1.
body1->getUserPointer());
66 btSequentialImpulseConstraintSolver *
solver;
74 return "PhysicsSystem";
78 return System::getTypeId<std::remove_reference<decltype(*this)>::type>();
static PhysicsSystem * instance
Definition: PhysicsSystem.hpp:55
PhysicsSystem(World &, BaseGame *game)
Definition: PhysicsSystem.cpp:13
bool operator()(const CollisionInfo &info0, const CollisionInfo &info1) const
Definition: PhysicsSystem.hpp:46
Definition: GameController.hpp:7
CheckCollisionCallback(bool *remove)
Definition: PhysicsSystem.hpp:21
bool * remove
Definition: PhysicsSystem.hpp:20
Definition: PhysicsSystem.hpp:109
Definition: System.hpp:21
virtual btScalar addSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper *colObj1Wrap, int partId1, int index1)
Definition: PhysicsSystem.hpp:23
Definition: PhysicsSystem.hpp:94
CollisionInfo(btCollisionObject *body0, btCollisionObject *body1)
Definition: PhysicsSystem.hpp:33
const EventType getType() const
Definition: PhysicsSystem.hpp:100
Definition: Uncollider.hpp:23
btBroadphaseInterface * broadphase
Definition: PhysicsSystem.hpp:63
TypeId getTypeId() const
Definition: PhysicsSystem.hpp:77
unsigned long operator()(const CollisionInfo &info) const
Definition: PhysicsSystem.hpp:39
Definition: TimeDelta.hpp:8
CollisionInfo & info
Definition: PhysicsSystem.hpp:104
Definition: PhysicsSystem.hpp:53
btSequentialImpulseConstraintSolver * solver
Definition: PhysicsSystem.hpp:66
const uint32_t StaticEventType
Definition: Event.hpp:10
btDiscreteDynamicsWorld * physicsWorld
Definition: PhysicsSystem.hpp:67
Definition: PhysicsSystem.hpp:44
std::string EventTypeName
Definition: Event.hpp:13
btDefaultCollisionConfiguration * collisionConfiguration
Definition: PhysicsSystem.hpp:64
static constexpr StaticEventType Type
Definition: PhysicsSystem.hpp:99
void checkCollisions()
Definition: PhysicsSystem.cpp:123
Uncollider * filterCallback
Definition: PhysicsSystem.hpp:60
static constexpr StaticEventTypeName TypeName
Definition: PhysicsSystem.hpp:95
static std::unordered_set< CollisionInfo, CollisionInfoHash, CollisionInfoEqual > collisions
Definition: PhysicsSystem.hpp:88
static constexpr StaticEventType Type
Definition: PhysicsSystem.hpp:114
const EventTypeName getTypeName() const
Definition: PhysicsSystem.hpp:111
static constexpr StaticEventTypeName TypeName
Definition: PhysicsSystem.hpp:110
CollisionAddedEvent(CollisionInfo &info, BaseGame *game)
Definition: PhysicsSystem.hpp:106
static bool contactProcessedCallback(btManifoldPoint &cp, void *body0, void *body1)
Definition: PhysicsSystem.cpp:108
EventDispatcher::CallbackHolder cbCompAdd
Definition: PhysicsSystem.hpp:57
btGhostPairCallback * gpCallback
Definition: PhysicsSystem.hpp:68
CollisionInfo & info
Definition: PhysicsSystem.hpp:119
Definition: PhysicsSystem.hpp:30
Definition: PhysicsSystem.hpp:18
btCollisionObject * body1
Definition: PhysicsSystem.hpp:32
SystemTypeId TypeId
Definition: System.hpp:26
BaseGame * game
Definition: PhysicsSystem.hpp:120
static constexpr EventType TypeNameHash(StaticEventTypeName etn)
Definition: Event.hpp:16
EventDispatcher::CallbackHolder cbCompRem
Definition: PhysicsSystem.hpp:57
CollisionRemovedEvent(CollisionInfo &info, BaseGame *game)
Definition: PhysicsSystem.hpp:121
const EventTypeName getTypeName() const
Definition: PhysicsSystem.hpp:96
btDiscreteDynamicsWorld & getPhysicsWorld() const
Definition: PhysicsSystem.hpp:81
const char * getName() const
Definition: PhysicsSystem.hpp:73
Definition: CollisionDispatcher.hpp:8
Definition: EventDispatcher.hpp:20
uint32_t EventType
Definition: Event.hpp:11
void update(TDelta timeDelta)
Definition: PhysicsSystem.cpp:87
const char *const StaticEventTypeName
Definition: Event.hpp:12
btCollisionObject * body0
Definition: PhysicsSystem.hpp:31
Definition: BaseGame.hpp:22
CollisionDispatcher * dispatcher
Definition: PhysicsSystem.hpp:65
~PhysicsSystem()
Definition: PhysicsSystem.cpp:83
BaseGame * game
Definition: PhysicsSystem.hpp:61
Definition: PhysicsSystem.hpp:37
BaseGame * game
Definition: PhysicsSystem.hpp:105
const EventType getType() const
Definition: PhysicsSystem.hpp:115