Agrarsense
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
AVehicle Class Reference

#include <Vehicle.h>

Inheritance diagram for AVehicle:
Inheritance graph
[legend]
Collaboration diagram for AVehicle:
Collaboration graph
[legend]

Public Member Functions

 AVehicle ()
 
virtual EVehicleTypes GetVehicleType () const
 
void TogglePhysics (bool isOn)
 
void TeleportVehicleTo (FVector NewLocation, FRotator NewRotation)
 
virtual void TeleportVehicleTo_Implementation (FVector NewLocation, FRotator NewRotation)
 
void ResetCamera ()
 
void ToggleLights (bool isOn)
 
void SetVisualizeVehicleOverlapArea (bool Visible)
 
FString ExportToJsonFile (const FString &FileName)
 
void SetVehicleIsInGarage (bool VehicleIsInGarage)
 
bool IsVehicleInGarage () const
 
USensorsManagerComponent * GetSensorsManager () const
 
ACollisionSensorGetCollisionSensor () const
 
ATransformSensorGetTransformSensor () const
 
AOverlapSensorGetOverlapSensor () const
 
FTransform GetMovedFromGarageTransform () const
 
virtual void SetCurrentTransformToMovedFromGarageTransform ()
 
virtual FText GetInteractableName_Implementation () const override
 
virtual FTransform GetInteractableWorldTransform_Implementation () const override
 
virtual FString GetActorID_Implementation () const override
 
virtual FString GetActorName_Implementation () const override
 
virtual FString GetActorInformation_Implementation () const override
 
virtual void SetActorName_Implementation (const FString &NewActorName) override
 
virtual void SetActorIDAndName_Implementation (const FString &NewActorName, const FString &NewID) override
 
void SetVehicleParameters (FWheeledVehicleParameters NewParameters)
 
FWheeledVehicleParameters GetVehicleParameters () const
 
void ApplyVehicleParameters (FWheeledVehicleParameters CurrentParameters)
 
virtual void PossessedBy (AController *NewController) override
 
- Public Member Functions inherited from IInteractable
FText GetInteractableName () const
 
FTransform GetInteractableWorldTransform () const
 
- Public Member Functions inherited from IActorInformation
FString GetActorID () const
 
FString GetActorName () const
 
FString GetActorInformation () const
 
void SetActorName (const FString &NewActorName)
 
void SetActorIDAndName (const FString &NewActorName, const FString &NewID)
 

Public Attributes

FText InteractableName
 
FVehicleGarageChangedDelegate OnVehicleGarageChanged
 

Protected Member Functions

virtual void BeginPlay () override
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 

Protected Attributes

FWheeledVehicleParameters VehicleParameters
 
TObjectPtr< USensorsManagerComponent > SensorsManager
 
ACollisionSensorCollisionSensor = nullptr
 
ATransformSensorTransformSensor = nullptr
 
AOverlapSensorOverlapSensor = nullptr
 
UNiagaraComponent * NiagaraComponent = nullptr
 
FString ActorName
 
FString ActorID
 
FTransform OriginalCameraTransform
 
FTransform MovedFromGarageTransform
 
bool VehicleInGarage = false
 

Additional Inherited Members

- Static Public Member Functions inherited from IActorInformation
static void SetAndValidateActorIDAndName (FString &ActorName, FString &ActorID, TWeakObjectPtr< AActor > Actor)
 
static bool DestroyActorByID (const FString &ID)
 
static AActor * GetActorByID (const FString &ID)
 
template<typename T >
static TArray< T * > GetActorsWithInterface ()
 
static void PrintAllIds ()
 

Detailed Description

Definition at line 38 of file Vehicle.h.

Constructor & Destructor Documentation

◆ AVehicle()

AVehicle::AVehicle ( )

Definition at line 20 of file Vehicle.cpp.

21{
22 PrimaryActorTick.bCanEverTick = false;
23 SensorsManager = CreateDefaultSubobject<USensorsManagerComponent>(TEXT("SensorsManagerComp"));
24 InteractableName = NSLOCTEXT("Agrarsense", "VehicleInteractableName", "Vehicle");
25}
FText InteractableName
Definition: Vehicle.h:257
TObjectPtr< USensorsManagerComponent > SensorsManager
Definition: Vehicle.h:278

References InteractableName, and SensorsManager.

Member Function Documentation

◆ ApplyVehicleParameters()

void AVehicle::ApplyVehicleParameters ( FWheeledVehicleParameters  CurrentParameters)

◆ BeginPlay()

void AVehicle::BeginPlay ( )
overrideprotectedvirtual

