| 156 | } |
| 157 | |
| 158 | void Physics::checkForFrustumIntersect() { |
| 159 | m_objectsInFrustum.resize(0); |
| 160 | dynamicsWorld->getDispatcher()->dispatchAllCollisionPairs(m_ghostObject->getOverlappingPairCache(), dynamicsWorld->getDispatchInfo(), dynamicsWorld->getDispatcher()); |
| 161 | |
| 162 | btBroadphasePairArray &collisionPairs = m_ghostObject->getOverlappingPairCache()->getOverlappingPairArray(); //New |
| 163 | numObjects = collisionPairs.size(); |
| 164 | static btManifoldArray m_manifoldArray; |
| 165 | for (int i = 0; i < numObjects; i++) { |
| 166 | const btBroadphasePair &collisionPair = collisionPairs[i]; |
| 167 | m_manifoldArray.resize(0); |
| 168 | if (collisionPair.m_algorithm) collisionPair.m_algorithm->getAllContactManifolds(m_manifoldArray); |
| 169 | else std::cerr << "No collisionPair.m_algorithm - probably m_dynamicsWorld->getDispatcher()->dispatchAllCollisionPairs(...) must be missing." << std::endl; |
| 170 | for (int j = 0; j < m_manifoldArray.size(); j++) { |
| 171 | btPersistentManifold *manifold = m_manifoldArray[j]; |
| 172 | if (manifold->getNumContacts() > 0) { |
| 173 | m_objectsInFrustum.push_back((btCollisionObject *) (manifold->getBody0() == m_ghostObject ? manifold->getBody1() : manifold->getBody0())); |
| 174 | break; |
| 175 | } |
| 176 | } |
| 177 | } |
| 178 | } |
| 179 | |
| 180 | void Physics::initSimulation() { |
| 181 | /*------- BULLET --------*/ |
nothing calls this directly
no outgoing calls
no test coverage detected