summaryrefslogtreecommitdiffstats
path: root/tests/servers/test_navigation_server_3d.h
diff options
context:
space:
mode:
authorPawel Lampe <pawel.lampe@gmail.com>2024-01-29 22:28:01 +0100
committerPawel Lampe <pawel.lampe@gmail.com>2024-02-05 22:04:22 +0100
commitc2cfc0d409b5adf892c6daa86d128f6e98633bee (patch)
treea4bd096edc45131e5da177295ddabe802b7d64be /tests/servers/test_navigation_server_3d.h
parent4b6ad349886288405890b07d4a8da425eb3c97ec (diff)
downloadredot-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.h18
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