diff options
| author | Andrea Catania | 2018-02-16 19:06:00 +0100 |
|---|---|---|
| committer | Andrea Catania | 2018-02-20 12:43:47 +0100 |
| commit | 6ed392f47a1970f7815f6f76b7bacfd0bb51b87c (patch) | |
| tree | e380ae9cc66729978344ba74a62b9546439cbdf7 /modules/bullet/godot_result_callbacks.cpp | |
| parent | da612c324cec8c4f6bfcef9b35406ea215e699f6 (diff) | |
| download | godot-6ed392f47a1970f7815f6f76b7bacfd0bb51b87c.tar.gz godot-6ed392f47a1970f7815f6f76b7bacfd0bb51b87c.tar.zst godot-6ed392f47a1970f7815f6f76b7bacfd0bb51b87c.zip | |
Diffstat (limited to 'modules/bullet/godot_result_callbacks.cpp')
| -rw-r--r-- | modules/bullet/godot_result_callbacks.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/modules/bullet/godot_result_callbacks.cpp b/modules/bullet/godot_result_callbacks.cpp index 8d4ca6d6a..7c051f8f1 100644 --- a/modules/bullet/godot_result_callbacks.cpp +++ b/modules/bullet/godot_result_callbacks.cpp @@ -98,11 +98,16 @@ bool GodotKinClosestConvexResultCallback::needsCollision(btBroadphaseProxy *prox if (gObj == m_self_object) { return false; } else { - if (m_ignore_areas && gObj->getType() == CollisionObjectBullet::TYPE_AREA) { + + // A kinematic body can't be stopped by a rigid body since the mass of kinematic body is infinite + if (m_infinite_inertia && !btObj->isStaticOrKinematicObject()) + return false; + + if (gObj->getType() == CollisionObjectBullet::TYPE_AREA) return false; - } else if (m_self_object->has_collision_exception(gObj)) { + + if (m_self_object->has_collision_exception(gObj)) return false; - } } return true; } else { |
