Add ability to bake_navigation_mesh off thread.

This feature makes it possible to workaround problems such as:
 - long baking time due to heavy synchronization when parsing geometry
   from mesh instances
 - crash when freeing `NavigationMeshInstance` while baking
 - errors when actively baking node tree is being detached from the
   scene tree
This commit is contained in:
Pawel Lampe
2022-05-04 23:00:18 +02:00
parent c114823471
commit 88d3f14697
3 changed files with 11 additions and 6 deletions

View File

@ -12,8 +12,9 @@
<methods>
<method name="bake_navigation_mesh">
<return type="void" />
<argument index="0" name="on_thread" type="bool" default="true" />
<description>
Bakes the [NavigationMesh]. The baking is done in a separate thread because navigation baking is not a cheap operation. This can be done at runtime. When it is completed, it automatically sets the new [NavigationMesh].
Bakes the [NavigationMesh]. If [code]on_thread[/code] is set to [code]true[/code] (default), the baking is done on a separate thread. Baking on separate thread is useful because navigation baking is not a cheap operation. When it is completed, it automatically sets the new [NavigationMesh]. Please note that baking on separate thread may be very slow if geometry is parsed from meshes as async access to each mesh involves heavy synchronization.
</description>
</method>
<method name="get_region_rid" qualifiers="const">