Merge pull request #102766 from smix8/region_filters

Add path query region filters
This commit is contained in:
Thaddeus Crews
2025-03-11 16:54:05 -05:00
13 changed files with 235 additions and 3 deletions

View File

@ -793,6 +793,54 @@ TEST_SUITE("[Navigation]") {
CHECK_EQ(query_result->get_path_owner_ids().size(), 0);
}
SUBCASE("Elaborate query with excluded region should yield empty path") {
Ref<NavigationPathQueryParameters3D> query_parameters;
query_parameters.instantiate();
query_parameters->set_map(map);
query_parameters->set_start_position(Vector3(10, 0, 10));
query_parameters->set_target_position(Vector3(0, 0, 0));
Array excluded_regions;
excluded_regions.push_back(region);
query_parameters->set_excluded_regions(excluded_regions);
Ref<NavigationPathQueryResult3D> query_result;
query_result.instantiate();
navigation_server->query_path(query_parameters, query_result);
CHECK_EQ(query_result->get_path().size(), 0);
}
SUBCASE("Elaborate query with included region should yield path") {
Ref<NavigationPathQueryParameters3D> query_parameters;
query_parameters.instantiate();
query_parameters->set_map(map);
query_parameters->set_start_position(Vector3(10, 0, 10));
query_parameters->set_target_position(Vector3(0, 0, 0));
Array included_regions;
included_regions.push_back(region);
query_parameters->set_included_regions(included_regions);
Ref<NavigationPathQueryResult3D> query_result;
query_result.instantiate();
navigation_server->query_path(query_parameters, query_result);
CHECK_NE(query_result->get_path().size(), 0);
}
SUBCASE("Elaborate query with excluded and included region should yield empty path") {
Ref<NavigationPathQueryParameters3D> query_parameters;
query_parameters.instantiate();
query_parameters->set_map(map);
query_parameters->set_start_position(Vector3(10, 0, 10));
query_parameters->set_target_position(Vector3(0, 0, 0));
Array excluded_regions;
excluded_regions.push_back(region);
query_parameters->set_excluded_regions(excluded_regions);
Array included_regions;
included_regions.push_back(region);
query_parameters->set_included_regions(included_regions);
Ref<NavigationPathQueryResult3D> query_result;
query_result.instantiate();
navigation_server->query_path(query_parameters, query_result);
CHECK_EQ(query_result->get_path().size(), 0);
}
navigation_server->free(region);
navigation_server->free(map);
navigation_server->process(0.0); // Give server some cycles to commit.