Reimplemented in AForwarder, AHarvester, and APIDDrone.

Definition at line 27 of file Vehicle.cpp.

28{
29 Super::BeginPlay();
30
31 TogglePhysics(true);
32
33 // Spawn Transform and Collision sensors for each vehicle
34 FTransform transform = GetTransform();
35
36 // Create Collision sensor
37 FString VehicleCollisionSensorID = ActorID + "/collision";
38 CollisionSensor = USensorFactory::SpawnCollisionSensor(transform, this, VehicleCollisionSensorID, "collision", true);
39
40 // Create Transform sensor
41 FString VehicleTransformSensorID = ActorID + "/transform";
42 TransformSensor = USensorFactory::SpawnTransformSensor(transform, this, VehicleTransformSensorID, "transform", true);
43
44 float NiagaraComponentHeight = 500.0f;
45 float OverlapBoundsSize = 5000.0f;
46
48 {
49 // Adjust certain variables if vehicle is a drone
50 OverlapBoundsSize = 2500.0f;
51 NiagaraComponentHeight = 200.0f;
52 }
53
54 FVector RelativePosition = FVector(0.0f, 0.0f, 0.0f);
56 {
57 // TODO make better solution for this.
58 RelativePosition = FVector(150.0f, -120.0f, 250.0f);
59 }
60
61 // Create OverlapSensor
63 Params.OwningActor = this;
64 Params.Size = FVector(OverlapBoundsSize, OverlapBoundsSize, OverlapBoundsSize);
65 Params.RelativePosition = RelativePosition;
66 FString OverlapSensorID = ActorID + "/overlap";
67 OverlapSensor = USensorFactory::SpawnOverlapSensor(transform, Params, OverlapSensorID, "overlap");
68
69 // Load and setup rain/snow fall niagara system
70 UNiagaraSystem* NiagaraSystem = LoadObject<UNiagaraSystem>(nullptr, TEXT("/Game/Agrarsense/Particles/WaterAndSnow/NS_Particles.NS_Particles"));
71 if (NiagaraSystem)
72 {
73 NiagaraComponent = UNiagaraFunctionLibrary::SpawnSystemAttached(NiagaraSystem, this->GetRootComponent(),
74 FName("NiagaraEmitterSocketName"),
75 FVector(0.0, 0.0, NiagaraComponentHeight), FRotator::ZeroRotator, EAttachLocation::KeepRelativeOffset, true);
76 }
77}
ACollisionSensor * CollisionSensor
Definition: Vehicle.h:281
FString ActorID
Definition: Vehicle.h:296
AOverlapSensor * OverlapSensor
Definition: Vehicle.h:287
virtual EVehicleTypes GetVehicleType() const
Definition: Vehicle.h:51
void TogglePhysics(bool isOn)
ATransformSensor * TransformSensor
Definition: Vehicle.h:284
UNiagaraComponent * NiagaraComponent
Definition: Vehicle.h:290
static ATransformSensor * SpawnTransformSensor(const FTransform &transform, AActor *Owner, const FString sensorIdentifier, const FString sensorName, bool SimulateSensor=true)
static ACollisionSensor * SpawnCollisionSensor(const FTransform &transform, AActor *Owner, const FString sensorIdentifier, const FString sensorName, bool SimulateSensor=true)
static AOverlapSensor * SpawnOverlapSensor(const FTransform &transform, FOverlapSensorParameters Parameters, const FString sensorIdentifier, const FString sensorName)

References ActorID, CollisionSensor, Drone, Forwarder, GetVehicleType(), NiagaraComponent, OverlapSensor, FOverlapSensorParameters::OwningActor, FOverlapSensorParameters::RelativePosition, FOverlapSensorParameters::Size, USensorFactory::SpawnCollisionSensor(), USensorFactory::SpawnOverlapSensor(), USensorFactory::SpawnTransformSensor(), TogglePhysics(), and TransformSensor.

◆ EndPlay()

void AVehicle::EndPlay ( const EEndPlayReason::Type  EndPlayReason)
overrideprotectedvirtual

Reimplemented in AForwarder, AHarvester, and APIDDrone.

Definition at line 86 of file Vehicle.cpp.

