CARLA
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions
CarlaServer.cpp File Reference
#include "Carla/Server/CarlaServer.h"
#include "Carla.h"
#include "Carla/Server/CarlaServerResponse.h"
#include "Carla/Traffic/TrafficLightGroup.h"
#include "Carla/OpenDrive/OpenDrive.h"
#include "Carla/OpenDrive/OpenDriveGenerator.h"
#include "Carla/Util/DebugShapeDrawer.h"
#include "Carla/Util/NavigationMesh.h"
#include "Carla/Util/RayTracer.h"
#include "Carla/Vehicle/CarlaWheeledVehicle.h"
#include "Carla/Sensor/CustomV2XSensor.h"
#include "Carla/Sensor/SceneCaptureSensor.h"
#include "Carla/Sensor/SceneCaptureSensor_WideAngleLens.h"
#include "Carla/Walker/WalkerController.h"
#include "Carla/Walker/WalkerBase.h"
#include "Carla/Weather/SkyLightMap.h"
#include "Carla/Weather/Weather.h"
#include "Carla/AI/WalkerAIController.h"
#include "Carla/Navigation/CarlaNavigationSubsystem.h"
#include "Carla/Game/Tagger.h"
#include "Carla/Game/CarlaStatics.h"
#include "Carla/ContentPacks/ContentPackManager.h"
#include "Carla/Vehicle/MovementComponents/CarSimManagerComponent.h"
#include "Carla/Vehicle/MovementComponents/ChronoMovementComponent.h"
#include "Carla/Lights/CarlaLightSubsystem.h"
#include "Carla/Actor/ActorData.h"
#include "Carla/Util/BoundingBoxCalculator.h"
#include "Carla/Game/CarlaHUD.h"
#include "Components/SceneComponent.h"
#include "Components/SkinnedMeshComponent.h"
#include "ProceduralMeshComponent.h"
#include "Engine/Engine.h"
#include <util/disable-ue4-macros.h>
#include <carla/Functional.h>
#include <carla/multigpu/router.h>
#include <carla/Sockets.h>
#include <carla/Version.h>
#include <carla/rpc/AckermannControllerSettings.h>
#include <carla/rpc/Actor.h>
#include <carla/rpc/ActorDefinition.h>
#include <carla/rpc/ActorDescription.h>
#include <carla/rpc/BoneTransformDataIn.h>
#include <carla/rpc/Command.h>
#include <carla/rpc/CommandResponse.h>
#include <carla/rpc/ContentPackInfo.h>
#include <carla/rpc/CustomV2XBytes.h>
#include <carla/rpc/DebugShape.h>
#include <carla/rpc/EnvironmentObject.h>
#include <carla/rpc/EpisodeInfo.h>
#include <carla/rpc/EpisodeSettings.h>
#include <carla/rpc/LabelledPoint.h>
#include <carla/rpc/LightState.h>
#include <carla/rpc/MapInfo.h>
#include <carla/rpc/MapLayer.h>
#include <carla/rpc/Response.h>
#include <carla/rpc/Server.h>
#include <carla/rpc/String.h>
#include <carla/rpc/Transform.h>
#include <carla/rpc/Vector2D.h>
#include <carla/rpc/Vector3D.h>
#include <carla/rpc/VehicleDoor.h>
#include <carla/rpc/VehicleAckermannControl.h>
#include <carla/rpc/VehicleControl.h>
#include <carla/rpc/VehiclePhysicsControl.h>
#include <carla/rpc/VehicleTelemetryData.h>
#include <carla/rpc/VehicleLightState.h>
#include <carla/rpc/VehicleLightStateList.h>
#include <carla/rpc/WalkerBoneControlIn.h>
#include <carla/rpc/WalkerBoneControlOut.h>
#include <carla/rpc/WalkerControl.h>
#include <carla/rpc/VehicleWheels.h>
#include <carla/rpc/WeatherParameters.h>
#include <carla/streaming/detail/Types.h>
#include <carla/rpc/Texture.h>
#include <carla/rpc/MaterialParameter.h>
#include <util/enable-ue4-macros.h>
#include <util/ue-header-guard-begin.h>
#include "EngineUtils.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "Misc/App.h"
#include "Misc/FileHelper.h"
#include "Animation/PoseSnapshot.h"
#include <util/ue-header-guard-end.h>
#include <vector>
#include <atomic>
#include <map>
#include <tuple>

