From ced4e1e0e0b10aee5c8c1e37af6507a1e662612b Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Wed, 11 Jul 2018 18:02:19 -0700 Subject: [PATCH] Fix blue screen after player step returns NaN values --- libraries/physics/src/CharacterController.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index aaf2c0a46b..0bbfa41a12 100755 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -277,10 +277,14 @@ void CharacterController::playerStep(btCollisionWorld* collisionWorld, btScalar btVector3 shapeLocalOffset = glmToBullet(_shapeLocalOffset); btVector3 swingDisplacement = rotateVector(endRot, -shapeLocalOffset) - rotateVector(startRot, -shapeLocalOffset); - _followLinearDisplacement = linearDisplacement + swingDisplacement + _followLinearDisplacement; - _followAngularDisplacement = angularDisplacement * _followAngularDisplacement; + if (!isNaN(bulletToGLM(endPos)) && !isNaN(bulletToGLM(endRot))) { + _followLinearDisplacement = linearDisplacement + swingDisplacement + _followLinearDisplacement; + _followAngularDisplacement = angularDisplacement * _followAngularDisplacement; - _rigidBody->setWorldTransform(btTransform(endRot, endPos)); + _rigidBody->setWorldTransform(btTransform(endRot, endPos)); + } else { + qCWarning(physics) << "CharacterController::playerStep produced NaN."; + } } _followTime += dt;