18#include "Kismet/GameplayStatics.h"
19#include "NiagaraFunctionLibrary.h"
20#include "NiagaraComponent.h"
21#include "NiagaraSystem.h"
25 PrimaryActorTick.bCanEverTick =
false;
26 SensorsManager = CreateDefaultSubobject<USensorsManagerComponent>(TEXT(
"SensorsManagerComp"));
27 InteractableName = NSLOCTEXT(
"Agrarsense",
"VehicleInteractableName",
"Vehicle");
45 FTransform transform = GetTransform();
51 FString VehicleCollisionSensorID =
ActorID +
"/collision";
53 CollisionSensorSpawnParams.
Transform = transform;
55 CollisionSensorSpawnParams.
SensorName =
"collision";
57 CollisionSensorSpawnParams.
Parent =
this;
66 FString VehicleTransformSensorID =
ActorID +
"/transform";
68 TransformSensorSpawnParams.
Transform = transform;
70 TransformSensorSpawnParams.
SensorName =
"transform";
72 TransformSensorSpawnParams.
Parent =
this;
88 FString CompName = Comp->GetName();
90 const FString VehicleTransformSensorID = FString::Printf(TEXT(
"%s/%s/transform"), *
ActorID, *CompName);
93 TransformSensorSpawnParams.
Transform = transform;
95 TransformSensorSpawnParams.
SensorName =
"transform";
97 TransformSensorSpawnParams.
Parent =
this;
110 float NiagaraComponentHeight = 500.0f;
111 float OverlapBoundsSize = 50.0f;
115 NiagaraComponentHeight = 200.0f;
118 FVector RelativePosition = FVector(0.0f, 0.0f, 0.0f);
122 RelativePosition = FVector(150.0f, -120.0f, 250.0f);
130 FString OverlapSensorID =
ActorID +
"/overlap";
133 OverlapSensorSpawnParams.
Transform = transform;
135 OverlapSensorSpawnParams.
SensorName =
"transform";
137 OverlapSensorSpawnParams.
Parent =
this;
141 SensorParams.
Size = FVector(OverlapBoundsSize, OverlapBoundsSize, OverlapBoundsSize);
148 UNiagaraSystem* NiagaraSystem = LoadObject<UNiagaraSystem>(
nullptr, TEXT(
"/Game/Agrarsense/Particles/WaterAndSnow/NS_Particles.NS_Particles"));
151 NiagaraComponent = UNiagaraFunctionLibrary::SpawnSystemAttached(NiagaraSystem, this->GetRootComponent(),
152 FName(
"NiagaraEmitterSocketName"),
153 FVector(0.0, 0.0, NiagaraComponentHeight), FRotator::ZeroRotator, EAttachLocation::KeepRelativeOffset,
true);
157 UE_LOG(LogTemp, Warning, TEXT(
"Vehicle.cpp: Couldn't find NS_Particles"));
165 Super::EndPlay(EndPlayReason);
183 SensorPtr->Destroy();
201 if (IsValid(
SensorsManager) && EndPlayReason == EEndPlayReason::Destroyed)
214 TArray<AActor*> AttachedActors;
215 GetAttachedActors(AttachedActors);
216 for (AActor* Actor : AttachedActors)
251 Super::PossessedBy(NewController);
258 SetActorLocationAndRotation(NewLocation, NewRotation,
false,
nullptr, ETeleportType::TeleportPhysics);
273 FTransform TransformToUse = GetActorTransform();
275 if (OverrideTransform)
void SetVisualizeOverlapArea(bool Visualize)
void SetOverlapBounds(const FVector &NewSize)
ACollisionSensor * CollisionSensor
FTransform MovedFromGarageTransform
TArray< UStaticMeshComponent * > ExtraTransformSensorPositions
FWheeledVehicleParameters VehicleParameters
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override
void SetVehicleParameters(FWheeledVehicleParameters NewParameters)
virtual void BeginPlay() override
virtual void PossessedBy(AController *NewController) override
TArray< ATransformSensor * > ExtraTransformSensors
virtual void TeleportVehicleTo_Implementation(FVector NewLocation, FRotator NewRotation)
bool IsVehicleInGarage() const
FString ExportToJsonFile(const FString &FileName)
void SetVisualizeVehicleOverlapArea(bool Visible)
AOverlapSensor * OverlapSensor
virtual EVehicleTypes GetVehicleType() const
void ApplyVehicleParameters(FWheeledVehicleParameters CurrentParameters)
void TogglePhysics(bool isOn)
ATransformSensor * TransformSensor
UNiagaraComponent * NiagaraComponent
virtual void ROSBridgeStateChanged(EROSState ROSState)
TObjectPtr< USensorsManagerComponent > SensorsManager
static UROSHandler * GetROSHandle(const UObject *WorldContextObject)
FROSDelegate_ROState OnROSStateChanged
static ATransformSensor * SpawnTransformSensor(const FSensorSpawnParameters SpawnParameters, FTransformSensorParameters SensorParameters)
static ACollisionSensor * SpawnCollisionSensor(const FSensorSpawnParameters SpawnParameters, const FCollisionSensorParameters CollisionSensorParameters)
static AOverlapSensor * SpawnOverlapSensor(const FSensorSpawnParameters SpawnParameters, FOverlapSensorParameters SensorParameters)
static FString ExportVehicleAndSensorsToJSON(FString FileName, AVehicle *Vehicle, bool OverrideTransform=false, const FTransform &Transform=FTransform())
float OverlapRadiusMeters