Go to the source code of this file.

Classes

class  FCarlaServer::FPimpl
 
class  ServerBinder
 

Macros

#define BIND_ASYNC(name)   auto name = ServerBinder(# name, Server, false)
 
#define BIND_SYNC(name)   auto name = ServerBinder(# name, Server, true)
 
#define CARLA_ENSURE_GAME_THREAD()
 
#define MAKE_RESULT(operation)   return parse_result(c.actor, operation);
 
#define REQUIRE_CARLA_EPISODE()
 
#define REQUIRE_CARLA_GAME_MODE()
 
#define REQUIRE_PRIMARY_SERVER()
 
#define RESPOND_ERROR(str)
 
#define RESPOND_ERROR_FSTRING(fstr)
 

Typedefs

template<typename T >
using R = carla::rpc::Response< T >
 

Functions

template<typename T >
static R< void > ApplyTextureToActor (UCarlaEpisode *Episode, carla::rpc::ActorId ActorId, const carla::rpc::MaterialParameter &MaterialParameter, T &&Texture)
 
static bool IsUnrenderableLocalSensorStream (UCarlaEpisode &Episode, carla::streaming::detail::stream_id_type StreamId)
 True when the stream belongs to a camera and this process has no RHI (-nullrhi): a local token for it could never deliver a frame, so the camera must be owned by a rendering Multi-GPU secondary instead.
 
static carla::rpc::ContentPackInfo MakeContentPackInfo (const FCarlaContentPack &Pack)
 
static std::vector< std::string > MakeStringVector (const TArray< FString > &Names)
 
template<typename T , typename Other >
static std::vector< T > MakeVectorFromTArray (const TArray< Other > &Array)
 
static AWalkerController * ResolveWalkerNavController (FCarlaActor *CarlaActor)
 Resolve the AWalkerController behind a walker-navigation RPC actor id.
 
carla::rpc::ResponseError RespondError (const FString &FuncName, const ECarlaServerResponse &Error, const FString &ExtraInfo="")
 
carla::rpc::ResponseError RespondError (const FString &FuncName, const FString &ErrorMessage, const FString &ExtraInfo="")
 

Macro Definition Documentation

◆ BIND_ASYNC

#define BIND_ASYNC (   name)    auto name = ServerBinder(# name, Server, false)

Definition at line 355 of file CarlaServer.cpp.

◆ BIND_SYNC

#define BIND_SYNC (   name)    auto name = ServerBinder(# name, Server, true)

Definition at line 354 of file CarlaServer.cpp.

◆ CARLA_ENSURE_GAME_THREAD

#define CARLA_ENSURE_GAME_THREAD ( )

Definition at line 238 of file CarlaServer.cpp.

◆ MAKE_RESULT

#define MAKE_RESULT (   operation)    return parse_result(c.actor, operation);

◆ REQUIRE_CARLA_EPISODE

#define REQUIRE_CARLA_EPISODE ( )
Value:
if (Episode == nullptr) { RESPOND_ERROR("episode not ready"); }
#define RESPOND_ERROR(str)
#define CARLA_ENSURE_GAME_THREAD()

Definition at line 249 of file CarlaServer.cpp.

◆ REQUIRE_CARLA_GAME_MODE

#define REQUIRE_CARLA_GAME_MODE ( )
Value:
ACarlaGameModeBase* GameMode = UCarlaStatics::GetGameMode(Episode->GetWorld()); \
if (!GameMode) \
{ \
RESPOND_ERROR("unable to find CARLA game mode"); \
}
Base class for the CARLA Game Mode.
static ACarlaGameModeBase * GetGameMode(const UObject *WorldContextObject)

