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

#include <InteractionPingWidget.h>

Inheritance diagram for UInteractionPingWidget:

Public Member Functions

virtual bool Initialize () override
 
virtual void NativeConstruct () override
 
void ActorConstruct ()
 
virtual void NativeDestruct () override
 
void SetPingData (const FPingData &Ping, AActor *Sender)
 
void OnReceivePingData (const FPingData &Ping, const AActor *Sender)
 
void SetPingActor (AActor *Actor)
 
void SetDistanceText ()
 
float GetDistance (const bool bMeters=true) const
 

Protected Attributes

class UImage * PingIcon
 
class UTextBlock * ContextTextBlock
 
class UTextBlock * DistanceTextBlock
 
bool bUseDistance = true
 
float DistanceUpdateSpeed = 0.5f
 
AActor * PingActor
 
AActor * OwnerActor
 

Private Member Functions

void GetOwnerActor ()
 

Private Attributes

FTimerHandle DistanceTimerHandle
 
FNumberFormattingOptions NumberFormatOptions
 

Member Function Documentation

◆ ActorConstruct()

void UInteractionPingWidget::ActorConstruct ( )
26{
27 if(bUseDistance && GetWorld() != nullptr)
28 {
29 NumberFormatOptions.SetUseGrouping(false); // This turns off comma separators
30 GetWorld()->GetTimerManager().SetTimer(DistanceTimerHandle, this, &UInteractionPingWidget::SetDistanceText, DistanceUpdateSpeed, true, 0.0f);
31 }
32}
FTimerHandle DistanceTimerHandle
Definition InteractionPingWidget.h:67
bool bUseDistance
Definition InteractionPingWidget.h:54
void SetDistanceText()
Definition InteractionPingWidget.cpp:53
float DistanceUpdateSpeed
Definition InteractionPingWidget.h:56
FNumberFormattingOptions NumberFormatOptions
Definition InteractionPingWidget.h:68

◆ GetDistance()

float UInteractionPingWidget::GetDistance ( const bool bMeters = true) const
69{
70 if(OwnerActor != nullptr && PingActor != nullptr)
71 {
72 const float Distance = UKismetMathLibrary::Vector_Distance(OwnerActor->GetActorLocation(), PingActor->GetActorLocation());
73 if(bMeters)
74 {
75 if(Distance == 0.0f)
76 {
77 return 0.0f;
78 }
79 return (Distance / 100.0f);
80 }
81 return Distance;
82 }
83 UE_LOG(LogTemp, Warning, TEXT("Get Distance Failed"));
84 return 0.0f;
85}
AActor * PingActor
Definition InteractionPingWidget.h:59
AActor * OwnerActor
Definition InteractionPingWidget.h:61

◆ GetOwnerActor()

void UInteractionPingWidget::GetOwnerActor ( )
private
88{
89 if(OwnerActor != nullptr){return;}
90 if(GetOwningPlayer() != nullptr && GetOwningPlayer()->GetPawn() != nullptr)
91 {
92 OwnerActor = GetOwningPlayer()->GetPawn();
93 }
94}

◆ Initialize()

bool UInteractionPingWidget::Initialize ( )
overridevirtual
10{
11 const bool Success = Super::Initialize();
12 if(!Success) return false;
13 if (!ensure(ContextTextBlock != nullptr)) return false;
14 if (!ensure(PingIcon != nullptr)) return false;
15 if (!ensure(DistanceTextBlock != nullptr)) return false;
16
17 return true;
18}
class UTextBlock * ContextTextBlock
Definition InteractionPingWidget.h:49
class UTextBlock * DistanceTextBlock
Definition InteractionPingWidget.h:51
class UImage * PingIcon
Definition InteractionPingWidget.h:47

◆ NativeConstruct()

void UInteractionPingWidget::NativeConstruct ( )
overridevirtual
21{
22 Super::NativeConstruct();
23}

◆ NativeDestruct()

void UInteractionPingWidget::NativeDestruct ( )
overridevirtual
35{
36 if(GetWorld() != nullptr)
37 {
38 GetWorld()->GetTimerManager().ClearTimer(DistanceTimerHandle);
39 }
40 Super::NativeDestruct();
41}

◆ OnReceivePingData()

void UInteractionPingWidget::OnReceivePingData ( const FPingData & Ping,
const AActor * Sender )

◆ SetDistanceText()

void UInteractionPingWidget::SetDistanceText ( )
54{
55 if(DistanceTextBlock == nullptr)
56 {
57 if(GetWorld() != nullptr)
58 {
59 GetWorld()->GetTimerManager().ClearTimer(DistanceTimerHandle);
60 }
61 return;
62 }
63 const FText DistanceText = FText::Format(NSLOCTEXT("YourNamespace","DistanceFormat" , "{0} m"),
64 FText::AsNumber(FMath::RoundToInt(GetDistance(true)), &NumberFormatOptions));
65 DistanceTextBlock->SetText(DistanceText);
66}
float GetDistance(const bool bMeters=true) const
Definition InteractionPingWidget.cpp:68

◆ SetPingActor()

void UInteractionPingWidget::SetPingActor ( AActor * Actor)
inline
36{PingActor = Actor;};

◆ SetPingData()

void UInteractionPingWidget::SetPingData ( const FPingData & Ping,
AActor * Sender )
44{
45 OwnerActor = Sender;
46 if(OwnerActor == nullptr)
47 {
49 }
50 OnReceivePingData(Ping, Sender);
51}
void OnReceivePingData(const FPingData &Ping, const AActor *Sender)
void GetOwnerActor()
Definition InteractionPingWidget.cpp:87

Member Data Documentation

◆ bUseDistance

bool UInteractionPingWidget::bUseDistance = true
protected

◆ ContextTextBlock

class UTextBlock* UInteractionPingWidget::ContextTextBlock
protected

◆ DistanceTextBlock

class UTextBlock* UInteractionPingWidget::DistanceTextBlock
protected

◆ DistanceTimerHandle

FTimerHandle UInteractionPingWidget::DistanceTimerHandle
private

◆ DistanceUpdateSpeed

float UInteractionPingWidget::DistanceUpdateSpeed = 0.5f
protected

◆ NumberFormatOptions

FNumberFormattingOptions UInteractionPingWidget::NumberFormatOptions
private

◆ OwnerActor

AActor* UInteractionPingWidget::OwnerActor
protected

◆ PingActor

AActor* UInteractionPingWidget::PingActor
protected

◆ PingIcon

class UImage* UInteractionPingWidget::PingIcon
protected

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