From 01852e6a6e183339dd4a5ca53488451b93df7882 Mon Sep 17 00:00:00 2001 From: Marcel Pi Date: Fri, 8 Mar 2024 20:31:22 +0100 Subject: [PATCH] - Update gitignore. - Add launch and launch-only CMake custom targets. - Temporary workaround for lack of a properly parameterized toolchain file. - Change all references to CarlaUE4 to CarlaUnreal. - Separate CMake Options files. --- .gitignore | 64 +---- CMake/CarlaDependencies.cmake | 253 +++++++++---------- CMake/CarlaOptions.cmake | 275 +-------------------- CMake/LinuxToolchain.cmake | 12 +- CMake/Options/Common.cmake | 87 +++++++ CMake/Options/Dependencies.cmake | 172 +++++++++++++ CMake/Options/Unreal.cmake | 50 ++++ CMakeLists.txt | 49 +++- PythonAPI/examples/.gitignore | 3 +- Unreal/CMakeLists.txt | 90 +++++-- Unreal/CarlaUnreal/Config/DefaultInput.ini | 112 ++++++--- 11 files changed, 642 insertions(+), 525 deletions(-) create mode 100644 CMake/Options/Common.cmake create mode 100644 CMake/Options/Dependencies.cmake create mode 100644 CMake/Options/Unreal.cmake diff --git a/.gitignore b/.gitignore index b376352f3..e171c1b0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,67 +1,9 @@ .vs/ .vscode/ - .cache/ +__pycache__/ Build/ -out/ - -Dist/ Doxygen/ -Deprecated/PythonClient/dist/ -TrafficManager/build/ -Util/Build/ -Dependencies/ -Install/ -Plugins/ - -!Unreal/CarlaUnreal/Plugins -Unreal/CarlaUnreal/Plugins/Streetmap -Unreal/CarlaUnreal/Plugins/HoudiniEngine - -/ExportedMaps -/Import/* -!/Import/README.md - -*.VC.db -*.VC.opendb - -*.o -*.a -*.so -*.lib - -*.pyd -*.whl -*.egg - -*.egg-info -*.kdev4 -*.log -*.pb.cc -*.pb.h -*.pid -*.pri -*.pro -*.py[cod] -*.sln -*.stackdump -*.sublime-workspace -*.workspace - -*CodeCompletionFolders.txt -*CodeLitePreProcessor.txt -.aria2c.input -.codelite -.gdb_history -.gtest -.idea -.tags* -__pycache__/ -_benchmarks_results/ -_images* -_out* -_site -core -profiler.csv -ArgsSync.json +Dist/ +out/ \ No newline at end of file diff --git a/CMake/CarlaDependencies.cmake b/CMake/CarlaDependencies.cmake index 4b5205208..1aa74df0c 100644 --- a/CMake/CarlaDependencies.cmake +++ b/CMake/CarlaDependencies.cmake @@ -1,57 +1,67 @@ +#[[ + + Copyright (c) 2024 Computer Vision Center (CVC) at the Universitat Autonoma + de Barcelona (UAB). + + This work is licensed under the terms of the MIT license. + For a copy, see . + +]] + include (FetchContent) -include (ExternalProject) +set (CARLA_DEPENDENCIES_PENDING) - -# These checks may be incomplete: - -if (LINUX) - set (THREADS_PREFER_PTHREAD_FLAG ON) - find_package (Threads REQUIRED) -endif () - -set (CARLA_DEPENDENCIES) - -macro (carla_dependency_add_git NAME URL TAG) - message ("Fetching ${NAME}...") - FetchContent_Declare( - ${NAME} - GIT_SUBMODULES_RECURSE ON - GIT_SHALLOW ON - GIT_PROGRESS ON - GIT_REPOSITORY ${URL} - GIT_TAG ${TAG} - OVERRIDE_FIND_PACKAGE - ) - list (APPEND CARLA_DEPENDENCIES ${NAME}) -endmacro () - -macro (carla_dependency_add_zip NAME URL) - FetchContent_Declare( - ${NAME} - URL ${URL} - OVERRIDE_FIND_PACKAGE - ) - list (APPEND CARLA_DEPENDENCIES ${NAME}) +macro (carla_dependency_add NAME TAG ARCHIVE_URL GIT_URL) + if (PREFER_CLONE) + message ("Cloning ${NAME}...") + FetchContent_Declare( + ${NAME} + GIT_REPOSITORY ${GIT_URL} + GIT_TAG ${TAG} + GIT_SUBMODULES_RECURSE ON + GIT_SHALLOW ON + GIT_PROGRESS ON + OVERRIDE_FIND_PACKAGE + ${ARGN} + ) + list (APPEND CARLA_DEPENDENCIES_PENDING ${NAME}) + else () + message ("Downloading ${NAME}...") + FetchContent_Declare( + ${NAME} + URL ${ARCHIVE_URL} + OVERRIDE_FIND_PACKAGE + ${ARGN} + ) + list (APPEND CARLA_DEPENDENCIES_PENDING ${NAME}) + endif () endmacro () macro (carla_dependencies_make_available) FetchContent_MakeAvailable ( - ${CARLA_DEPENDENCIES}) - set (CARLA_DEPENDENCIES) + ${CARLA_DEPENDENCIES_PENDING}) + set (CARLA_DEPENDENCIES_PENDING) endmacro () macro (carla_fetchcontent_option NAME VALUE) set (${NAME} ${VALUE} CACHE INTERNAL "") endmacro () -set (CARLA_DEPENDENCIES_INSTALL_PATH) + + +# ==== SQLITE3 ==== + +set (THREADS_PREFER_PTHREAD_FLAG ON) +find_package (Threads REQUIRED) string (REPLACE "." "" CARLA_SQLITE_TAG ${CARLA_SQLITE_VERSION}) -carla_dependency_add_zip ( +carla_dependency_add ( sqlite3 + ${CARLA_SQLITE_TAG} https://www.sqlite.org/2024/sqlite-amalgamation-${CARLA_SQLITE_TAG}.zip + "" ) carla_dependencies_make_available () @@ -76,165 +86,144 @@ target_link_libraries ( libsqlite3 ) -set (ZLIB_BUILD_EXAMPLES OFF) -carla_dependency_add_zip ( +# ==== ZLIB ==== + +carla_fetchcontent_option (ZLIB_BUILD_EXAMPLES OFF) +carla_dependency_add ( zlib + ${CARLA_ZLIB_TAG} https://github.com/madler/zlib/archive/refs/tags/${CARLA_ZLIB_TAG}.zip + https://github.com/madler/zlib.git ) carla_dependencies_make_available () -include_directories (${zlib_SOURCE_DIR} ${zlib_BINARY_DIR}) # HACK +include_directories (${zlib_SOURCE_DIR} ${zlib_BINARY_DIR}) # @TODO HACK -set (PNG_TESTS OFF) -set (PNG_SHARED OFF) -set (PNG_TOOLS OFF) -set (PNG_BUILD_ZLIB ON) +# ==== LIBPNG ==== + +carla_fetchcontent_option (PNG_TESTS OFF) +carla_fetchcontent_option (PNG_SHARED OFF) +carla_fetchcontent_option (PNG_TOOLS OFF) +carla_fetchcontent_option (PNG_BUILD_ZLIB ON) if (WIN32) - set (ZLIB_LIBRARY ${zlib_BINARY_DIR}/zlibstatic${CARLA_DEBUG_AFFIX}.lib) + carla_fetchcontent_option (ZLIB_LIBRARY ${zlib_BINARY_DIR}/zlibstatic${CARLA_DEBUG_AFFIX}.lib) else () - set (ZLIB_LIBRARY ${zlib_BINARY_DIR}/libz.a) + carla_fetchcontent_option (ZLIB_LIBRARY ${zlib_BINARY_DIR}/libz.a) endif () -set (ZLIB_INCLUDE_DIRS ${zlib_SOURCE_DIR} ${zlib_BINARY_DIR}) -set (ZLIB_LIBRARIES ${ZLIB_LIBRARY}) -carla_dependency_add_zip ( +carla_fetchcontent_option (ZLIB_INCLUDE_DIRS ${zlib_SOURCE_DIR} ${zlib_BINARY_DIR}) +carla_fetchcontent_option (ZLIB_LIBRARIES ${ZLIB_LIBRARY}) +carla_dependency_add ( libpng + ${CARLA_LIBPNG_TAG} https://github.com/pnggroup/libpng/archive/refs/tags/${CARLA_LIBPNG_TAG}.zip + https://github.com/glennrp/libpng.git ) carla_dependencies_make_available () -include_directories (${libpng_SOURCE_DIR} ${libpng_BINARY_DIR}) # HACK +include_directories (${libpng_SOURCE_DIR} ${libpng_BINARY_DIR}) # @TODO HACK -if (BUILD_PYTHON_API) - set (BOOST_ENABLE_PYTHON ${BUILD_PYTHON_API}) -endif () +# ==== BOOST ==== -carla_dependency_add_zip( +carla_fetchcontent_option (BOOST_ENABLE_PYTHON ${BUILD_PYTHON_API}) +carla_fetchcontent_option (BOOST_ENABLE_MPI OFF) +carla_fetchcontent_option (BOOST_LOCALE_WITH_ICU OFF) +carla_fetchcontent_option (BOOST_LOCALE_WITH_ICONV OFF) +carla_fetchcontent_option (BOOST_EXCLUDE_LIBRARIES "iostreams;locale;fiber;log") +carla_dependency_add( boost + ${CARLA_BOOST_TAG} https://github.com/boostorg/boost/releases/download/${CARLA_BOOST_TAG}/${CARLA_BOOST_TAG}.zip + https://github.com/boostorg/boost.git ) -list (APPEND CARLA_DEPENDENCIES boost) -set (EIGEN_BUILD_PKGCONFIG OFF) -set (BUILD_TESTING OFF) -set (EIGEN_BUILD_DOC OFF) -carla_dependency_add_zip ( +# ==== EIGEN ==== + +carla_fetchcontent_option (EIGEN_BUILD_PKGCONFIG OFF) +carla_fetchcontent_option (BUILD_TESTING OFF) +carla_fetchcontent_option (EIGEN_BUILD_DOC OFF) +carla_dependency_add ( eigen + ${CARLA_EIGEN_TAG} https://gitlab.com/libeigen/eigen/-/archive/${CARLA_EIGEN_TAG}/eigen-${CARLA_EIGEN_TAG}.tar.gz + https://gitlab.com/libeigen/eigen.git ) -carla_dependency_add_zip ( +# ==== RPCLIB ==== + +carla_dependency_add ( rpclib + ${CARLA_RPCLIB_TAG} https://github.com/carla-simulator/rpclib/archive/refs/heads/${CARLA_RPCLIB_TAG}.zip + https://github.com/carla-simulator/rpclib.git ) -carla_dependency_add_zip ( +# ==== RECAST ==== + +carla_fetchcontent_option (RECASTNAVIGATION_BUILDER OFF) +carla_dependency_add ( recastnavigation + ${CARLA_RECAST_TAG} https://github.com/carla-simulator/recastnavigation/archive/refs/heads/${CARLA_RECAST_TAG}.zip + https://github.com/carla-simulator/recastnavigation.git ) +# ==== PROJ ==== + if (ENABLE_OSM2ODR) - set (BUILD_TESTING OFF) - set (ENABLE_TIFF OFF) - set (ENABLE_CURL OFF) + carla_fetchcontent_option (BUILD_TESTING OFF) + carla_fetchcontent_option (ENABLE_TIFF OFF) + carla_fetchcontent_option (ENABLE_CURL OFF) carla_dependency_add ( proj + https://github.com/OSGeo/PROJ/archive/refs/tags/${CARLA_PROJ_TAG}.zip https://github.com/OSGeo/PROJ.git ${CARLA_PROJ_TAG} ) endif () +# ==== XERCESC ==== + if (ENABLE_OSM2ODR) carla_dependency_add ( xercesc + https://github.com/apache/xerces-c/archive/refs/tags/${CARLA_XERCESC_TAG}.zip https://github.com/apache/xerces-c.git ${CARLA_XERCESC_TAG} ) endif () +# ==== LUNASVG ==== + if (BUILD_OSM_WORLD_RENDERER) carla_dependency_add ( lunasvg + https://github.com/sammycage/lunasvg/archive/refs/tags/${CARLA_LUNASVG_TAG}.zip https://github.com/sammycage/lunasvg.git ${CARLA_LUNASVG_TAG} ) endif () +# ==== LIBOSMSCOUT ==== + if (BUILD_OSM_WORLD_RENDERER) carla_dependency_add ( libosmscout + https://github.com/Framstag/libosmscout/archive/refs/tags/${CARLA_LIBOSMSCOUT_TAG}.zip https://github.com/Framstag/libosmscout.git ${CARLA_LIBOSMSCOUT_TAG} ) endif () -# carla_dependency_add ( -# gtest -# https://github.com/google/googletest.git -# ${CARLA_GTEST_TAG} -# ) +# ==== STREETMAP ==== -carla_dependencies_make_available () +if (BUILD_CARLA_UE) + carla_dependency_add ( + StreetMap + https://github.com/carla-simulator/StreetMap.git + https://github.com/carla-simulator/StreetMap/archive/refs/heads/${CARLA_STREETMAP_TAG}.zip + ${CARLA_STREETMAP_TAG} + DOWNLOAD_DIR ${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal/Plugins + ) +endif () -#[[ - -ExternalProject_Add ( - recastnavigation - GIT_REPOSITORY https://github.com/carla-simulator/recastnavigation.git - GIT_TAG ${CARLA_RECAST_TAG} -) - -ExternalProject_Add ( - proj - GIT_REPOSITORY https://github.com/OSGeo/PROJ.git - GIT_TAG ${CARLA_PROJ_TAG} - CMAKE_ARGS - -DSQLITE3_INCLUDE_DIR=${sqlite3_SOURCE_DIR} - -DSQLITE3_LIBRARY=$ - -DEXE_SQLITE3=$ - -DENABLE_TIFF=OFF - -DENABLE_CURL=OFF - -DBUILD_SHARED_LIBS=OFF - -DBUILD_PROJSYNC=OFF - -DBUILD_PROJINFO=OFF - -DBUILD_CCT=OFF - -DBUILD_CS2CS=OFF - -DBUILD_GEOD=OFF - -DBUILD_GIE=OFF - -DBUILD_PROJ=OFF - -DBUILD_TESTING=OFF -) - -add_dependencies (proj sqlite3 libsqlite3) - -ExternalProject_Add ( - xercesc - GIT_REPOSITORY https://github.com/apache/xerces-c.git - GIT_TAG ${CARLA_XERCESC_TAG} -) - -ExternalProject_Add ( - libpng - GIT_REPOSITORY https://github.com/glennrp/libpng.git - GIT_TAG ${CARLA_LIBPNG_TAG} - CMAKE_ARGS - -DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} - -DPNG_TESTS=OFF - -DPNG_SHARED=OFF - -DPNG_TOOLS=OFF -) - -ExternalProject_Add ( - lunasvg - GIT_REPOSITORY https://github.com/sammycage/lunasvg.git -) - -ExternalProject_Add ( - libosmscout - GIT_REPOSITORY https://github.com/Framstag/libosmscout.git -) - -ExternalProject_Add ( - gtest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG ${CARLA_GTEST_TAG} -)]] +carla_dependencies_make_available () \ No newline at end of file diff --git a/CMake/CarlaOptions.cmake b/CMake/CarlaOptions.cmake index 042906a60..492257970 100644 --- a/CMake/CarlaOptions.cmake +++ b/CMake/CarlaOptions.cmake @@ -1,266 +1,17 @@ +#[[ + + Copyright (c) 2024 Computer Vision Center (CVC) at the Universitat Autonoma + de Barcelona (UAB). + + This work is licensed under the terms of the MIT license. + For a copy, see . + +]] + macro (carla_string_option NAME DESCRIPTION VALUE) set (${NAME} ${VALUE} CACHE STRING ${DESCRIPTION}) endmacro () -# ==== Common target flags ==== - -set (CMAKE_POSITION_INDEPENDENT_CODE ON) - -option ( - BUILD_CARLA_CLIENT - "Build the LibCarla client." - ON -) - -option ( - BUILD_CARLA_SERVER - "Build the LibCarla server." - ON -) - -option ( - ENABLE_LIBCARLA_PYTORCH - "Enable LibCarla-PyTorch." - OFF -) - -option ( - BUILD_PYTHON_API - "Build the CARLA Python API." - ON -) - -option ( - BUILD_CARLA_UE - "Build the Carla Unreal Engine project." - OFF -) - -option ( - ENABLE_ROS2 - "Enable ROS2." - OFF -) - -option ( - ENABLE_OSM2ODR - "Enable OSM2ODR." - OFF -) - -option ( - ENABLE_RSS - "Enable RSS components (ad-rss-lib)" - OFF -) - -option ( - INSTALL_LIBCARLA - "Install LibCarla and all of its dependencies." - ON -) - -option ( - BUILD_OSM_WORLD_RENDERER - "Build OSM World Renderer." - OFF -) - -option ( - ENABLE_RTTI - "Enable C++ RTTI." - OFF -) - -option ( - ENABLE_EXCEPTIONS - "Enable C++ Exceptions." - OFF -) - -carla_string_option ( - CARLA_UNREAL_ENGINE_PATH - "Path to the CARLA fork of Unreal Engine" - "" -) - -if (EXISTS ${CARLA_UNREAL_ENGINE_PATH}) - set (CARLA_HAS_UNREAL_ENGINE_PATH ON) -else () - set (CARLA_HAS_UNREAL_ENGINE_PATH OFF) -endif () - -if (${BUILD_CARLA_UE}) - if (${CARLA_HAS_UNREAL_ENGINE_PATH}) - message ("Carla UE project successfully added to build. (UE path: ${CARLA_UNREAL_ENGINE_PATH})") - else () - message ( - FATAL_ERROR - "Could not add UE project to build since the option CARLA_UNREAL_ENGINE_PATH is not set to a valid path (\"${CARLA_UNREAL_ENGINE_PATH}\"). Please set it to point to the root path of your CARLA Unreal Engine installation.") - endif () -endif () - -# ==== DEPENDENCIES ==== - -# ==== BOOST ==== - -carla_string_option ( - CARLA_BOOST_VERSION - "Target boost version." - 1.84.0 -) - -carla_string_option ( - CARLA_BOOST_TAG - "Target boost git tag." - boost-${CARLA_BOOST_VERSION} -) - -# ==== EIGEN ==== - -carla_string_option ( - CARLA_EIGEN_VERSION - "Target Eigen version." - 3.4.0 -) - -carla_string_option ( - CARLA_EIGEN_TAG - "Target Eigen git tag." - ${CARLA_EIGEN_VERSION} -) - -# ==== GOOGLE TEST ==== - -carla_string_option ( - CARLA_GTEST_VERSION - "Target googletest version." - 1.14.0 -) - -carla_string_option ( - CARLA_GTEST_TAG - "Target googletest git tag." - v${CARLA_GTEST_VERSION} -) - -# ==== LIBPNG ==== - -carla_string_option ( - CARLA_LIBPNG_VERSION - "Target libpng version." - 1.6.40 -) - -carla_string_option ( - CARLA_LIBPNG_TAG - "Target libpng git tag." - v${CARLA_LIBPNG_VERSION} -) - -# ==== PROJ ==== - -carla_string_option ( - CARLA_PROJ_VERSION - "Target PROJ version." - 7.2.1 -) - -carla_string_option ( - CARLA_PROJ_TAG - "Target PROJ git tag." - ${CARLA_PROJ_VERSION} -) - -# ==== RECAST ==== - -carla_string_option ( - CARLA_RECAST_TAG - "Target recastnavigation git tag." - carla -) - -# ==== RPCLIB ==== - -carla_string_option ( - CARLA_RPCLIB_TAG - "Target rpclib git tag." - carla -) - -# ==== SQLITE3 ==== - -carla_string_option ( - CARLA_SQLITE_VERSION - "Target SQLite version (major[1].minor[2].patch[2].revision[2])." - 3.45.01.00 -) - -# ==== XERCESC ==== - -carla_string_option ( - CARLA_XERCESC_VERSION - "Target xerces-c version." - 3.2.4 -) - -carla_string_option ( - CARLA_XERCESC_TAG - "Target xerces-c git tag." - v${CARLA_XERCESC_VERSION} -) - -# ==== ZLIB ==== - -carla_string_option ( - CARLA_ZLIB_VERSION - "Target zlib git tag." - 1.3.1) - -carla_string_option ( - CARLA_ZLIB_TAG - "Target zlib git tag." - v${CARLA_ZLIB_VERSION}) - -# ==== LUNASVG ==== - -carla_string_option ( - CARLA_LUNASVG_VERSION - "Target lunasvg version." - master -) - -carla_string_option ( - CARLA_LUNASVG_TAG - "Target lunasvg git tag." - ${CARLA_LUNASVG_VERSION} -) - -# ==== LIBOSMSCOUT ==== - -carla_string_option ( - CARLA_LIBOSMSCOUT_VERSION - "Target libosmscout version." - master -) - -carla_string_option ( - CARLA_LIBOSMSCOUT_TAG - "Target libosmscout git tag." - ${CARLA_LIBOSMSCOUT_VERSION} -) - - -# ==== STREETMAP ==== - -carla_string_option ( - CARLA_STREETMAP_VERSION - "Target StreetMap version." - ue5.3 -) - -carla_string_option ( - CARLA_STREETMAP_TAG - "Target StreetMap git tag." - ${CARLA_STREETMAP_VERSION} -) +include (${CARLA_WORKSPACE_PATH}/CMake/Options/Common.cmake) +include (${CARLA_WORKSPACE_PATH}/CMake/Options/Unreal.cmake) +include (${CARLA_WORKSPACE_PATH}/CMake/Options/Dependencies.cmake) \ No newline at end of file diff --git a/CMake/LinuxToolchain.cmake b/CMake/LinuxToolchain.cmake index ff4eb0d31..e84381077 100644 --- a/CMake/LinuxToolchain.cmake +++ b/CMake/LinuxToolchain.cmake @@ -1,4 +1,14 @@ -set (UE_ROOT /home/marcel/CarlaUnrealEngine5) +#[[ + + Copyright (c) 2024 Computer Vision Center (CVC) at the Universitat Autonoma + de Barcelona (UAB). + + This work is licensed under the terms of the MIT license. + For a copy, see . + +]] + +set (UE_ROOT /home/marcel/CarlaUnrealEngine5) # @TODO # set (UE_ROOT ${CARLA_UNREAL_ENGINE_PATH} CACHE PATH "") message ("UE_ROOT=${UE_ROOT}") diff --git a/CMake/Options/Common.cmake b/CMake/Options/Common.cmake new file mode 100644 index 000000000..07dd0d176 --- /dev/null +++ b/CMake/Options/Common.cmake @@ -0,0 +1,87 @@ +#[[ + + Copyright (c) 2024 Computer Vision Center (CVC) at the Universitat Autonoma + de Barcelona (UAB). + + This work is licensed under the terms of the MIT license. + For a copy, see . + +]] + +option ( + BUILD_CARLA_CLIENT + "Build the LibCarla client." + ON +) + +option ( + BUILD_CARLA_SERVER + "Build the LibCarla server." + ON +) + +option ( + ENABLE_LIBCARLA_PYTORCH + "Enable LibCarla-PyTorch." + OFF +) + +option ( + BUILD_PYTHON_API + "Build the CARLA Python API." + ON +) + +option ( + BUILD_CARLA_UE + "Build the Carla Unreal Engine project." + OFF +) + +option ( + ENABLE_ROS2 + "Enable ROS2." + OFF +) + +option ( + ENABLE_OSM2ODR + "Enable OSM2ODR." + OFF +) + +option ( + ENABLE_RSS + "Enable RSS components (ad-rss-lib)" + OFF +) + +option ( + INSTALL_LIBCARLA + "Install LibCarla and all of its dependencies." + ON +) + +option ( + BUILD_OSM_WORLD_RENDERER + "Build OSM World Renderer." + OFF +) + +option ( + ENABLE_RTTI + "Enable C++ RTTI." + OFF +) + +option ( + ENABLE_EXCEPTIONS + "Enable C++ Exceptions." + OFF +) + +option ( + PREFER_CLONE + "Whether to clone dependencies instead of directly downloading a compressed archive." + OFF +) \ No newline at end of file diff --git a/CMake/Options/Dependencies.cmake b/CMake/Options/Dependencies.cmake new file mode 100644 index 000000000..d19651d80 --- /dev/null +++ b/CMake/Options/Dependencies.cmake @@ -0,0 +1,172 @@ +#[[ + + Copyright (c) 2024 Computer Vision Center (CVC) at the Universitat Autonoma + de Barcelona (UAB). + + This work is licensed under the terms of the MIT license. + For a copy, see . + +]] + +# ==== BOOST ==== + +carla_string_option ( + CARLA_BOOST_VERSION + "Target boost version." + 1.84.0 +) + +carla_string_option ( + CARLA_BOOST_TAG + "Target boost git tag." + boost-${CARLA_BOOST_VERSION} +) + +# ==== EIGEN ==== + +carla_string_option ( + CARLA_EIGEN_VERSION + "Target Eigen version." + 3.4.0 +) + +carla_string_option ( + CARLA_EIGEN_TAG + "Target Eigen git tag." + ${CARLA_EIGEN_VERSION} +) + +# ==== GOOGLE TEST ==== + +carla_string_option ( + CARLA_GTEST_VERSION + "Target googletest version." + 1.14.0 +) + +carla_string_option ( + CARLA_GTEST_TAG + "Target googletest git tag." + v${CARLA_GTEST_VERSION} +) + +# ==== LIBPNG ==== + +carla_string_option ( + CARLA_LIBPNG_VERSION + "Target libpng version." + 1.6.40 +) + +carla_string_option ( + CARLA_LIBPNG_TAG + "Target libpng git tag." + v${CARLA_LIBPNG_VERSION} +) + +# ==== PROJ ==== + +carla_string_option ( + CARLA_PROJ_VERSION + "Target PROJ version." + 7.2.1 +) + +carla_string_option ( + CARLA_PROJ_TAG + "Target PROJ git tag." + ${CARLA_PROJ_VERSION} +) + +# ==== RECAST ==== + +carla_string_option ( + CARLA_RECAST_TAG + "Target recastnavigation git tag." + carla +) + +# ==== RPCLIB ==== + +carla_string_option ( + CARLA_RPCLIB_TAG + "Target rpclib git tag." + carla +) + +# ==== SQLITE3 ==== + +carla_string_option ( + CARLA_SQLITE_VERSION + "Target SQLite version (major[1].minor[2].patch[2].revision[2])." + 3.45.01.00 +) + +# ==== XERCESC ==== + +carla_string_option ( + CARLA_XERCESC_VERSION + "Target xerces-c version." + 3.2.4 +) + +carla_string_option ( + CARLA_XERCESC_TAG + "Target xerces-c git tag." + v${CARLA_XERCESC_VERSION} +) + +# ==== ZLIB ==== + +carla_string_option ( + CARLA_ZLIB_VERSION + "Target zlib git tag." + 1.3.1) + +carla_string_option ( + CARLA_ZLIB_TAG + "Target zlib git tag." + v${CARLA_ZLIB_VERSION}) + +# ==== LUNASVG ==== + +carla_string_option ( + CARLA_LUNASVG_VERSION + "Target lunasvg version." + master +) + +carla_string_option ( + CARLA_LUNASVG_TAG + "Target lunasvg git tag." + ${CARLA_LUNASVG_VERSION} +) + +# ==== LIBOSMSCOUT ==== + +carla_string_option ( + CARLA_LIBOSMSCOUT_VERSION + "Target libosmscout version." + master +) + +carla_string_option ( + CARLA_LIBOSMSCOUT_TAG + "Target libosmscout git tag." + ${CARLA_LIBOSMSCOUT_VERSION} +) + + +# ==== STREETMAP ==== + +carla_string_option ( + CARLA_STREETMAP_VERSION + "Target StreetMap version." + ue5.3 +) + +carla_string_option ( + CARLA_STREETMAP_TAG + "Target StreetMap git tag." + ${CARLA_STREETMAP_VERSION} +) \ No newline at end of file diff --git a/CMake/Options/Unreal.cmake b/CMake/Options/Unreal.cmake new file mode 100644 index 000000000..f8907a446 --- /dev/null +++ b/CMake/Options/Unreal.cmake @@ -0,0 +1,50 @@ +#[[ + + Copyright (c) 2024 Computer Vision Center (CVC) at the Universitat Autonoma + de Barcelona (UAB). + + This work is licensed under the terms of the MIT license. + For a copy, see . + +]] + +option ( + CARLA_UNREAL_CONTENT_PREFER_CLONE + "Whether to perform a git clone instead of a direct archive download of the CARLA Unreal assets (EXTREMELY DISCOURAGED)." + OFF +) + +carla_string_option ( + CARLA_UNREAL_ENGINE_PATH + "Path to the CARLA fork of Unreal Engine." + "" +) + +if (WIN32) + set (CARLA_UNREAL_RHI_DEFAULT d3d12) +elseif (LINUX) + set (CARLA_UNREAL_RHI_DEFAULT vulkan) +endif () + +carla_string_option ( + CARLA_UNREAL_RHI + "Target CARLA Unreal Engine RHI." + "vulkan" + "${CARLA_UNREAL_RHI_DEFAULT}" +) + +if (EXISTS ${CARLA_UNREAL_ENGINE_PATH}) + set (CARLA_HAS_UNREAL_ENGINE_PATH ON) +else () + set (CARLA_HAS_UNREAL_ENGINE_PATH OFF) +endif () + +if (${BUILD_CARLA_UE}) + if (${CARLA_HAS_UNREAL_ENGINE_PATH}) + message ("Carla UE project successfully added to build. (UE path: ${CARLA_UNREAL_ENGINE_PATH})") + else () + message ( + FATAL_ERROR + "Could not add UE project to build since the option CARLA_UNREAL_ENGINE_PATH is not set to a valid path (\"${CARLA_UNREAL_ENGINE_PATH}\"). Please set it to point to the root path of your CARLA Unreal Engine installation.") + endif () +endif () diff --git a/CMakeLists.txt b/CMakeLists.txt index 332d8e670..2c7d22652 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,13 @@ +#[[ + + Copyright (c) 2024 Computer Vision Center (CVC) at the Universitat Autonoma + de Barcelona (UAB). + + This work is licensed under the terms of the MIT license. + For a copy, see . + +]] + cmake_minimum_required (VERSION 3.28.0) cmake_policy (SET CMP0097 NEW) @@ -41,19 +51,25 @@ set ( ${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal/Plugins ) -if (NOT WIN32) - set (THREADS_PREFER_PTHREAD_FLAG ON) - set (CMAKE_THREADS_PREFER_PTHREAD_FLAG ON) - find_package ( - Threads - REQUIRED - ) -endif () - include (CheckCCompilerFlag) include (CheckCXXCompilerFlag) +include (CheckLinkerFlag) + include (${CARLA_WORKSPACE_PATH}/CMake/CarlaOptions.cmake) +if (LINUX) + check_linker_flag ( + CXX + -lpthread + HAS_PTHREAD + ) + if (HAS_PTHREAD) + add_link_options (-lpthread) + endif () +endif () + +# Similar to configure_file, but also expands variables +# that are set at generate time, like generator expressions. macro (carla_two_step_configure_file DESTINATION SOURCE) message ("Configuring file \"${DESTINATION}\"") # Configure-time step; evaluate variables: @@ -62,6 +78,10 @@ macro (carla_two_step_configure_file DESTINATION SOURCE) file (GENERATE OUTPUT ${DESTINATION} INPUT ${DESTINATION}) endmacro () + + +set (CMAKE_POSITION_INDEPENDENT_CODE ON) + if (WIN32) if (CMAKE_BUILD_TYPE STREQUAL "Debug") set (CARLA_DEBUG_AFFIX d) @@ -72,6 +92,8 @@ if (WIN32) endif () endif () + + set ( CARLA_COMMON_DEFINITIONS LIBCARLA_IMAGE_WITH_PNG_SUPPORT=true @@ -86,6 +108,7 @@ if (WIN32) endif () set (CARLA_EXCEPTION_DEFINITIONS) + if (ENABLE_EXCEPTIONS) # Nothing else () @@ -95,9 +118,11 @@ else () list (APPEND CARLA_EXCEPTION_DEFINITIONS PUGIXML_NO_EXCEPTIONS) endif () -include ( - ${CARLA_WORKSPACE_PATH}/CMake/CarlaDependencies.cmake -) + + +include (${CARLA_WORKSPACE_PATH}/CMake/CarlaDependencies.cmake) + + if (BUILD_CARLA_CLIENT OR BUILD_CARLA_SERVER) add_subdirectory (LibCarla) diff --git a/PythonAPI/examples/.gitignore b/PythonAPI/examples/.gitignore index 5e4659675..bcb8636d9 100644 --- a/PythonAPI/examples/.gitignore +++ b/PythonAPI/examples/.gitignore @@ -1 +1,2 @@ -cache \ No newline at end of file +carla.so +carla.pyd \ No newline at end of file diff --git a/Unreal/CMakeLists.txt b/Unreal/CMakeLists.txt index a9f0835ff..329d07bac 100644 --- a/Unreal/CMakeLists.txt +++ b/Unreal/CMakeLists.txt @@ -2,18 +2,6 @@ project ( carla-ue ) -if (WIN32) - set ( - CARLA_UE_GENERATE_PROJECT_SCRIPT - ${CARLA_UNREAL_ENGINE_PATH}/GenerateProjectFiles.bat - ) -else () - set ( - CARLA_UE_GENERATE_PROJECT_SCRIPT - ${CARLA_UNREAL_ENGINE_PATH}/GenerateProjectFiles.sh - ) -endif () - set ( CARLA_UE_PATH ${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal @@ -29,15 +17,19 @@ set ( ${CARLA_UE_PATH}/CarlaUnreal.uproject ) -carla_two_step_configure_file ( - ${CARLA_UE_PLUGINS_PATH}/Carla/Source/Carla/Carla.Build.cs - ${CARLA_UE_PLUGINS_PATH}/Carla/Source/Carla/Carla.Build.cs.in -) +if (WIN32) + set ( + CARLA_UE_GENERATE_PROJECT_SCRIPT + ${CARLA_UNREAL_ENGINE_PATH}/GenerateProjectFiles.bat + ) +else () + set ( + CARLA_UE_GENERATE_PROJECT_SCRIPT + ${CARLA_UNREAL_ENGINE_PATH}/GenerateProjectFiles.sh + ) +endif () + -carla_two_step_configure_file ( - ${CARLA_UE_PLUGINS_PATH}/CarlaTools/Source/CarlaTools/CarlaTools.Build.cs - ${CARLA_UE_PLUGINS_PATH}/CarlaTools/Source/CarlaTools/CarlaTools.Build.cs.in -) add_custom_command ( OUTPUT ${CARLA_UE_PATH}/CMakeLists.txt @@ -56,12 +48,28 @@ add_custom_target ( DEPENDS ${CARLA_UE_PATH}/CMakeLists.txt ) + + +if (CMAKE_TOOLCHAIN_FILE) + cmake_path ( + ABSOLUTE_PATH CMAKE_TOOLCHAIN_FILE + BASE_DIRECTORY ${CARLA_WORKSPACE_PATH} + NORMALIZE + OUTPUT_VARIABLE TOOLCHAIN_FILE + ) + set (TOOLCHAIN_FILE_OPTION --toolchain=${TOOLCHAIN_FILE}) +else () + set (TOOLCHAIN_FILE_OPTION) +endif () + + + add_custom_command ( OUTPUT carla-ue-configure.stamp - COMMAND - ${CMAKE_COMMAND} -E touch carla-ue-configure.stamp COMMENT "Configuring Carla Unreal..." + COMMAND + ${CMAKE_COMMAND} -E touch carla-ue-configure.stamp COMMAND ${CMAKE_COMMAND} -S ${CARLA_UE_PATH} @@ -76,13 +84,14 @@ add_custom_target ( carla-ue-generate-project-files ) + + add_custom_command ( OUTPUT carla-ue.stamp - VERBATIM - COMMAND - ${CMAKE_COMMAND} -E touch carla-ue.stamp COMMENT "Building Carla Unreal..." + COMMAND + ${CMAKE_COMMAND} -E touch carla-ue.stamp COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR} @@ -98,7 +107,38 @@ add_custom_target ( carla-ue.stamp ) + + +add_custom_target ( + launch-only + COMMAND + ${CARLA_UNREAL_ENGINE_PATH}/Engine/Binaries/Linux/UnrealEditor + ${CARLA_UE_PROJECT_PATH} + -${CARLA_UNREAL_RHI} +) + + + +add_custom_target ( + launch + DEPENDS + carla-ue + launch-only +) + + + file ( MAKE_DIRECTORY ${CARLA_UE_PATH}/Content/Carla/ExportedMaps +) + +carla_two_step_configure_file ( + ${CARLA_UE_PLUGINS_PATH}/Carla/Source/Carla/Carla.Build.cs + ${CARLA_UE_PLUGINS_PATH}/Carla/Source/Carla/Carla.Build.cs.in +) + +carla_two_step_configure_file ( + ${CARLA_UE_PLUGINS_PATH}/CarlaTools/Source/CarlaTools/CarlaTools.Build.cs + ${CARLA_UE_PLUGINS_PATH}/CarlaTools/Source/CarlaTools/CarlaTools.Build.cs.in ) \ No newline at end of file diff --git a/Unreal/CarlaUnreal/Config/DefaultInput.ini b/Unreal/CarlaUnreal/Config/DefaultInput.ini index 84bc72bbc..7f5b377cb 100644 --- a/Unreal/CarlaUnreal/Config/DefaultInput.ini +++ b/Unreal/CarlaUnreal/Config/DefaultInput.ini @@ -1,4 +1,5 @@ + [/Script/Engine.InputSettings] -AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) -AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) @@ -6,6 +7,8 @@ -AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) -AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) -AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) ++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) +AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) @@ -27,46 +30,93 @@ +AxisConfig=(AxisKeyName="MotionController_Right_Grip2Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) bAltEnterTogglesFullscreen=True bF11TogglesFullscreen=True bUseMouseForTouch=False bEnableMouseSmoothing=True bEnableFOVScaling=True -FOVScale=0.011110 -DoubleClickTime=0.200000 bCaptureMouseOnLaunch=False -DefaultViewportMouseCaptureMode=CaptureDuringMouseDown -bDefaultViewportMouseLock=False -DefaultViewportMouseLockMode=DoNotLock -+ActionMappings=(ActionName="RestartLevel",Key=R,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="Handbrake",Key=SpaceBar,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="ToggleManualMode",Key=M,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="ToggleHUD",Key=G,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="Jump",Key=Enter,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="ToggleReverse",Key=Q,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="UseTheForce",Key=F,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="ToggleCamera",Key=Tab,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="ChangeWeather",Key=C,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+ActionMappings=(ActionName="ToggleAutopilot",Key=P,bShift=False,bCtrl=False,bAlt=False,bCmd=False) -+AxisMappings=(AxisName="CameraZoom",Key=MouseWheelAxis,Scale=-20.000000) -+AxisMappings=(AxisName="CameraZoom",Key=PageUp,Scale=-10.000000) -+AxisMappings=(AxisName="CameraZoom",Key=PageDown,Scale=10.000000) -+AxisMappings=(AxisName="CameraUp",Key=Up,Scale=1.000000) -+AxisMappings=(AxisName="CameraUp",Key=Down,Scale=-1.000000) -+AxisMappings=(AxisName="CameraRight",Key=Right,Scale=1.000000) -+AxisMappings=(AxisName="CameraRight",Key=Left,Scale=-1.000000) -+AxisMappings=(AxisName="MoveForward",Key=W,Scale=1.000000) -+AxisMappings=(AxisName="MoveRight",Key=D,Scale=1.000000) -+AxisMappings=(AxisName="MoveRight",Key=A,Scale=-1.000000) -+AxisMappings=(AxisName="Brake",Key=B,Scale=1.000000) -+AxisMappings=(AxisName="MoveForward",Key=S,Scale=-1.000000) -+AxisMappings=(AxisName="MoveUp",Key=E,Scale=1.000000) -+AxisMappings=(AxisName="MoveUp",Key=Q,Scale=-1.000000) +bEnableLegacyInputScales=True +bEnableMotionControls=True +bFilterInputByPlatformUser=False +bEnableInputDeviceSubsystem=True +bShouldFlushPressedKeysOnViewportFocusLost=True +bEnableDynamicComponentInputBinding=True bAlwaysShowTouchInterface=False bShowConsoleOnFourFingerTap=True +bEnableGestureRecognizer=False +bUseAutocorrect=False +DefaultViewportMouseCaptureMode=CaptureDuringMouseDown +DefaultViewportMouseLockMode=DoNotLock +FOVScale=0.011110 +DoubleClickTime=0.200000 ++ActionMappings=(ActionName="RestartLevel",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=R) ++ActionMappings=(ActionName="Handbrake",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar) ++ActionMappings=(ActionName="ToggleManualMode",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=M) ++ActionMappings=(ActionName="ToggleHUD",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=G) ++ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Enter) ++ActionMappings=(ActionName="ToggleReverse",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Q) ++ActionMappings=(ActionName="UseTheForce",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=F) ++ActionMappings=(ActionName="ToggleCamera",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Tab) ++ActionMappings=(ActionName="ChangeWeather",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=C) ++ActionMappings=(ActionName="ToggleAutopilot",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=P) ++AxisMappings=(AxisName="CameraZoom",Scale=-20.000000,Key=MouseWheelAxis) ++AxisMappings=(AxisName="CameraZoom",Scale=-10.000000,Key=PageUp) ++AxisMappings=(AxisName="CameraZoom",Scale=10.000000,Key=PageDown) ++AxisMappings=(AxisName="CameraUp",Scale=1.000000,Key=Up) ++AxisMappings=(AxisName="CameraUp",Scale=-1.000000,Key=Down) ++AxisMappings=(AxisName="CameraRight",Scale=1.000000,Key=Right) ++AxisMappings=(AxisName="CameraRight",Scale=-1.000000,Key=Left) ++AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=W) ++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D) ++AxisMappings=(AxisName="MoveRight",Scale=-1.000000,Key=A) ++AxisMappings=(AxisName="Brake",Scale=1.000000,Key=B) ++AxisMappings=(AxisName="MoveForward",Scale=-1.000000,Key=S) ++AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=E) ++AxisMappings=(AxisName="MoveUp",Scale=-1.000000,Key=Q) +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks -ConsoleKey=None -ConsoleKeys=Tilde +ConsoleKeys=Tilde -