58 return ClosestRayResultCallback::addSingleResult(rayResult, normalInWorldSpace);
82 if (normalInWorldSpace)
98 return ClosestConvexResultCallback::addSingleResult(convexResult, normalInWorldSpace);
123 return normal * magnitude;
137 m_up.setValue(0.0f, 0.0f, 1.0f);
194 bool penetration =
false;
210 if ((obj0 && !obj0->hasContactResponse()) || (obj1 && !obj1->hasContactResponse()))
216 if (collisionPair->m_algorithm)
223 for (
int p = 0; p < manifold->getNumContacts(); p++)
311 int numPenetrationLoops = 0;
315 numPenetrationLoops++;
317 if (numPenetrationLoops > 4)
342 bool collides = (body0->getBroadphaseHandle()->m_collisionFilterGroup & body1->getBroadphaseHandle()->m_collisionFilterMask) != 0;
343 collides = collides && (body1->getBroadphaseHandle()->m_collisionFilterGroup & body0->getBroadphaseHandle()->m_collisionFilterMask);
350 btScalar movementLength = movementDirection.length();
353 movementDirection.normalize();
356 reflectDir.normalize();
371 if (normalMag != 0.0)
373 btVector3 perpComponent = perpindicularDir *
btScalar(normalMag * movementLength);
402 while (fraction >
btScalar(0.01) && maxIter-- > 0)
431 fraction -=
callback.m_closestHitFraction;
446 currentDir.normalize();
469 bool runonce =
false;
504 end_double.setIdentity();
547 if (downVelocity2 > 0.0 && downVelocity2 < stepHeight && has_hit ==
true && runonce ==
false && (
m_wasOnGround || !
m_wasJumping))
553 downVelocity = stepHeight;
686 while (cache->getOverlappingPairArray().size() > 0)
688 cache->removeOverlappingPair(cache->getOverlappingPairArray()[0].m_pProxy0, cache->getOverlappingPairArray()[0].m_pProxy1, collisionWorld->
getDispatcher());
696 xform.setOrigin(origin);
730 xform.setRotation(orn);
838 int numPenetrationLoops = 0;
842 numPenetrationLoops++;
844 if (numPenetrationLoops > 4)
884 currently no jumping.
886 m_rigidBody->getMotionState()->getWorldTransform (xform);
890 m_rigidBody->applyCentralImpulse (up * magnitude);
941 return sUpAxisDirection;
955 if (up.length2() > 0 &&
m_gravity > 0.0f)
971 if (up.length2() > 0)
972 m_up = up.normalized();
983 xform.setRotation(orn);
989 if (v0.length2() == 0.0f ||
v1.length2() == 0.0f)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
ATTR_WARN_UNUSED_RESULT const BMVert * v
btConvexShape()
not supported on IBM SDK, until we fix the alignment of btVector3
static btVector3 getNormalizedVector(const btVector3 &v)
btScalar m_maxSlopeRadians
virtual btVector3 getLinearVelocity() const
btConvexShape * m_convexShape
void setUp(const btVector3 &up)
void setUpVector(const btVector3 &up)
btVector3 perpindicularComponent(const btVector3 &direction, const btVector3 &normal)
btVector3 m_targetPosition
btVector3 getGravity() const
btScalar m_angularDamping
virtual void setWalkDirection(const btVector3 &walkDirection)
virtual void setAngularVelocity(const btVector3 &velocity)
btVector3 computeReflectionDirection(const btVector3 &direction, const btVector3 &normal)
btScalar m_velocityTimeInterval
btScalar m_maxPenetrationDepth
void debugDraw(btIDebugDraw *debugDrawer)
btActionInterface interface
void stepDown(btCollisionWorld *collisionWorld, btScalar dt)
void jump(const btVector3 &v=btVector3(0, 0, 0))
btScalar getMaxPenetrationDepth() const
btKinematicCharacterController(btPairCachingGhostObject *ghostObject, btConvexShape *convexShape, btScalar stepHeight, const btVector3 &up=btVector3(1.0, 0.0, 0.0))
btQuaternion m_targetOrientation
void setJumpSpeed(btScalar jumpSpeed)
btManifoldArray m_manifoldArray
keep track of the contact manifolds
btVector3 m_walkDirection
this is the desired walk direction, set by the user
void stepForwardAndStrafe(btCollisionWorld *collisionWorld, const btVector3 &walkMove)
btScalar m_maxSlopeCosine
void setMaxSlope(btScalar slopeRadians)
void setStepHeight(btScalar h)
void setUpInterpolate(bool value)
void setMaxPenetrationDepth(btScalar d)
void setFallSpeed(btScalar fallSpeed)
void setGravity(const btVector3 &gravity)
btScalar m_currentStepOffset
void updateTargetPositionBasedOnCollision(const btVector3 &hit_normal, btScalar tangentMag=btScalar(0.0), btScalar normalMag=btScalar(1.0))
void stepUp(btCollisionWorld *collisionWorld)
virtual void setLinearVelocity(const btVector3 &velocity)
void preStep(btCollisionWorld *collisionWorld)
~btKinematicCharacterController()
void setMaxJumpHeight(btScalar maxJumpHeight)
virtual const btVector3 & getAngularVelocity() const
btPairCachingGhostObject * getGhostObject()
virtual bool needsCollision(const btCollisionObject *body0, const btCollisionObject *body1)
bool m_useGhostObjectSweepTest
virtual void setVelocityForTimeInterval(const btVector3 &velocity, btScalar timeInterval)
btQuaternion m_currentOrientation
btScalar m_verticalVelocity
btVector3 m_normalizedDirection
btVector3 m_currentPosition
void warp(const btVector3 &origin)
btQuaternion getRotation(btVector3 &v0, btVector3 &v1) const
btVector3 parallelComponent(const btVector3 &direction, const btVector3 &normal)
bool recoverFromPenetration(btCollisionWorld *collisionWorld)
btScalar m_verticalOffset
static btVector3 * getUpAxisDirections()
btScalar getMaxSlope() const
void playerStep(btCollisionWorld *collisionWorld, btScalar dt)
btPairCachingGhostObject * m_ghostObject
btHashedOverlappingPairCache()
int getNumOverlappingPairs() const
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
SIMD_FORCE_INLINE btQuaternion shortestArcQuatNormalize2(btVector3 &v0, btVector3 &v1)
SIMD_FORCE_INLINE btScalar btAcos(btScalar x)
SIMD_FORCE_INLINE btScalar btCos(btScalar x)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
SIMD_FORCE_INLINE btScalar btSin(btScalar x)
SIMD_FORCE_INLINE btScalar btFabs(btScalar x)
SIMD_FORCE_INLINE btScalar btRadians(btScalar x)
SIMD_FORCE_INLINE btScalar btPow(btScalar x, btScalar y)
SIMD_FORCE_INLINE btScalar length2() const
Return the length of the vector squared.
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
SIMD_FORCE_INLINE btScalar distance2(const btVector3 &v) const
Return the distance squared between the ends of this and another vector This is symantically treating...
SIMD_FORCE_INLINE int size() const
return the number of elements in the array
SIMD_FORCE_INLINE void resize(int newsize, const T &fillData=T())
virtual void setAabb(btBroadphaseProxy *proxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *dispatcher)=0
CollisionWorld is interface and container for the collision detection.
const btBroadphaseInterface * getBroadphase() const
btDispatcher * getDispatcher()
void convexSweepTest(const btConvexShape *castShape, const btTransform &from, const btTransform &to, ConvexResultCallback &resultCallback, btScalar allowedCcdPenetration=btScalar(0.)) const
btDispatcherInfo & getDispatchInfo()
virtual void dispatchAllCollisionPairs(btOverlappingPairCache *pairCache, const btDispatcherInfo &dispatchInfo, btDispatcher *dispatcher)=0
virtual btScalar addSingleResult(btCollisionWorld::LocalConvexResult &convexResult, bool normalInWorldSpace)
btKinematicClosestNotMeConvexResultCallback(btCollisionObject *me, const btVector3 &up, btScalar minSlopeDot)
virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult &rayResult, bool normalInWorldSpace)
btKinematicClosestNotMeRayResultCallback(btCollisionObject *me)
btScalar getDistance() const
btVector3 m_normalWorldOnB
btHashedOverlappingPairCache * getOverlappingPairCache()
The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatr...
DEGForeachIDComponentCallback callback
IconTextureDrawCall normal
ccl_gpu_kernel_postfix ccl_global float int int int int float bool reset
clear internal cached data and reset random seed
ccl_device_inline float2 fabs(const float2 &a)
const btCollisionObject * m_hitCollisionObject
ClosestConvexResultCallback(const btVector3 &convexFromWorld, const btVector3 &convexToWorld)
ClosestRayResultCallback(const btVector3 &rayFromWorld, const btVector3 &rayToWorld)
int m_collisionFilterMask
int m_collisionFilterGroup
btVector3 m_hitNormalLocal
const btCollisionObject * m_hitCollisionObject
const btCollisionObject * m_collisionObject
btScalar m_allowedCcdPenetration