Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
| Show First 20 Lines • Show All 446 Lines • ▼ Show 20 Lines | // m_collisionConfiguration = new btDefaultCollisionConfiguration(); | ||||
| m_filterCallback = new CcdOverlapFilterCallBack(this); | m_filterCallback = new CcdOverlapFilterCallBack(this); | ||||
| m_ghostPairCallback = new btGhostPairCallback(); | m_ghostPairCallback = new btGhostPairCallback(); | ||||
| m_broadphase->getOverlappingPairCache()->setOverlapFilterCallback(m_filterCallback); | m_broadphase->getOverlappingPairCache()->setOverlapFilterCallback(m_filterCallback); | ||||
| m_broadphase->getOverlappingPairCache()->setInternalGhostPairCallback(m_ghostPairCallback); | m_broadphase->getOverlappingPairCache()->setInternalGhostPairCallback(m_ghostPairCallback); | ||||
| SetSolverType(1);//issues with quickstep and memory allocations | SetSolverType(1);//issues with quickstep and memory allocations | ||||
| // m_dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,m_broadphase,m_solver,m_collisionConfiguration); | // m_dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,m_broadphase,m_solver,m_collisionConfiguration); | ||||
| m_dynamicsWorld = new btSoftRigidDynamicsWorld(dispatcher,m_broadphase,m_solver,m_collisionConfiguration); | m_dynamicsWorld = new btSoftRigidDynamicsWorld(dispatcher,m_broadphase,m_solver,m_collisionConfiguration); | ||||
| m_dynamicsWorld->setInternalTickCallback(&CcdPhysicsEnvironment::StaticSimulationSubtickCallback, this); | |||||
| //m_dynamicsWorld->getSolverInfo().m_linearSlop = 0.01f; | //m_dynamicsWorld->getSolverInfo().m_linearSlop = 0.01f; | ||||
| //m_dynamicsWorld->getSolverInfo().m_solverMode= SOLVER_USE_WARMSTARTING + SOLVER_USE_2_FRICTION_DIRECTIONS + SOLVER_RANDMIZE_ORDER + SOLVER_USE_FRICTION_WARMSTARTING; | //m_dynamicsWorld->getSolverInfo().m_solverMode= SOLVER_USE_WARMSTARTING + SOLVER_USE_2_FRICTION_DIRECTIONS + SOLVER_RANDMIZE_ORDER + SOLVER_USE_FRICTION_WARMSTARTING; | ||||
| m_debugDrawer = 0; | m_debugDrawer = 0; | ||||
| SetGravity(0.f,0.f,-9.81f); | SetGravity(0.f,0.f,-9.81f); | ||||
| } | } | ||||
| void CcdPhysicsEnvironment::AddCcdPhysicsController(CcdPhysicsController* ctrl) | void CcdPhysicsEnvironment::AddCcdPhysicsController(CcdPhysicsController* ctrl) | ||||
| ▲ Show 20 Lines • Show All 227 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| void CcdPhysicsEnvironment::DebugDrawWorld() | void CcdPhysicsEnvironment::DebugDrawWorld() | ||||
| { | { | ||||
| if (m_dynamicsWorld->getDebugDrawer() && m_dynamicsWorld->getDebugDrawer()->getDebugMode() >0) | if (m_dynamicsWorld->getDebugDrawer() && m_dynamicsWorld->getDebugDrawer()->getDebugMode() >0) | ||||
| m_dynamicsWorld->debugDrawWorld(); | m_dynamicsWorld->debugDrawWorld(); | ||||
| } | } | ||||
| void CcdPhysicsEnvironment::StaticSimulationSubtickCallback(btDynamicsWorld *world, btScalar timeStep) | |||||
| { | |||||
| // Get the pointer to the CcdPhysicsEnvironment associated with this Bullet world. | |||||
| CcdPhysicsEnvironment *this_ = static_cast<CcdPhysicsEnvironment*>(world->getWorldUserInfo()); | |||||
| this_->SimulationSubtickCallback(timeStep); | |||||
| } | |||||
| void CcdPhysicsEnvironment::SimulationSubtickCallback(btScalar timeStep) | |||||
| { | |||||
| std::set<CcdPhysicsController*>::iterator it; | |||||
| for (it = m_controllers.begin(); it != m_controllers.end(); it++) { | |||||
| (*it)->SimulationTick(timeStep); | |||||
| } | |||||
| } | |||||
| bool CcdPhysicsEnvironment::ProceedDeltaTime(double curTime,float timeStep,float interval) | bool CcdPhysicsEnvironment::ProceedDeltaTime(double curTime,float timeStep,float interval) | ||||
| { | { | ||||
| std::set<CcdPhysicsController*>::iterator it; | std::set<CcdPhysicsController*>::iterator it; | ||||
| int i; | int i; | ||||
| for (it=m_controllers.begin(); it!=m_controllers.end(); it++) | for (it=m_controllers.begin(); it!=m_controllers.end(); it++) | ||||
| { | { | ||||
| (*it)->SynchronizeMotionStates(timeStep); | (*it)->SynchronizeMotionStates(timeStep); | ||||
| ▲ Show 20 Lines • Show All 2,972 Lines • Show Last 20 Lines | |||||