Browse Source

Fix incorrect rounding in PhysicsWorld::RaycastSingleSegmented. Add some consts.

Eugene Kozlov 7 years ago
parent
commit
1587df868c
1 changed files with 5 additions and 5 deletions
  1. 5 5
      Source/Urho3D/Physics/PhysicsWorld.cpp

+ 5 - 5
Source/Urho3D/Physics/PhysicsWorld.cpp

@@ -436,16 +436,16 @@ void PhysicsWorld::RaycastSingleSegmented(PhysicsRaycastResult& result, const Ra
     if (maxDistance >= M_INFINITY)
         URHO3D_LOGWARNING("Infinite maxDistance in physics raycast is not supported");
 
+    const btVector3 direction = ToBtVector3(ray.direction_);
+    const auto count = CeilToInt(maxDistance / segmentDistance);
+
     btVector3 start = ToBtVector3(ray.origin_);
-    btVector3 end;
-    btVector3 direction = ToBtVector3(ray.direction_);
     float remainingDistance = maxDistance;
-    auto count = RoundToInt(maxDistance / segmentDistance);
 
     for (auto i = 0; i < count; ++i)
     {
-        float distance = Min(remainingDistance, segmentDistance);     // The last segment may be shorter
-        end = start + distance * direction;
+        const float distance = Min(remainingDistance, segmentDistance); // The last segment may be shorter
+        const btVector3 end = start + distance * direction;
 
         btCollisionWorld::ClosestRayResultCallback rayCallback(start, end);
         rayCallback.m_collisionFilterGroup = (short)0xffff;