summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scene/3d/navigation_region_3d.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp
index 194d3082df..c9c4430787 100644
--- a/scene/3d/navigation_region_3d.cpp
+++ b/scene/3d/navigation_region_3d.cpp
@@ -262,11 +262,19 @@ void _bake_navigation_mesh(void *p_user_data) {
Ref<NavigationMeshSourceGeometryData3D> source_geometry_data = args->source_geometry_data;
NavigationServer3D::get_singleton()->bake_from_source_geometry_data(nav_mesh, source_geometry_data);
- args->nav_region->call_deferred(SNAME("_bake_finished"), nav_mesh);
+ if (!Thread::is_main_thread()) {
+ args->nav_region->call_deferred(SNAME("_bake_finished"), nav_mesh);
+ } else {
+ args->nav_region->_bake_finished(nav_mesh);
+ }
memdelete(args);
} else {
ERR_PRINT("Can't bake the navigation mesh if the `NavigationMesh` resource doesn't exist");
- args->nav_region->call_deferred(SNAME("_bake_finished"), Ref<NavigationMesh>());
+ if (!Thread::is_main_thread()) {
+ args->nav_region->call_deferred(SNAME("_bake_finished"), Ref<NavigationMesh>());
+ } else {
+ args->nav_region->_bake_finished(Ref<NavigationMesh>());
+ }
memdelete(args);
}
}