Definition at line 253 of file CarlaServer.cpp.

◆ REQUIRE_PRIMARY_SERVER

#define REQUIRE_PRIMARY_SERVER ( )
Value:
if (bIsSecondaryServer) \
{ \
RESPOND_ERROR("this is a Multi-GPU secondary server: it mirrors the primary and answers read-only calls only; send this call to the primary server"); \
}

Definition at line 262 of file CarlaServer.cpp.

◆ RESPOND_ERROR

#define RESPOND_ERROR (   str)
Value:
{ \
UE_LOG(LogCarlaServer, Log, TEXT("Responding error: %s"), TEXT(str)); \

Definition at line 241 of file CarlaServer.cpp.

◆ RESPOND_ERROR_FSTRING

#define RESPOND_ERROR_FSTRING (   fstr)
Value:
{ \
UE_LOG(LogCarlaServer, Log, TEXT("Responding error: %s"), *fstr); \
return carla::rpc::ResponseError(carla::rpc::FromFString(fstr)); }

Definition at line 245 of file CarlaServer.cpp.

Typedef Documentation

◆ R

template<typename T >
using R = carla::rpc::Response<T>

Definition at line 99 of file CarlaServer.cpp.

Function Documentation

◆ ApplyTextureToActor()

template<typename T >
static R< void > ApplyTextureToActor ( UCarlaEpisode *  Episode,
carla::rpc::ActorId  ActorId,
const carla::rpc::MaterialParameter &  MaterialParameter,
T &&  Texture 
)
static

◆ IsUnrenderableLocalSensorStream()

static bool IsUnrenderableLocalSensorStream ( UCarlaEpisode &  Episode,
carla::streaming::detail::stream_id_type  StreamId 
)
static

True when the stream belongs to a camera and this process has no RHI (-nullrhi): a local token for it could never deliver a frame, so the camera must be owned by a rendering Multi-GPU secondary instead.

Definition at line 129 of file CarlaServer.cpp.

References UCarlaEpisode::FindCarlaActorFromStream(), and FCarlaActor::GetActor().

Referenced by FCarlaServer::FPimpl::BindActions().

◆ MakeContentPackInfo()

static carla::rpc::ContentPackInfo MakeContentPackInfo ( const FCarlaContentPack &  Pack)
static

◆ MakeStringVector()

static std::vector< std::string > MakeStringVector ( const TArray< FString > &  Names)
static

Definition at line 268 of file CarlaServer.cpp.

Referenced by FCarlaServer::FPimpl::BindActions().

◆ MakeVectorFromTArray()

template<typename T , typename Other >
static std::vector< T > MakeVectorFromTArray ( const TArray< Other > &  Array)
static

Definition at line 106 of file CarlaServer.cpp.

◆ ResolveWalkerNavController()

static AWalkerController * ResolveWalkerNavController ( FCarlaActor *  CarlaActor)
static

Resolve the AWalkerController behind a walker-navigation RPC actor id.

Accepts either the walker pawn itself or the controller.ai.walker handle actor (which clients spawn attached to the walker). Returns nullptr for unknown, dormant or dead actors – the navigation RPCs answer false in that case instead of raising, per the phase-1 contract.

Definition at line 152 of file CarlaServer.cpp.

References FCarlaActor::GetActor(), and FCarlaActor::IsDormant().

Referenced by FCarlaServer::FPimpl::BindActions().

◆ RespondError() [1/2]

carla::rpc::ResponseError RespondError ( const FString &  FuncName,
const ECarlaServerResponse &  Error,
const FString &  ExtraInfo = "" 
)

Definition at line 290 of file CarlaServer.cpp.

References CarlaGetStringError(), and RespondError().

◆ RespondError() [2/2]

carla::rpc::ResponseError RespondError ( const FString &  FuncName,
const FString &  ErrorMessage,
const FString &  ExtraInfo = "" 
)

Definition at line 279 of file CarlaServer.cpp.

Referenced by FCarlaServer::FPimpl::BindActions(), and RespondError().