From 6587024207c9c1d581e2440d1ad84df3648ec329 Mon Sep 17 00:00:00 2001 From: Daniel Rakos Date: Wed, 20 Feb 2019 15:04:36 +0100 Subject: [PATCH] Fix RayShape collision jitter when used with a RigidBody Scaling the depth was the wrong solution for the KinematicBody jitter because it causes jitter with RigidBody. Instead scale the margin that is ignored to allow KinematicBody to still pick up the ray shape in the kinematic test when the shape is just at margin distance from another one. This solution does not cause jitter with either KinematicBody or RigidBody. --- modules/bullet/godot_ray_world_algorithm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/bullet/godot_ray_world_algorithm.cpp b/modules/bullet/godot_ray_world_algorithm.cpp index cadc8dd59ef..3e062394539 100644 --- a/modules/bullet/godot_ray_world_algorithm.cpp +++ b/modules/bullet/godot_ray_world_algorithm.cpp @@ -100,8 +100,8 @@ void GodotRayWorldAlgorithm::processCollision(const btCollisionObjectWrapper *bo btScalar depth(ray_shape->getScaledLength() * (btResult.m_closestHitFraction - 1)); - if (depth >= -ray_shape->getMargin()) - depth *= 0.5; + if (depth >= -ray_shape->getMargin() * 0.5) + depth = 0; if (ray_shape->getSlipsOnSlope()) resultOut->addContactPoint(btResult.m_hitNormalWorld, btResult.m_hitPointWorld, depth);