From ef9b82a0760a769459f3e3402515e56f269844d4 Mon Sep 17 00:00:00 2001 From: rune-scape Date: Tue, 18 Jun 2024 02:18:11 -0700 Subject: [PATCH] fix rare physics crash --- servers/physics_2d/godot_body_2d.cpp | 4 ++++ servers/physics_3d/godot_body_3d.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/servers/physics_2d/godot_body_2d.cpp b/servers/physics_2d/godot_body_2d.cpp index 01996dc43c4..c401e6eee79 100644 --- a/servers/physics_2d/godot_body_2d.cpp +++ b/servers/physics_2d/godot_body_2d.cpp @@ -616,6 +616,8 @@ void GodotBody2D::integrate_velocities(real_t p_step) { return; } + ERR_FAIL_NULL(get_space()); + if (fi_callback_data || body_state_callback.is_valid()) { get_space()->body_add_to_state_query_list(&direct_state_query_list); } @@ -705,6 +707,8 @@ bool GodotBody2D::sleep_test(real_t p_step) { return false; } + ERR_FAIL_NULL_V(get_space(), true); + if (Math::abs(angular_velocity) < get_space()->get_body_angular_velocity_sleep_threshold() && Math::abs(linear_velocity.length_squared()) < get_space()->get_body_linear_velocity_sleep_threshold() * get_space()->get_body_linear_velocity_sleep_threshold()) { still_time += p_step; diff --git a/servers/physics_3d/godot_body_3d.cpp b/servers/physics_3d/godot_body_3d.cpp index 407957b904d..669c4b985b8 100644 --- a/servers/physics_3d/godot_body_3d.cpp +++ b/servers/physics_3d/godot_body_3d.cpp @@ -675,6 +675,8 @@ void GodotBody3D::integrate_velocities(real_t p_step) { return; } + ERR_FAIL_NULL(get_space()); + if (fi_callback_data || body_state_callback.is_valid()) { get_space()->body_add_to_state_query_list(&direct_state_query_list); } @@ -784,6 +786,8 @@ bool GodotBody3D::sleep_test(real_t p_step) { return false; } + ERR_FAIL_NULL_V(get_space(), true); + if (Math::abs(angular_velocity.length()) < get_space()->get_body_angular_velocity_sleep_threshold() && Math::abs(linear_velocity.length_squared()) < get_space()->get_body_linear_velocity_sleep_threshold() * get_space()->get_body_linear_velocity_sleep_threshold()) { still_time += p_step;