More robust sensor and agent id

This commit is contained in:
nsubiron 2018-02-24 20:15:21 +01:00
parent ac358c4826
commit bb3b8697eb
6 changed files with 7 additions and 37 deletions

View File

@ -12,12 +12,6 @@
#include "Game/CarlaGameModeBase.h" #include "Game/CarlaGameModeBase.h"
#include "Game/DataRouter.h" #include "Game/DataRouter.h"
static uint32 GetNextAgentId()
{
static uint32 COUNT = 0u;
return ++COUNT;
}
static FDataRouter &GetDataRouter(UWorld *World) static FDataRouter &GetDataRouter(UWorld *World)
{ {
check(World != nullptr); check(World != nullptr);
@ -26,10 +20,6 @@ static FDataRouter &GetDataRouter(UWorld *World)
return GameMode->GetDataRouter(); return GameMode->GetDataRouter();
} }
UAgentComponent::UAgentComponent(const FObjectInitializer &ObjectInitializer)
: Super(ObjectInitializer),
Id(GetNextAgentId()) {}
void UAgentComponent::AcceptVisitor(IAgentComponentVisitor &Visitor) const void UAgentComponent::AcceptVisitor(IAgentComponentVisitor &Visitor) const
{ {
unimplemented(); unimplemented();

View File

@ -22,11 +22,9 @@ class CARLA_API UAgentComponent : public USceneComponent
public: public:
UAgentComponent(const FObjectInitializer &ObjectInitializer);
uint32 GetId() const uint32 GetId() const
{ {
return Id; return GetTypeHash(this);
} }
virtual void AcceptVisitor(IAgentComponentVisitor &Visitor) const; virtual void AcceptVisitor(IAgentComponentVisitor &Visitor) const;
@ -36,9 +34,4 @@ protected:
virtual void BeginPlay() override; virtual void BeginPlay() override;
virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override; virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override;
private:
UPROPERTY(VisibleAnywhere)
uint32 Id;
}; };

View File

@ -196,12 +196,14 @@ void FCarlaEncoder::Visit(const UTrafficSignAgentComponent &Agent)
void FCarlaEncoder::Visit(const UVehicleAgentComponent &Agent) void FCarlaEncoder::Visit(const UVehicleAgentComponent &Agent)
{ {
auto &Vehicle = Agent.GetVehicle(); auto &Vehicle = Agent.GetVehicle();
Data.type = CARLA_SERVER_AGENT_VEHICLE;
Data.forward_speed = Vehicle.GetVehicleForwardSpeed(); Data.forward_speed = Vehicle.GetVehicleForwardSpeed();
::Encode(Vehicle.GetVehicleBoundsExtent(), Data.box_extent); ::Encode(Vehicle.GetVehicleBoundsExtent(), Data.box_extent);
} }
void FCarlaEncoder::Visit(const UWalkerAgentComponent &Agent) void FCarlaEncoder::Visit(const UWalkerAgentComponent &Agent)
{ {
Data.type = CARLA_SERVER_AGENT_PEDESTRIAN;
Data.forward_speed = Agent.GetForwardSpeed(); Data.forward_speed = Agent.GetForwardSpeed();
::Encode(Agent.GetBoundingBoxExtent(), Data.box_extent); ::Encode(Agent.GetBoundingBoxExtent(), Data.box_extent);
} }

View File

@ -9,16 +9,6 @@
#include "Util/IniFile.h" #include "Util/IniFile.h"
static uint32 GetNextSensorDescriptionId()
{
static uint32 COUNT = 0u;
return ++COUNT;
}
USensorDescription::USensorDescription(const FObjectInitializer &ObjectInitializer)
: Super(ObjectInitializer),
Id(GetNextSensorDescriptionId()) {}
void USensorDescription::AcceptVisitor(ISensorDescriptionVisitor &Visitor) const void USensorDescription::AcceptVisitor(ISensorDescriptionVisitor &Visitor) const
{ {
unimplemented(); unimplemented();
@ -37,7 +27,7 @@ void USensorDescription::Load(const FIniFile &Config, const FString &Section)
void USensorDescription::Log() const void USensorDescription::Log() const
{ {
UE_LOG(LogCarla, Log, TEXT("[%s/%s]"), TEXT("CARLA/Sensor"), *Name); UE_LOG(LogCarla, Log, TEXT("[%s/%s]"), TEXT("CARLA/Sensor"), *Name);
UE_LOG(LogCarla, Log, TEXT("Id = %d"), Id); UE_LOG(LogCarla, Log, TEXT("Id = %d"), GetId());
UE_LOG(LogCarla, Log, TEXT("Type = %s"), *Type); UE_LOG(LogCarla, Log, TEXT("Type = %s"), *Type);
UE_LOG(LogCarla, Log, TEXT("Position = (%s)"), *Position.ToString()); UE_LOG(LogCarla, Log, TEXT("Position = (%s)"), *Position.ToString());
UE_LOG(LogCarla, Log, TEXT("Rotation = (%s)"), *Rotation.ToString()); UE_LOG(LogCarla, Log, TEXT("Rotation = (%s)"), *Rotation.ToString());

View File

@ -19,11 +19,9 @@ class CARLA_API USensorDescription : public UObject
public: public:
USensorDescription(const FObjectInitializer &ObjectInitializer);
uint32 GetId() const uint32 GetId() const
{ {
return Id; return GetTypeHash(this);
} }
virtual void AcceptVisitor(ISensorDescriptionVisitor &Visitor) const; virtual void AcceptVisitor(ISensorDescriptionVisitor &Visitor) const;
@ -39,11 +37,6 @@ public:
virtual void Log() const; virtual void Log() const;
private:
UPROPERTY(Category = "Sensor Description", VisibleAnywhere)
uint32 Id;
public: public:
/** Display name of the sensor. */ /** Display name of the sensor. */

View File

@ -118,6 +118,8 @@ namespace server {
return SetTrafficLight(lhs->mutable_traffic_light(), rhs, cs::TrafficLight::YELLOW); return SetTrafficLight(lhs->mutable_traffic_light(), rhs, cs::TrafficLight::YELLOW);
case CARLA_SERVER_AGENT_TRAFFICLIGHT_RED: case CARLA_SERVER_AGENT_TRAFFICLIGHT_RED:
return SetTrafficLight(lhs->mutable_traffic_light(), rhs, cs::TrafficLight::RED); return SetTrafficLight(lhs->mutable_traffic_light(), rhs, cs::TrafficLight::RED);
default:
log_error("invalid agent type");
} }
} }