From 9d4e5a466eb3c9b5edcabc8535d1ad6583702070 Mon Sep 17 00:00:00 2001 From: Ryan Heath Date: Sun, 7 Aug 2022 13:43:44 -0700 Subject: [PATCH] Add area monitor callback error checking --- servers/physics_2d/godot_area_2d.cpp | 8 ++++++++ servers/physics_3d/godot_area_3d.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/servers/physics_2d/godot_area_2d.cpp b/servers/physics_2d/godot_area_2d.cpp index 96c8dfc69e0..af90f96438d 100644 --- a/servers/physics_2d/godot_area_2d.cpp +++ b/servers/physics_2d/godot_area_2d.cpp @@ -248,6 +248,10 @@ void GodotArea2D::call_queries() { Callable::CallError ce; Variant ret; monitor_callback.callp((const Variant **)resptr, 5, ret, ce); + + if (ce.error != Callable::CallError::CALL_OK) { + ERR_PRINT_ONCE("Error calling event callback method " + Variant::get_callable_error_text(monitor_callback, (const Variant **)resptr, 5, ce)); + } } } else { monitored_bodies.clear(); @@ -286,6 +290,10 @@ void GodotArea2D::call_queries() { Callable::CallError ce; Variant ret; area_monitor_callback.callp((const Variant **)resptr, 5, ret, ce); + + if (ce.error != Callable::CallError::CALL_OK) { + ERR_PRINT_ONCE("Error calling event callback method " + Variant::get_callable_error_text(area_monitor_callback, (const Variant **)resptr, 5, ce)); + } } } else { monitored_areas.clear(); diff --git a/servers/physics_3d/godot_area_3d.cpp b/servers/physics_3d/godot_area_3d.cpp index fdb9f42b409..9765d0bf586 100644 --- a/servers/physics_3d/godot_area_3d.cpp +++ b/servers/physics_3d/godot_area_3d.cpp @@ -277,6 +277,10 @@ void GodotArea3D::call_queries() { Callable::CallError ce; Variant ret; monitor_callback.callp((const Variant **)resptr, 5, ret, ce); + + if (ce.error != Callable::CallError::CALL_OK) { + ERR_PRINT_ONCE("Error calling monitor callback method " + Variant::get_callable_error_text(monitor_callback, (const Variant **)resptr, 5, ce)); + } } } else { monitored_bodies.clear(); @@ -315,6 +319,10 @@ void GodotArea3D::call_queries() { Callable::CallError ce; Variant ret; area_monitor_callback.callp((const Variant **)resptr, 5, ret, ce); + + if (ce.error != Callable::CallError::CALL_OK) { + ERR_PRINT_ONCE("Error calling area monitor callback method " + Variant::get_callable_error_text(area_monitor_callback, (const Variant **)resptr, 5, ce)); + } } } else { monitored_areas.clear();