From e349dc79c92f222750fde1dceca88188eacf8a5a Mon Sep 17 00:00:00 2001 From: Blyron Date: Mon, 8 Jul 2024 09:50:31 +0200 Subject: [PATCH 1/3] Add wheelchair variation --- LibCarla/source/carla/rpc/ActorAttributeType.h | 10 +++++----- .../Carla/Actor/ActorBlueprintFunctionLibrary.cpp | 7 +++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/LibCarla/source/carla/rpc/ActorAttributeType.h b/LibCarla/source/carla/rpc/ActorAttributeType.h index dda52939f..9ecf822b6 100644 --- a/LibCarla/source/carla/rpc/ActorAttributeType.h +++ b/LibCarla/source/carla/rpc/ActorAttributeType.h @@ -12,11 +12,11 @@ namespace carla { namespace rpc { enum class ActorAttributeType : uint8_t { - Bool, - Int, - Float, - String, - RGBColor, + Bool = 1u, + Int = 2u, + Float = 3u, + String = 4u, + RGBColor = 5u, SIZE, INVALID diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/ActorBlueprintFunctionLibrary.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/ActorBlueprintFunctionLibrary.cpp index 2de3050a2..0876f6160 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/ActorBlueprintFunctionLibrary.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/ActorBlueprintFunctionLibrary.cpp @@ -1613,6 +1613,13 @@ void UActorBlueprintFunctionLibrary::MakePedestrianDefinition( IsInvincible.bRestrictToRecommended = false; Definition.Variations.Emplace(IsInvincible); + FActorVariation WheelChairVariation; + WheelChairVariation.Id = TEXT("use_wheelchair"); + WheelChairVariation.Type = EActorAttributeType::Bool; + WheelChairVariation.RecommendedValues = { TEXT("true"), TEXT("false") }; + WheelChairVariation.bRestrictToRecommended = false; + Definition.Variations.Emplace(WheelChairVariation); + Success = CheckActorDefinition(Definition); } From 8ba08e1f7efddf6513ee3c3a4b97db991f812950 Mon Sep 17 00:00:00 2001 From: Blyron Date: Mon, 8 Jul 2024 10:07:32 +0200 Subject: [PATCH 2/3] Update size value --- PythonAPI/carla/source/libcarla/Blueprint.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PythonAPI/carla/source/libcarla/Blueprint.cpp b/PythonAPI/carla/source/libcarla/Blueprint.cpp index e711290e4..9f3c04664 100644 --- a/PythonAPI/carla/source/libcarla/Blueprint.cpp +++ b/PythonAPI/carla/source/libcarla/Blueprint.cpp @@ -37,7 +37,7 @@ namespace client { std::ostream &operator<<(std::ostream &out, const ActorAttribute &attr) { using Type = carla::rpc::ActorAttributeType; - static_assert(static_cast(Type::SIZE) == 5u, "Please update this function."); + static_assert(static_cast(Type::SIZE) == 6u, "Please update this function."); out << "ActorAttribute(id=" << attr.GetId(); switch (attr.GetType()) { case Type::Bool: From cf3cef936be7462337c1396780e19e862bdc19b3 Mon Sep 17 00:00:00 2001 From: Blyron Date: Mon, 8 Jul 2024 11:34:40 +0200 Subject: [PATCH 3/3] Add control variable --- .../Actor/ActorBlueprintFunctionLibrary.cpp | 19 +++++++++++++++++-- .../Source/Carla/Actor/PedestrianParameters.h | 3 +++ .../Carla/Source/Carla/Walker/WalkerBase.h | 3 +++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/ActorBlueprintFunctionLibrary.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/ActorBlueprintFunctionLibrary.cpp index 0876f6160..823859d4d 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/ActorBlueprintFunctionLibrary.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/ActorBlueprintFunctionLibrary.cpp @@ -1593,6 +1593,12 @@ void UActorBlueprintFunctionLibrary::MakePedestrianDefinition( EActorAttributeType::String, GetAge(Parameters.Age)}); + + Definition.Attributes.Emplace(FActorAttribute{ + TEXT("can_use_wheel_chair"), + EActorAttributeType::Bool, + Parameters.bCanUseWheelChair ? TEXT("true") : TEXT("false") }); + if (Parameters.Speed.Num() > 0) { FActorVariation Speed; @@ -1606,6 +1612,8 @@ void UActorBlueprintFunctionLibrary::MakePedestrianDefinition( Definition.Variations.Emplace(Speed); } + bool bCanUseWheelChair = Parameters.bCanUseWheelChair; + FActorVariation IsInvincible; IsInvincible.Id = TEXT("is_invincible"); IsInvincible.Type = EActorAttributeType::Bool; @@ -1616,8 +1624,15 @@ void UActorBlueprintFunctionLibrary::MakePedestrianDefinition( FActorVariation WheelChairVariation; WheelChairVariation.Id = TEXT("use_wheelchair"); WheelChairVariation.Type = EActorAttributeType::Bool; - WheelChairVariation.RecommendedValues = { TEXT("true"), TEXT("false") }; - WheelChairVariation.bRestrictToRecommended = false; + if(bCanUseWheelChair) + { + WheelChairVariation.RecommendedValues = { TEXT("true"), TEXT("false") }; + } + else + { + WheelChairVariation.RecommendedValues = { TEXT("false") }; + } + WheelChairVariation.bRestrictToRecommended = true; Definition.Variations.Emplace(WheelChairVariation); Success = CheckActorDefinition(Definition); diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/PedestrianParameters.h b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/PedestrianParameters.h index 86310a6d9..7572e9b3a 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/PedestrianParameters.h +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Actor/PedestrianParameters.h @@ -55,4 +55,7 @@ struct CARLA_API FPedestrianParameters UPROPERTY(EditAnywhere, BlueprintReadWrite) int32 Generation = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bCanUseWheelChair = false; }; diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Walker/WalkerBase.h b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Walker/WalkerBase.h index 676569ed4..5990bceeb 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Walker/WalkerBase.h +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Walker/WalkerBase.h @@ -24,6 +24,9 @@ public: UPROPERTY(Category="Walker Base", BlueprintReadWrite, EditAnywhere) float AfterLifeSpan = 10.0f; + UPROPERTY(Category="Walker Base", BlueprintReadWrite, EditAnywhere) + bool bUsesWheelChair = false; + UFUNCTION(BlueprintCallable) void StartDeathLifeSpan() {