87{
88 Super::EndPlay(EndPlayReason);
89
91 {
92 TransformSensor->Destroy();
93 TransformSensor = nullptr;
94 }
95
97 {
98 CollisionSensor->Destroy();
99 CollisionSensor = nullptr;
100 }
101
102 if (OverlapSensor)
103 {
104 OverlapSensor->Destroy();
105 OverlapSensor = nullptr;
106 }
107
108 // Destroy attached sensors when vehicle is destroyed
109 if (IsValid(SensorsManager) && EndPlayReason == EEndPlayReason::Destroyed)
110 {
111 SensorsManager->DestroyAllSensors();
112 }
113
115 {
116 NiagaraComponent->UnregisterComponent();
117 NiagaraComponent->DestroyComponent();
118 NiagaraComponent = nullptr;
119 }
120
121 // Destroy all remaining Actors that are attached to this vehicle, if any
122 TArray<AActor*> AttachedActors;
123 GetAttachedActors(AttachedActors);
124 for (AActor* Actor : AttachedActors)
125 {
126 if (Actor)
127 {
128 Actor->Destroy();
129 }
130 }
131}

References CollisionSensor, NiagaraComponent, OverlapSensor, SensorsManager, and TransformSensor.

◆ ExportToJsonFile()

FString AVehicle::ExportToJsonFile ( const FString &  FileName)

Export the Vehicle and its sensors to a JSON file.

Parameters
FileNameThe name of the file without extension.
Returns
FString representing the saved JSON file path, or an empty string if the export fails.

Definition at line 146 of file Vehicle.cpp.

147{
148 bool OverrideTransform = IsVehicleInGarage();
149
150 FTransform TransformToUse = GetActorTransform();
151
152 if (OverrideTransform)
153 {
154 TransformToUse = MovedFromGarageTransform;
155 }
156
157 return USimulatorJsonExporter::ExportVehicleAndSensorsToJSON(FileName, this, OverrideTransform, TransformToUse);
158}
FTransform MovedFromGarageTransform
Definition: Vehicle.h:301
bool IsVehicleInGarage() const
Definition: Vehicle.h:123
static FString ExportVehicleAndSensorsToJSON(FString FileName, AVehicle *Vehicle, bool OverrideTransform=false, const FTransform &Transform=FTransform())

References USimulatorJsonExporter::ExportVehicleAndSensorsToJSON(), IsVehicleInGarage(), and MovedFromGarageTransform.

Referenced by UROSCommands::HandleExportSensors(), and UROSCommands::HandleExportVehicles().

◆ GetActorID_Implementation()

virtual FString AVehicle::GetActorID_Implementation ( ) const
inlineoverridevirtual

Definition at line 194 of file Vehicle.h.

195 {
196 return ActorID;
197 }

◆ GetActorInformation_Implementation()

virtual FString AVehicle::GetActorInformation_Implementation ( ) const
inlineoverridevirtual

Definition at line 204 of file Vehicle.h.

205 {
207 const FString ID = IActorInformation::Execute_GetActorID(this);
208 const FString Name = IActorInformation::Execute_GetActorName(this);
209 const FTransform VehicleTransform = GetActorTransform();
210 const FVector Location = VehicleTransform.GetLocation();
211 const FRotator Rotation = VehicleTransform.Rotator();
212 FString Information = FString::Printf(TEXT("Vehicle: %s, Name: %s, ID: %s, Location: %s, Rotation: %s"), *Vehicle, *Name, *ID, *Location.ToString(), *Rotation.ToString());
213
214 return Information;
215 }
static FString ConvertVehicleTypeToString(EVehicleTypes VehicleType)

References UEnumUtilities::ConvertVehicleTypeToString(), and AOverlapSensor::Vehicle.

◆ GetActorName_Implementation()

virtual FString AVehicle::GetActorName_Implementation ( ) const
inlineoverridevirtual

Definition at line 199 of file Vehicle.h.

200 {
201 return ActorName;
202 }
FString ActorName
Definition: Vehicle.h:293

◆ GetCollisionSensor()

ACollisionSensor * AVehicle::GetCollisionSensor ( ) const
inline

Get collision sensor attached to this Vehicle

Returns
ACollisionSensor pointer

Definition at line 143 of file Vehicle.h.

144 {
145 return CollisionSensor;
146 }

◆ GetInteractableName_Implementation()

virtual FText AVehicle::GetInteractableName_Implementation ( ) const
inlineoverridevirtual

Definition at line 184 of file Vehicle.h.

185 {
186 return InteractableName;
187 }

◆ GetInteractableWorldTransform_Implementation()

virtual FTransform AVehicle::GetInteractableWorldTransform_Implementation ( ) const
inlineoverridevirtual

Reimplemented in APIDDrone.

Definition at line 189 of file Vehicle.h.

190 {
191 return GetActorTransform();
192 }

◆ GetMovedFromGarageTransform()

FTransform AVehicle::GetMovedFromGarageTransform ( ) const
inline

