11 : m_radius(raduis), m_height(height)
16 auto capsule =
new btCapsuleShape(m_radius, m_height);
18 m_ghost = std::make_unique<btPairCachingGhostObject>();
21 start.setOrigin(btVector3(position.x, position.y, position.z));
22 m_ghost->setWorldTransform(start);
23 m_ghost->setCollisionShape(capsule);
24 m_ghost->setCollisionFlags(m_ghost->getCollisionFlags() | btCollisionObject::CF_CHARACTER_OBJECT);
25 m_ghost->setUserPointer(
this);
27 world->getBroadphase()->getOverlappingPairCache()->setInternalGhostPairCallback(
28 new btGhostPairCallback());
30 const btScalar stepHeight = 0.35f;
31 m_controller = std::make_unique<btKinematicCharacterController>(m_ghost.get(), capsule, stepHeight);
33 m_controller->setMaxSlope(btRadians(50.0f));
34 m_controller->setGravity(world->getGravity());
36 world->addCollisionObject(
38 btBroadphaseProxy::CharacterFilter,
39 btBroadphaseProxy::AllFilter & ~btBroadphaseProxy::SensorTrigger);
40 world->addAction(m_controller.get());