diff options
| -rw-r--r-- | scene/3d/navigation_region_3d.cpp | 12 |
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); } } |