Get transform of the vehicle when it moved to garage

Returns

Definition at line 173 of file Vehicle.h.

174 {
176 }

◆ GetOverlapSensor()

AOverlapSensor * AVehicle::GetOverlapSensor ( ) const
inline

Get overlap sensor attached to this Vehicle

Returns
AOverlapSensor pointer

Definition at line 163 of file Vehicle.h.

164 {
165 return OverlapSensor;
166 }

◆ GetSensorsManager()

USensorsManagerComponent * AVehicle::GetSensorsManager ( ) const
inline

Get sensor manager attached to this Vehicle

Returns
USensorsManagerComponent pointer

Definition at line 133 of file Vehicle.h.

134 {
135 return SensorsManager;
136 }

◆ GetTransformSensor()

ATransformSensor * AVehicle::GetTransformSensor ( ) const
inline

Get transform sensor attached to this Vehicle

Returns
ATransformSensor pointer

Definition at line 153 of file Vehicle.h.

154 {
155 return TransformSensor;
156 }

◆ GetVehicleParameters()

FWheeledVehicleParameters AVehicle::GetVehicleParameters ( ) const
inline

Definition at line 243 of file Vehicle.h.

244 {
245 return VehicleParameters;
246 }
FWheeledVehicleParameters VehicleParameters
Definition: Vehicle.h:272

Referenced by USimulatorJsonParser::ParseAndSetWheeledVehicleParameters().

◆ GetVehicleType()

virtual EVehicleTypes AVehicle::GetVehicleType ( ) const
inlinevirtual

Get type of the Vehicle

Returns
Vehicle's type

Reimplemented in AForwarder, AHarvester, and APIDDrone.

Definition at line 51 of file Vehicle.h.

52 {
54 }

References NONE.

Referenced by BeginPlay().

◆ IsVehicleInGarage()

bool AVehicle::IsVehicleInGarage ( ) const
inline

Checks if the vehicle is currently in the "Garage" where vehicle can be setup with sensors.

Returns
True if the vehicle is in the garage, false otherwise.

Definition at line 123 of file Vehicle.h.

124 {
125 return VehicleInGarage;
126 }
bool VehicleInGarage
Definition: Vehicle.h:303

Referenced by ExportToJsonFile(), ACamera::PreActorTick(), and APIDDrone::Tick().

◆ PossessedBy()

void AVehicle::PossessedBy ( AController *  NewController)
overridevirtual

Definition at line 79 of file Vehicle.cpp.

80{
81 Super::PossessedBy(NewController);
82
84}
void ResetCamera()

References ResetCamera().

◆ ResetCamera()

void AVehicle::ResetCamera ( )

Reset the camera to original position and rotation BlueprintImplementableEvent meant to be implemented in blueprint e.g. BP_Forwarder

Referenced by PossessedBy().

◆ SetActorIDAndName_Implementation()

virtual void AVehicle::SetActorIDAndName_Implementation ( const FString &  NewActorName,
const FString &  NewID 
)
inlineoverridevirtual

Definition at line 222 of file Vehicle.h.

223 {
224 ActorName = NewActorName;
225 ActorID = NewID;
226 SetAndValidateActorIDAndName(ActorName, ActorID, TWeakObjectPtr<AActor>(this));
227 }
static void SetAndValidateActorIDAndName(FString &ActorName, FString &ActorID, TWeakObjectPtr< AActor > Actor)

References IActorInformation::SetAndValidateActorIDAndName().

◆ SetActorName_Implementation()

virtual void AVehicle::SetActorName_Implementation ( const FString &  NewActorName)
inlineoverridevirtual

Definition at line 217 of file Vehicle.h.

218 {
219 ActorName = NewActorName;
220 }

◆ SetCurrentTransformToMovedFromGarageTransform()

virtual void AVehicle::SetCurrentTransformToMovedFromGarageTransform ( )
inlinevirtual

Reimplemented in APIDDrone.

Definition at line 179 of file Vehicle.h.

180 {
181 MovedFromGarageTransform = GetTransform();
182 }

◆ SetVehicleIsInGarage()

void AVehicle::SetVehicleIsInGarage ( bool  VehicleIsInGarage)
inline

Sets the state of the vehicle garage state boolean.

Parameters
VehicleIsInGarage- A boolean indicating whether the vehicle is in the garage or not.

Definition at line 112 of file Vehicle.h.

113 {
114 VehicleInGarage = VehicleIsInGarage;
116 }
FVehicleGarageChangedDelegate OnVehicleGarageChanged
Definition: Vehicle.h:260

