diff options
author | Pawel Lampe <pawel.lampe@gmail.com> | 2024-01-29 22:28:01 +0100 |
---|---|---|
committer | Pawel Lampe <pawel.lampe@gmail.com> | 2024-02-05 22:04:22 +0100 |
commit | c2cfc0d409b5adf892c6daa86d128f6e98633bee (patch) | |
tree | a4bd096edc45131e5da177295ddabe802b7d64be /tests/servers/test_navigation_server_3d.h | |
parent | 4b6ad349886288405890b07d4a8da425eb3c97ec (diff) | |
download | redot-engine-c2cfc0d409b5adf892c6daa86d128f6e98633bee.tar.gz |
Expose `is_baking` method in navigation servers and region nodes.
Diffstat (limited to 'tests/servers/test_navigation_server_3d.h')
-rw-r--r-- | tests/servers/test_navigation_server_3d.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/servers/test_navigation_server_3d.h b/tests/servers/test_navigation_server_3d.h index 5ab2975b74..5b5c1faac8 100644 --- a/tests/servers/test_navigation_server_3d.h +++ b/tests/servers/test_navigation_server_3d.h @@ -720,6 +720,24 @@ TEST_SUITE("[Navigation]") { navigation_server->free(map); navigation_server->process(0.0); // Give server some cycles to commit. } + + TEST_CASE("[NavigationServer3D] Server should be able to bake asynchronously") { + NavigationServer3D *navigation_server = NavigationServer3D::get_singleton(); + Ref<NavigationMesh> navigation_mesh = memnew(NavigationMesh); + Ref<NavigationMeshSourceGeometryData3D> source_geometry = memnew(NavigationMeshSourceGeometryData3D); + + Array arr; + arr.resize(RS::ARRAY_MAX); + BoxMesh::create_mesh_array(arr, Vector3(10.0, 0.001, 10.0)); + source_geometry->add_mesh_array(arr, Transform3D()); + + // Race condition is present below, but baking should take many orders of magnitude + // longer than basic checks on the main thread, so it's fine. + navigation_server->bake_from_source_geometry_data_async(navigation_mesh, source_geometry, Callable()); + CHECK(navigation_server->is_baking_navigation_mesh(navigation_mesh)); + CHECK_EQ(navigation_mesh->get_polygon_count(), 0); + CHECK_EQ(navigation_mesh->get_vertices().size(), 0); + } } } //namespace TestNavigationServer3D |