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