◆ SetVehicleParameters()

void AVehicle::SetVehicleParameters ( FWheeledVehicleParameters  NewParameters)
inline

Definition at line 233 of file Vehicle.h.

234 {
235 VehicleParameters = NewParameters;
237 }
void ApplyVehicleParameters(FWheeledVehicleParameters CurrentParameters)

Referenced by USimulatorJsonParser::ParseAndSetWheeledVehicleParameters().

◆ SetVisualizeVehicleOverlapArea()

void AVehicle::SetVisualizeVehicleOverlapArea ( bool  Visible)

Sets the visibility of the vehicle overlap area visualization.

Parameters
VisibleWhether the vehicle overlap area should be visible or not.

Definition at line 138 of file Vehicle.cpp.

139{
140 if (OverlapSensor)
141 {
143 }
144}
void SetVisualizeOverlapArea(bool Visualize)

References OverlapSensor, and AOverlapSensor::SetVisualizeOverlapArea().

◆ TeleportVehicleTo()

void AVehicle::TeleportVehicleTo ( FVector  NewLocation,
FRotator  NewRotation 
)

Teleport the vehicle into a specific location and rotation

Parameters
NewLocation
NewRotation

◆ TeleportVehicleTo_Implementation()

void AVehicle::TeleportVehicleTo_Implementation ( FVector  NewLocation,
FRotator  NewRotation 
)
virtual

Teleport to implementation

Parameters
NewLocation
NewRotation

Definition at line 133 of file Vehicle.cpp.

134{
135 SetActorLocationAndRotation(NewLocation, NewRotation, false, nullptr, ETeleportType::TeleportPhysics);
136}

◆ ToggleLights()

void AVehicle::ToggleLights ( bool  isOn)

Toggle lights of the vehicle on or off. BlueprintImplementableEvent meant to be implemented in blueprint e.g. BP_Forwarder

Parameters
isOnPhysics on or off

◆ TogglePhysics()

void AVehicle::TogglePhysics ( bool  isOn)

Toggle physics of the vehicle on or off. BlueprintImplementableEvent meant to be implemented in blueprint e.g. BP_Forwarder

Parameters
isOnPhysics on or off

Referenced by BeginPlay(), and UROSCommands::HandleTeleportActorByID().

Member Data Documentation

◆ ActorID

FString AVehicle::ActorID
protected

Definition at line 296 of file Vehicle.h.

Referenced by BeginPlay().

◆ ActorName

FString AVehicle::ActorName
protected

Definition at line 293 of file Vehicle.h.

◆ CollisionSensor

ACollisionSensor* AVehicle::CollisionSensor = nullptr
protected

Definition at line 281 of file Vehicle.h.

Referenced by BeginPlay(), and EndPlay().

◆ InteractableName

FText AVehicle::InteractableName

◆ MovedFromGarageTransform

FTransform AVehicle::MovedFromGarageTransform
protected

Definition at line 301 of file Vehicle.h.

Referenced by ExportToJsonFile().

◆ NiagaraComponent

UNiagaraComponent* AVehicle::NiagaraComponent = nullptr
protected

Definition at line 290 of file Vehicle.h.

Referenced by BeginPlay(), and EndPlay().

◆ OnVehicleGarageChanged

FVehicleGarageChangedDelegate AVehicle::OnVehicleGarageChanged

Definition at line 260 of file Vehicle.h.

◆ OriginalCameraTransform

FTransform AVehicle::OriginalCameraTransform
protected

Definition at line 299 of file Vehicle.h.

◆ OverlapSensor

AOverlapSensor* AVehicle::OverlapSensor = nullptr
protected

Definition at line 287 of file Vehicle.h.

Referenced by BeginPlay(), EndPlay(), and SetVisualizeVehicleOverlapArea().

◆ SensorsManager

TObjectPtr<USensorsManagerComponent> AVehicle::SensorsManager
protected

Definition at line 278 of file Vehicle.h.

Referenced by AVehicle(), EndPlay(), and ASimulationLevelManager::GetSensorsManager().

◆ TransformSensor

ATransformSensor* AVehicle::TransformSensor = nullptr
protected

Definition at line 284 of file Vehicle.h.

Referenced by BeginPlay(), and EndPlay().

◆ VehicleInGarage

bool AVehicle::VehicleInGarage = false
protected

Definition at line 303 of file Vehicle.h.

◆ VehicleParameters

FWheeledVehicleParameters AVehicle::VehicleParameters
protected

Definition at line 272 of file Vehicle.h.


The documentation for this class was generated from the following files: