17#include "Kismet/GameplayStatics.h"
18#include "NiagaraFunctionLibrary.h"
19#include "NiagaraComponent.h"
20#include "NiagaraSystem.h"
24 PrimaryActorTick.bCanEverTick =
false;
25 SensorsManager = CreateDefaultSubobject<USensorsManagerComponent>(TEXT(
"SensorsManagerComp"));
26 InteractableName = NSLOCTEXT(
"Agrarsense",
"VehicleInteractableName",
"Vehicle");
44 FTransform transform = GetTransform();
47 FString VehicleCollisionSensorID =
ActorID +
"/collision";
57 FString VehicleTransformSensorID =
ActorID +
"/transform";
61 float NiagaraComponentHeight = 500.0f;
62 float OverlapBoundsSize = 5000.0f;
67 OverlapBoundsSize = 2500.0f;
68 NiagaraComponentHeight = 200.0f;
71 FVector RelativePosition = FVector(0.0f, 0.0f, 0.0f);
75 RelativePosition = FVector(150.0f, -120.0f, 250.0f);
81 Params.
Size = FVector(OverlapBoundsSize, OverlapBoundsSize, OverlapBoundsSize);
83 FString OverlapSensorID =
ActorID +
"/overlap";
87 UNiagaraSystem* NiagaraSystem = LoadObject<UNiagaraSystem>(
nullptr, TEXT(
"/Game/Agrarsense/Particles/WaterAndSnow/NS_Particles.NS_Particles"));
90 NiagaraComponent = UNiagaraFunctionLibrary::SpawnSystemAttached(NiagaraSystem, this->GetRootComponent(),
91 FName(
"NiagaraEmitterSocketName"),
92 FVector(0.0, 0.0, NiagaraComponentHeight), FRotator::ZeroRotator, EAttachLocation::KeepRelativeOffset,
true);
100 Super::EndPlay(EndPlayReason);
127 if (IsValid(
SensorsManager) && EndPlayReason == EEndPlayReason::Destroyed)
140 TArray<AActor*> AttachedActors;
141 GetAttachedActors(AttachedActors);
142 for (AActor* Actor : AttachedActors)
158 Super::PossessedBy(NewController);
165 SetActorLocationAndRotation(NewLocation, NewRotation,
false,
nullptr, ETeleportType::TeleportPhysics);
180 FTransform TransformToUse = GetActorTransform();
182 if (OverrideTransform)
void SetVisualizeOverlapArea(bool Visualize)
ACollisionSensor * CollisionSensor
FTransform MovedFromGarageTransform
FWheeledVehicleParameters VehicleParameters
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override
virtual void BeginPlay() override
virtual void PossessedBy(AController *NewController) override
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 AOverlapSensor * SpawnOverlapSensor(const FTransform &transform, FOverlapSensorParameters Parameters, const FString sensorIdentifier, const FString sensorName, AActor *Parent=nullptr)
static ATransformSensor * SpawnTransformSensor(const FTransform &transform, FTransformSensorParameters Parameters, const FString sensorIdentifier, const FString sensorName, bool SimulateSensor=true, AActor *Parent=nullptr)
static ACollisionSensor * SpawnCollisionSensor(const FTransform &transform, AActor *Owner, const FString sensorIdentifier, const FString sensorName, bool SimulateSensor=true, AActor *Parent=nullptr)
static FString ExportVehicleAndSensorsToJSON(FString FileName, AVehicle *Vehicle, bool OverrideTransform=false, const FTransform &Transform=FTransform())