diff options
| author | smix8 <52464204+smix8@users.noreply.github.com> | 2023-07-14 16:15:14 +0200 |
|---|---|---|
| committer | smix8 <52464204+smix8@users.noreply.github.com> | 2023-07-14 16:15:14 +0200 |
| commit | bb5f16033dd377b465c5eaadbe35b6c1b4b3a082 (patch) | |
| tree | 2fe6ac1b4257800b48e99be96ab26deac8a427e5 | |
| parent | 60f3b7967cbd00b4e1f52d33d372646f7bec02f6 (diff) | |
| download | redot-engine-bb5f16033dd377b465c5eaadbe35b6c1b4b3a082.tar.gz | |
Make NavigationRegion3D baking NavMesh on the main thread not finish deferred
Makes NavigationRegion3D baking NavMesh on the main thread not finish deferred.
| -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); } } |
