Adding a new function that loads a map only if it is different (#6651)
* Adding a new function to load a map only if it is different
* Removing commented code
* Updated AddVehicleWheelsAnimation function
* Revert "Updated AddVehicleWheelsAnimation function"
This reverts commit 55405a3de7
.
* Small correction: removing blank space
* Changelog.md update
---------
Co-authored-by: Adri Ollero <adriollero@gmail.com>
Co-authored-by: Axel1092 <35765780+Axel1092@users.noreply.github.com>
This commit is contained in:
parent
51fde10129
commit
14447def90
|
@ -16,6 +16,7 @@
|
||||||
* Add keyword arguments for `carla.TrafficManager` Python API functions
|
* Add keyword arguments for `carla.TrafficManager` Python API functions
|
||||||
* Fixed bug causing the `FPixelReader::SavePixelsToDisk(PixelData, FilePath)` function to crash due to pixel array not set correctly.
|
* Fixed bug causing the `FPixelReader::SavePixelsToDisk(PixelData, FilePath)` function to crash due to pixel array not set correctly.
|
||||||
* Collisions detected by the CollisionSensor no longer generate more than one event per frame.
|
* Collisions detected by the CollisionSensor no longer generate more than one event per frame.
|
||||||
|
* Added API function to load a map only if it is different from the current one.
|
||||||
|
|
||||||
## CARLA 0.9.14
|
## CARLA 0.9.14
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
#include "carla/client/detail/Simulator.h"
|
#include "carla/client/detail/Simulator.h"
|
||||||
#include "carla/client/World.h"
|
#include "carla/client/World.h"
|
||||||
|
#include "carla/client/Map.h"
|
||||||
#include "carla/PythonUtil.h"
|
#include "carla/PythonUtil.h"
|
||||||
#include "carla/trafficmanager/TrafficManager.h"
|
#include "carla/trafficmanager/TrafficManager.h"
|
||||||
|
|
||||||
|
@ -77,6 +78,23 @@ namespace client {
|
||||||
return World{_simulator->LoadEpisode(std::move(map_name), reset_settings, map_layers)};
|
return World{_simulator->LoadEpisode(std::move(map_name), reset_settings, map_layers)};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return (and load) a new world (map) only when the requested map is different from the current one
|
||||||
|
|
||||||
|
void LoadWorldIfDifferent(
|
||||||
|
std::string map_name,
|
||||||
|
bool reset_settings = true,
|
||||||
|
rpc::MapLayer map_layers = rpc::MapLayer::All) const {
|
||||||
|
carla::client::World world = GetWorld();
|
||||||
|
carla::SharedPtr<carla::client::Map> current_map = world.GetMap();
|
||||||
|
std::string current_map_name = current_map->GetName();
|
||||||
|
std::string map_name_prefix = "Carla/Maps/";
|
||||||
|
std::string map_name_without_prefix = map_name;
|
||||||
|
std::string map_name_with_prefix = map_name_prefix + map_name;
|
||||||
|
if(!(map_name_without_prefix == current_map_name) && !(map_name_with_prefix == current_map_name)){
|
||||||
|
World World{_simulator->LoadEpisode(std::move(map_name), reset_settings, map_layers)};
|
||||||
|
}else{}
|
||||||
|
}
|
||||||
|
|
||||||
World GenerateOpenDriveWorld(
|
World GenerateOpenDriveWorld(
|
||||||
std::string opendrive,
|
std::string opendrive,
|
||||||
const rpc::OpendriveGenerationParameters & params,
|
const rpc::OpendriveGenerationParameters & params,
|
||||||
|
|
|
@ -198,6 +198,7 @@ void export_client() {
|
||||||
.def("request_file", &cc::Client::RequestFile, (arg("name")))
|
.def("request_file", &cc::Client::RequestFile, (arg("name")))
|
||||||
.def("reload_world", CONST_CALL_WITHOUT_GIL_1(cc::Client, ReloadWorld, bool), (arg("reset_settings")=true))
|
.def("reload_world", CONST_CALL_WITHOUT_GIL_1(cc::Client, ReloadWorld, bool), (arg("reset_settings")=true))
|
||||||
.def("load_world", CONST_CALL_WITHOUT_GIL_3(cc::Client, LoadWorld, std::string, bool, rpc::MapLayer), (arg("map_name"), arg("reset_settings")=true, arg("map_layers")=rpc::MapLayer::All))
|
.def("load_world", CONST_CALL_WITHOUT_GIL_3(cc::Client, LoadWorld, std::string, bool, rpc::MapLayer), (arg("map_name"), arg("reset_settings")=true, arg("map_layers")=rpc::MapLayer::All))
|
||||||
|
.def("load_world_if_different", &cc::Client::LoadWorldIfDifferent, (arg("map_name"), arg("reset_settings")=true, arg("map_layers")=rpc::MapLayer::All))
|
||||||
.def("generate_opendrive_world", CONST_CALL_WITHOUT_GIL_3(cc::Client, GenerateOpenDriveWorld, std::string,
|
.def("generate_opendrive_world", CONST_CALL_WITHOUT_GIL_3(cc::Client, GenerateOpenDriveWorld, std::string,
|
||||||
rpc::OpendriveGenerationParameters, bool), (arg("opendrive"), arg("parameters")=rpc::OpendriveGenerationParameters(),
|
rpc::OpendriveGenerationParameters, bool), (arg("opendrive"), arg("parameters")=rpc::OpendriveGenerationParameters(),
|
||||||
arg("reset_settings")=true))
|
arg("reset_settings")=true))
|
||||||
|
|
Loading…
Reference in New Issue