From 6587024207c9c1d581e2440d1ad84df3648ec329 Mon Sep 17 00:00:00 2001 From: Daniel Rakos Date: Wed, 20 Feb 2019 15:04:36 +0100 Subject: 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(-) (limited to 'modules/bullet/godot_ray_world_algorithm.cpp') diff --git a/modules/bullet/godot_ray_world_algorithm.cpp b/modules/bullet/godot_ray_world_algorithm.cpp index cadc8dd59e..3e06239453 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); -- cgit v1.2.3