Space Plunder
Loading...
Searching...
No Matches
AWaypointActor Class Reference

#include <WaypointActor.h>

Inheritance diagram for AWaypointActor:

Public Member Functions

 AWaypointActor ()
 
void SetOwnerPlayerFromController (APlayerController *PlayerController) const
 
void SetOwnerPlayerFromPawn (APawn *PlayerPawn) const
 

Protected Member Functions

virtual void BeginPlay () override
 
void SetScreenSize ()
 

Protected Attributes

class USceneComponent * SceneComponent
 
class USphereComponent * SphereComponent
 
class UScreenFacingWidgetComponent * ScreenFacingWidgetComponent
 
bool bUpdateSize = true
 
float UpdateFrequency = 2.5f
 
float MaxDistance = 100.0f
 
float MinDrawSize = 35.0f
 
float MaxDrawSize = 50.0f
 
UWaypointWidgetWaypointWidget = nullptr
 
AActor * SenderActor = nullptr
 

Private Attributes

TSubclassOf< UUserWidget > WaypointWidgetClass
 
FTimerHandle WidgetSizeTimerHandle
 

Constructor & Destructor Documentation

◆ AWaypointActor()

AWaypointActor::AWaypointActor ( )
13{
14 PrimaryActorTick.bCanEverTick = false;
15
16
17 SceneComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Scene Component"));
18 RootComponent = SceneComponent;
19
20 ScreenFacingWidgetComponent = CreateDefaultSubobject<UScreenFacingWidgetComponent>(TEXT("Screen Facing Widget"));
22
23 SphereComponent = CreateDefaultSubobject<USphereComponent>(TEXT("Sphere"));
24 SphereComponent->SetupAttachment(SceneComponent);
25
26 WaypointWidgetClass = UBaseHelpersBPLib::GetDefaultWidgetBPClass("/BaseHelpers/Widgets/WBP_Waypoint");
27 // const ConstructorHelpers::FClassFinder<UUserWidget> WaypointWidgetBP(TEXT("/BaseHelpers/Widgets/WBP_Waypoint"));
28 // if (!ensure(WaypointWidgetBP.Class != nullptr)) return;
29 // WaypointWidgetClass = WaypointWidgetBP.Class;
30
32 ScreenFacingWidgetComponent->SetWidgetSpace(EWidgetSpace::Screen);
33}
class UScreenFacingWidgetComponent * ScreenFacingWidgetComponent
Definition WaypointActor.h:34
class USphereComponent * SphereComponent
Definition WaypointActor.h:32
class USceneComponent * SceneComponent
Definition WaypointActor.h:30
TSubclassOf< UUserWidget > WaypointWidgetClass
Definition WaypointActor.h:58
static TSubclassOf< UUserWidget > GetDefaultWidgetBPClass(const FString &Location)
Definition BaseHelpersBPLib.cpp:227

Member Function Documentation

◆ BeginPlay()

void AWaypointActor::BeginPlay ( )
overrideprotectedvirtual
52{
53 Super::BeginPlay();
54
55 WaypointWidget = Cast<UWaypointWidget>(ScreenFacingWidgetComponent->GetUserWidgetObject());
56 if(WaypointWidget == nullptr)
57 {
58 UE_LOG(LogTemp, Warning, TEXT("WaypointWidget NULL in Waypoint Actor"));
59 ScreenFacingWidgetComponent->Deactivate();
60 ScreenFacingWidgetComponent->DestroyComponent();
61 Destroy();
62 }
63 else
64 {
67 if(bUpdateSize)
68 {
69 GetWorld()->GetTimerManager().SetTimer(WidgetSizeTimerHandle, this, &AWaypointActor::SetScreenSize, UpdateFrequency, true, 0.1f);
70 }
71 WaypointWidget->SetVisibility(ESlateVisibility::SelfHitTestInvisible);
72 }
73}
FTimerHandle WidgetSizeTimerHandle
Definition WaypointActor.h:60
UWaypointWidget * WaypointWidget
Definition WaypointActor.h:50
bool bUpdateSize
Definition WaypointActor.h:38
void SetScreenSize()
Definition WaypointActor.cpp:75
float UpdateFrequency
Definition WaypointActor.h:40
void SetWaypointActor(AActor *Actor)
Definition WaypointWidget.h:21
virtual void ActorConstruct()
Definition WaypointWidget.cpp:40

◆ SetOwnerPlayerFromController()

void AWaypointActor::SetOwnerPlayerFromController ( APlayerController * PlayerController) const
36{
37 if(ScreenFacingWidgetComponent == nullptr || PlayerController == nullptr || PlayerController->Player == nullptr){return;}
38 const ULocalPlayer* LocalPlayer = Cast<ULocalPlayer>(PlayerController->Player);
39 if(LocalPlayer == nullptr){UE_LOG(LogTemp, Error, TEXT("Set Owner Player in Waypoint Actor Failed"));return;}
40 ScreenFacingWidgetComponent->SetOwnerPlayerFromController(PlayerController);
41
42}

◆ SetOwnerPlayerFromPawn()

void AWaypointActor::SetOwnerPlayerFromPawn ( APawn * PlayerPawn) const
45{
46 if(PlayerPawn == nullptr || PlayerPawn->GetController() == nullptr){return;}
47 APlayerController* PlayerController = Cast<APlayerController>(PlayerPawn->GetController());
48 SetOwnerPlayerFromController(PlayerController);
49}
void SetOwnerPlayerFromController(APlayerController *PlayerController) const
Definition WaypointActor.cpp:35

◆ SetScreenSize()

void AWaypointActor::SetScreenSize ( )
protected
76{
77 if(WaypointWidget == nullptr || ScreenFacingWidgetComponent == nullptr)
78 {
79 GetWorld()->GetTimerManager().ClearTimer(WidgetSizeTimerHandle);
80 return;
81 }
82 const float DrawSize = UKismetMathLibrary::MapRangeClamped(WaypointWidget->GetDistance(true), 0.0f, MaxDistance, MaxDrawSize, MinDrawSize);
83 ScreenFacingWidgetComponent->SetDrawSize(FVector2D(DrawSize));
84}
float MaxDistance
Definition WaypointActor.h:44
float MinDrawSize
Definition WaypointActor.h:46
float MaxDrawSize
Definition WaypointActor.h:48
float GetDistance(const bool bMeters=true) const
Definition WaypointWidget.cpp:64

Member Data Documentation

◆ bUpdateSize

bool AWaypointActor::bUpdateSize = true
protected

◆ MaxDistance

float AWaypointActor::MaxDistance = 100.0f
protected

Meters

◆ MaxDrawSize

float AWaypointActor::MaxDrawSize = 50.0f
protected

◆ MinDrawSize

float AWaypointActor::MinDrawSize = 35.0f
protected

◆ SceneComponent

class USceneComponent* AWaypointActor::SceneComponent
protected

◆ ScreenFacingWidgetComponent

class UScreenFacingWidgetComponent* AWaypointActor::ScreenFacingWidgetComponent
protected

◆ SenderActor

AActor* AWaypointActor::SenderActor = nullptr
protected

◆ SphereComponent

class USphereComponent* AWaypointActor::SphereComponent
protected

◆ UpdateFrequency

float AWaypointActor::UpdateFrequency = 2.5f
protected

◆ WaypointWidget

UWaypointWidget* AWaypointActor::WaypointWidget = nullptr
protected

◆ WaypointWidgetClass

TSubclassOf<UUserWidget> AWaypointActor::WaypointWidgetClass
private

◆ WidgetSizeTimerHandle

FTimerHandle AWaypointActor::WidgetSizeTimerHandle
private

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