Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. bool PhysicsManager::SweepRigidbodyTest(physx::PxRigidActor* actor, const Vector3f &direction, float distance, RaycastHit& outHit, int layer)
  2. {
  3.     if (!actor)
  4.         return false;
  5.  
  6.     Assert (IsNormalized (direction));
  7.  
  8.     if (distance == std::numeric_limits<float>::infinity())
  9.         distance = PX_MAX_F32;
  10.  
  11.     m_SweepShapesTmp.Update(*actor);
  12.  
  13.     PxSweepHit hit;
  14.  
  15.     int mask = 0xffffffff;
  16.     if (layer >= 0 && layer < kNumLayers)
  17.         mask = m_LayerCollisionMatrix[layer];
  18.     CastFilter filter(actor, true, mask);
  19.  
  20.     PxRigidBody& body = static_cast<PxRigidBody&>(*actor);  //###TODO: improve
  21.     PxU32 shapeIndex;
  22.     bool nb = PxRigidBodyExt::linearSweepSingle(body, GetDynamicsScene(), (const PxVec3&)direction, distance,
  23.                                     PxSceneQueryFlag::eDISTANCE|PxSceneQueryFlag::eIMPACT|PxSceneQueryFlag::eUV|PxSceneQueryFlag::eNORMAL/*|PxSceneQueryFlag::eINITIAL_OVERLAP_DISABLE*/,
  24.                                     hit, shapeIndex,
  25.                                     PxQueryFilterData(PxSceneQueryFilterFlag::eDYNAMIC|PxSceneQueryFilterFlag::eSTATIC|PxSceneQueryFilterFlag::ePREFILTER|PxSceneQueryFilterFlag::ePOSTFILTER),
  26.                                     &filter);
  27.  
  28.     if (nb)
  29.     {
  30.         PxToRaycastHit(hit, distance, outHit);
  31.         return true;
  32.     }
  33.  
  34.     return false;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement