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

#include <BaseHelpersBPLib.h>

Inheritance diagram for UBaseHelpersBPLib:

Static Public Member Functions

static UWorld * FindPlayInEditorAuthorityWorld ()
 
static APlayerController * FindPlayInEditorAuthorityPlayerController (const APlayerController *ClientController)
 
static void PrintToLog (const UObject *WorldContextObject, const FString &Message, const bool bWarning=false, const bool bError=false)
 
static void PrintToLogWithCategory (const UObject *WorldContextObject, const FLogCategoryBase &Category, const FString &Message, const bool bWarning=false, const bool bError=false)
 
static FCharacterBaseSkills RandomCharacterSkills (const int32 Min, const int32 Max)
 
static int32 GetPlayerTeamID (AController *Controller)
 
static int32 GetPlayerTeamID (APlayerState *PlayerState)
 
static int32 GetPlayerTeamIDFromController (AController *Controller)
 
static int32 GetPlayerTeamIDFromState (APlayerState *PlayerState)
 
static UClass * GetDefaultBPClass (const FString &Location)
 
static TSubclassOf< AActor > GetDefaultActorBPClass (const FString &Location)
 
static TSubclassOf< UUserWidget > GetDefaultWidgetBPClass (const FString &Location)
 
static UDataTable * GetDefaultDataTable (const FString &Location)
 
static void PrintVirtualBoneInfo (USkeletalMeshComponent *SkeletalMeshComponent)
 
static void ToggleWidgetVisibility (UUserWidget *Widget, const bool bForceSetVisible=false, const bool bForceSetCollapsed=false)
 
static void ToggleInputMode (APlayerController *InController, const bool bForceGameOnly=false, const bool bForceUI=false, class UUserWidget *WidgetToFocus=nullptr)
 
static ESoundSource SoundSourceFromName (const FName &SoundName)
 
static FName SoundNameFromSource (const ESoundSource SoundSource)
 
static FString GetGameplayTagName (const FGameplayTag &GameplayTag)
 
static FString DescribeColorHelper (const FColor &Color)
 
static TArray< FGameplayTag > GetAllTagsOfCategory (const FName &Category)
 
static FString GetEnumValue (const FString &BaseString)
 
static bool GetInteraction (FInteractionType &InteractionType, const FInteractionData &InteractionData, const int32 Value)
 
static bool GetInteractionFromType (FInteractionType &InteractionType, const FInteractionData &InteractionData, const EInteractionType Interaction)
 
static bool LineTraceByChannel (const UObject *WorldContextObject, FHitResult &Hit, const FVector &Start, const FVector &End, const ETraceTypeQuery TraceChannel, const TArray< AActor * > &ActorsToIgnore, const bool bIgnoreSelf, const bool bReturnPhysicalMaterial=false, const bool bTraceComplex=false, const bool bDebug=false, const FLinearColor TraceColor=FLinearColor::Red, const float DrawTime=2.0f)
 
static FVector GetTraceStartLocation (const APlayerController *InController)
 
static FRotator GetTraceStartRotation (const APlayerController *InController)
 
static FVector GetTraceStartEyeLocation (const APawn *Pawn)
 
static FRotator GetTraceStartEyeRotation (const APawn *Pawn)
 
static float CalculateRatio (const int32 Kills, const int32 Deaths)
 
static FVector GetTraceEndLocation (const APlayerController *InController, const float InLength)
 
static FHitResult SimpleLineTrace (const APlayerController *InController, const float InLength, const bool bDebug)
 
static UTexture2D * TextureFromWidget (UUserWidget *const Widget, const FVector2D &DrawSize)
 
static EDamageType DamageTypeToEnum (const UDamageType *DamageType)
 
static bool IsDamageTypeNonLethal (const UDamageType *DamageType)
 
static EDrawDebugTrace::Type GetDrawDebugType (const bool bDebuggingMode)
 

Member Function Documentation

◆ CalculateRatio()

float UBaseHelpersBPLib::CalculateRatio ( const int32 Kills,
const int32 Deaths )
static
682{
683 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::CalculateRatio);
684 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
685 if(Deaths == 0)
686 {
687 return Kills > 0 ? static_cast<float>(Kills) : 0.0f;
688 }
689 return static_cast<float>(Kills) / static_cast<float>(Deaths);
690}
static float CalculateRatio(const int32 Kills, const int32 Deaths)
Definition BaseHelpersBPLib.cpp:681

◆ DamageTypeToEnum()

EDamageType UBaseHelpersBPLib::DamageTypeToEnum ( const UDamageType * DamageType)
static
792{
793 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::DamageTypeToEnum);
794 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
795 if(DamageType->GetClass() == UBaseDamage::StaticClass())
796 {
797 return EDamageType::Base;
798 }
799 if(DamageType->GetClass() == UBulletDamage::StaticClass())
800 {
801 return EDamageType::Bullet;
802 }
803 if(DamageType->GetClass() == ULaserDamage::StaticClass())
804 {
805 return EDamageType::Laser;
806 }
807 if(DamageType->GetClass() == UPlasmaDamage::StaticClass())
808 {
809 return EDamageType::Plasma;
810 }
811 if(DamageType->GetClass() == UElectricalDamage::StaticClass())
812 {
814 }
815 if(DamageType->GetClass() == UExplosionDamage::StaticClass())
816 {
818 }
819 if(DamageType->GetClass() == UFallDamage::StaticClass())
820 {
821 return EDamageType::Fall;
822 }
823 if(DamageType->GetClass() == UFireDamage::StaticClass())
824 {
825 return EDamageType::Fire;
826 }
827 if(DamageType->GetClass() == UMeleeDamage::StaticClass())
828 {
829 return EDamageType::Melee;
830 }
831 if(DamageType->GetClass() == UNonLethalMeleeDamage::StaticClass())
832 {
834 }
835 if(DamageType->GetClass() == UNonLethalBulletDamage::StaticClass())
836 {
838 }
839 if(DamageType->GetClass() == UPoisionDamage::StaticClass())
840 {
841 return EDamageType::Poison;
842 }
843 if(DamageType->GetClass() == UWaterDamage::StaticClass())
844 {
845 return EDamageType::Water;
846 }
847 return EDamageType::Base;
848}
static EDamageType DamageTypeToEnum(const UDamageType *DamageType)
Definition BaseHelpersBPLib.cpp:791

◆ DescribeColorHelper()

static FString UBaseHelpersBPLib::DescribeColorHelper ( const FColor & Color)
inlinestatic
71 {
72 const int32 MaxColors = GColorList.GetColorsNum();
73 for (int32 Idx = 0; Idx < MaxColors; Idx++)
74 {
75 if (Color == GColorList.GetFColorByIndex(Idx))
76 {
77 return GColorList.GetColorNameByIndex(Idx);
78 }
79 }
80
81 return FString(TEXT("color"));
82 }

◆ FindPlayInEditorAuthorityPlayerController()

APlayerController * UBaseHelpersBPLib::FindPlayInEditorAuthorityPlayerController ( const APlayerController * ClientController)
static
74{
75#if WITH_EDITOR
77 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
78 const UWorld* ServerWorld = FindPlayInEditorAuthorityWorld();
79 if (ServerWorld != nullptr)
80 {
81 for (FConstPlayerControllerIterator Iterator = ServerWorld->GetPlayerControllerIterator(); Iterator; ++Iterator)
82 {
83 APlayerController* ServerController = Iterator->Get();
84
85 const FUniqueNetIdRepl& ServerPlayerUniqueId = ServerController->PlayerState->GetUniqueId();
86 const FUniqueNetIdRepl& ClientPlayerUniqueId = ClientController->PlayerState->GetUniqueId();
87
88 if (ServerPlayerUniqueId == ClientPlayerUniqueId)
89 {
90 return ServerController;
91 }
92 }
93 }
94#endif
95 return nullptr;
96}
static UWorld * FindPlayInEditorAuthorityWorld()
Definition BaseHelpersBPLib.cpp:32
static APlayerController * FindPlayInEditorAuthorityPlayerController(const APlayerController *ClientController)
Definition BaseHelpersBPLib.cpp:72

◆ FindPlayInEditorAuthorityWorld()

UWorld * UBaseHelpersBPLib::FindPlayInEditorAuthorityWorld ( )
static

Used for Logging Server/Client

33{
34 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::FindPlayInEditorAuthorityWorld);
35 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
36
37 check(GEngine);
38 // Find the server world (any PIE world will do, in case they are running without a dedicated server, but the ded. server world is ideal)
39 UWorld* ServerWorld = nullptr;
40#if WITH_EDITOR
41 for (const FWorldContext& WorldContext : GEngine->GetWorldContexts())
42 {
43 if (WorldContext.WorldType == EWorldType::PIE)
44 {
45 if (UWorld* TestWorld = WorldContext.World())
46 {
47 if (WorldContext.RunAsDedicated)
48 {
49 // Ideal case
50 ServerWorld = TestWorld;
51 break;
52 }
53 else if (ServerWorld == nullptr)
54 {
55 ServerWorld = TestWorld;
56 }
57 else
58 {
59 // We already have a candidate, see if this one is 'better'
60 if (TestWorld->GetNetMode() < ServerWorld->GetNetMode())
61 {
62 return ServerWorld;
63 }
64 }
65 }
66 }
67 }
68#endif
69 return ServerWorld;
70}

◆ GetAllTagsOfCategory()

TArray< FGameplayTag > UBaseHelpersBPLib::GetAllTagsOfCategory ( const FName & Category)
static
501{
502 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetAllTagsOfCategory);
503 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
504 TArray<FGameplayTag> ModeTags;
505 const UGameplayTagsManager& TagManager = UGameplayTagsManager::Get();
506 const FGameplayTagContainer TagContainer = TagManager.RequestGameplayTagChildren(FGameplayTag::RequestGameplayTag(Category));
507 TagContainer.GetGameplayTagArray(ModeTags);
508 return ModeTags;
509}
static TArray< FGameplayTag > GetAllTagsOfCategory(const FName &Category)
Definition BaseHelpersBPLib.cpp:500

◆ GetDefaultActorBPClass()

TSubclassOf< AActor > UBaseHelpersBPLib::GetDefaultActorBPClass ( const FString & Location)
static
218{
219 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetDefaultActorBPClass);
220 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
221 const TCHAR* LocationText = *Location;
222 const ConstructorHelpers::FClassFinder<AActor> DefaultBPClass(LocationText);
223 if (!ensure(DefaultBPClass.Class != nullptr)) return nullptr;
224 return DefaultBPClass.Class;
225}
static TSubclassOf< AActor > GetDefaultActorBPClass(const FString &Location)
Definition BaseHelpersBPLib.cpp:217

◆ GetDefaultBPClass()

UClass * UBaseHelpersBPLib::GetDefaultBPClass ( const FString & Location)
static

Only use in contstructor

208{
209 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetDefaultBPClass);
210 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
211 const TCHAR* LocationText = *Location;
212 const ConstructorHelpers::FClassFinder<UObject> DefaultBPClass(LocationText);
213 if (!ensure(DefaultBPClass.Class != nullptr)) return nullptr;
214 return DefaultBPClass.Class;
215}
static UClass * GetDefaultBPClass(const FString &Location)
Definition BaseHelpersBPLib.cpp:207

◆ GetDefaultDataTable()

UDataTable * UBaseHelpersBPLib::GetDefaultDataTable ( const FString & Location)
static
238{
239 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetDefaultDataTable);
240 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
241 const TCHAR* LocationText = *Location;
242 const FSoftObjectPath UnitDataTablePath = FSoftObjectPath(LocationText);
243 UDataTable* DataTable = Cast<UDataTable>(UnitDataTablePath.ResolveObject());
244 if(DataTable != nullptr)
245 {
246 return DataTable;
247 }
248 DataTable = Cast<UDataTable>(UnitDataTablePath.TryLoad());
249 if(DataTable != nullptr)
250 {
251 return DataTable;
252 }
253 UE_LOG(LogBaseHelpers, Warning, TEXT("UBaseHelpersBPLib::GetDefaultDataTable Default DataTable Failed"));
254 return nullptr;
255}
static UDataTable * GetDefaultDataTable(const FString &Location)
Definition BaseHelpersBPLib.cpp:237

◆ GetDefaultWidgetBPClass()

TSubclassOf< UUserWidget > UBaseHelpersBPLib::GetDefaultWidgetBPClass ( const FString & Location)
static
228{
229 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetDefaultWidgetBPClass);
230 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
231 const TCHAR* LocationText = *Location;
232 const ConstructorHelpers::FClassFinder<UUserWidget> DefaultBPClass(LocationText);
233 if(DefaultBPClass.Class == nullptr){UE_LOG(LogBaseHelpers, Error, TEXT("Default Widget not found at: %s"), *Location);return nullptr;};
234 return DefaultBPClass.Class;
235}
static TSubclassOf< UUserWidget > GetDefaultWidgetBPClass(const FString &Location)
Definition BaseHelpersBPLib.cpp:227

◆ GetDrawDebugType()

EDrawDebugTrace::Type UBaseHelpersBPLib::GetDrawDebugType ( const bool bDebuggingMode)
static
911{
912 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetDrawDebugType);
913 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
914
915 if(bDebuggingMode)
916 {
917 return EDrawDebugTrace::ForDuration;
918 }
919 else
920 {
921 return EDrawDebugTrace::None;
922 }
923}
static EDrawDebugTrace::Type GetDrawDebugType(const bool bDebuggingMode)
Definition BaseHelpersBPLib.cpp:910

◆ GetEnumValue()

FString UBaseHelpersBPLib::GetEnumValue ( const FString & BaseString)
static
512{
513 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetEnumValue);
514 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
515
516 FString String;
517 FString LeftString;
518 BaseString.Split(TEXT("::"), &LeftString, &String);
519 return String;
520}
static FString GetEnumValue(const FString &BaseString)
Definition BaseHelpersBPLib.cpp:511

◆ GetGameplayTagName()

FString UBaseHelpersBPLib::GetGameplayTagName ( const FGameplayTag & GameplayTag)
static

Gets only the end of a Gameplay Tag

492{
493 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetGameplayTagName);
494 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
495 FString LastTagPart = "";
496 GameplayTag.GetTagName().ToString().Split(TEXT("."), nullptr, &LastTagPart, ESearchCase::IgnoreCase, ESearchDir::FromEnd);
497 return LastTagPart;
498}
static FString GetGameplayTagName(const FGameplayTag &GameplayTag)
Definition BaseHelpersBPLib.cpp:491

◆ GetInteraction()

bool UBaseHelpersBPLib::GetInteraction ( FInteractionType & InteractionType,
const FInteractionData & InteractionData,
const int32 Value )
static

This checks for interactions that are hidden or if the default is set

524{
525 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetInteraction);
526 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
527 if(InteractionData.bShowDefault && Value == 0)
528 {
529 return InteractionData.GetDefaultInteraction(InteractionType);
530 }
531 for(int32 i = 0; i < InteractionData.GetVisibleInteractions().Num(); i++)
532 {
533 if(InteractionData.GetVisibleInteractions().IsValidIndex(Value))
534 {
535 InteractionType = InteractionData.GetVisibleInteractions()[Value];
536 return true;
537 }
538 }
539 return false;
540}
static bool GetInteraction(FInteractionType &InteractionType, const FInteractionData &InteractionData, const int32 Value)
Definition BaseHelpersBPLib.cpp:522
bool bShowDefault
Definition BaseData.h:440
bool GetDefaultInteraction(FInteractionType &Default) const
Definition BaseData.h:473
TArray< FInteractionType > GetVisibleInteractions() const
Definition BaseData.h:556

◆ GetInteractionFromType()

bool UBaseHelpersBPLib::GetInteractionFromType ( FInteractionType & InteractionType,
const FInteractionData & InteractionData,
const EInteractionType Interaction )
static
544{
545 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetInteractionFromType);
546 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
547 for(const auto& SingleInteractionType : InteractionData.InteractionTypes)
548 {
549 if(Interaction == SingleInteractionType.InteractionType)
550 {
551 InteractionType = SingleInteractionType;
552 return true;
553 }
554 }
555 return false;
556}
Definition Interaction.Build.cs:6
static bool GetInteractionFromType(FInteractionType &InteractionType, const FInteractionData &InteractionData, const EInteractionType Interaction)
Definition BaseHelpersBPLib.cpp:542

◆ GetPlayerTeamID() [1/2]

int32 UBaseHelpersBPLib::GetPlayerTeamID ( AController * Controller)
static
176{
177 return GetPlayerTeamIDFromController(Controller);
178}
static int32 GetPlayerTeamIDFromController(AController *Controller)
Definition BaseHelpersBPLib.cpp:185

◆ GetPlayerTeamID() [2/2]

int32 UBaseHelpersBPLib::GetPlayerTeamID ( APlayerState * PlayerState)
static
181{
182 return GetPlayerTeamIDFromState(PlayerState);
183}
static int32 GetPlayerTeamIDFromState(APlayerState *PlayerState)
Definition BaseHelpersBPLib.cpp:196

◆ GetPlayerTeamIDFromController()

int32 UBaseHelpersBPLib::GetPlayerTeamIDFromController ( AController * Controller)
static
186{
187 int32 TeamID = 0;
188 const IGenericTeamAgentInterface* TeamAgentInterface = Cast<IGenericTeamAgentInterface>(Controller->PlayerState);
189 if(TeamAgentInterface != nullptr)
190 {
191 TeamID = TeamAgentInterface->GetGenericTeamId().GetId();
192 }
193 return TeamID;
194}

◆ GetPlayerTeamIDFromState()

int32 UBaseHelpersBPLib::GetPlayerTeamIDFromState ( APlayerState * PlayerState)
static
197{
198 int32 TeamID = 0;
199 const IGenericTeamAgentInterface* TeamAgentInterface = Cast<IGenericTeamAgentInterface>(PlayerState);
200 if(TeamAgentInterface != nullptr)
201 {
202 TeamID = TeamAgentInterface->GetGenericTeamId().GetId();
203 }
204 return TeamID;
205}

◆ GetTraceEndLocation()

FVector UBaseHelpersBPLib::GetTraceEndLocation ( const APlayerController * InController,
const float InLength )
static
693{
694 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetTraceEndLocation);
695 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
696 return (GetTraceStartRotation(InController).Vector() * InLength) + GetTraceStartLocation(InController);
697}
static FRotator GetTraceStartRotation(const APlayerController *InController)
Definition BaseHelpersBPLib.cpp:651
static FVector GetTraceEndLocation(const APlayerController *InController, const float InLength)
Definition BaseHelpersBPLib.cpp:692
static FVector GetTraceStartLocation(const APlayerController *InController)
Definition BaseHelpersBPLib.cpp:643

◆ GetTraceStartEyeLocation()

FVector UBaseHelpersBPLib::GetTraceStartEyeLocation ( const APawn * Pawn)
static
660{
661 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetTraceStartEyeLocation);
662 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
663 if(Pawn == nullptr){return FVector::ZeroVector;}
664 FVector Location;
665 FRotator Rotation;
666 Pawn->GetActorEyesViewPoint(Location, Rotation);
667 return Location;
668}
static FVector GetTraceStartEyeLocation(const APawn *Pawn)
Definition BaseHelpersBPLib.cpp:659

◆ GetTraceStartEyeRotation()

FRotator UBaseHelpersBPLib::GetTraceStartEyeRotation ( const APawn * Pawn)
static
671{
672 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetTraceStartEyeRotation);
673 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
674 if(Pawn == nullptr){return FRotator::ZeroRotator;}
675 FVector Location;
676 FRotator Rotation;
677 Pawn->GetActorEyesViewPoint(Location, Rotation);
678 return Rotation;
679}
static FRotator GetTraceStartEyeRotation(const APawn *Pawn)
Definition BaseHelpersBPLib.cpp:670

◆ GetTraceStartLocation()

FVector UBaseHelpersBPLib::GetTraceStartLocation ( const APlayerController * InController)
static
644{
645 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetTraceStartLocation);
646 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
647 if(InController == nullptr || InController->PlayerCameraManager == nullptr){return FVector::ZeroVector;}
648 return InController->PlayerCameraManager->GetCameraLocation();
649}

◆ GetTraceStartRotation()

FRotator UBaseHelpersBPLib::GetTraceStartRotation ( const APlayerController * InController)
static
652{
653 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::GetTraceStartRotation);
654 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
655 if(InController == nullptr || InController->PlayerCameraManager == nullptr){return FRotator::ZeroRotator;}
656 return InController->PlayerCameraManager->GetCameraRotation();
657}

◆ IsDamageTypeNonLethal()

bool UBaseHelpersBPLib::IsDamageTypeNonLethal ( const UDamageType * DamageType)
static
851{
852 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::IsDamageTypeNonLethal);
853 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
854 if(DamageType->GetClass() == UBaseDamage::StaticClass())
855 {
856 return false;
857 }
858 if(DamageType->GetClass() == UBulletDamage::StaticClass())
859 {
860 return false;
861 }
862 if(DamageType->GetClass() == ULaserDamage::StaticClass())
863 {
864 return false;
865 }
866 if(DamageType->GetClass() == UPlasmaDamage::StaticClass())
867 {
868 return false;
869 }
870 if(DamageType->GetClass() == UElectricalDamage::StaticClass())
871 {
872 return false;
873 }
874 if(DamageType->GetClass() == UExplosionDamage::StaticClass())
875 {
876 return false;
877 }
878 if(DamageType->GetClass() == UFallDamage::StaticClass())
879 {
880 return false;
881 }
882 if(DamageType->GetClass() == UFireDamage::StaticClass())
883 {
884 return false;
885 }
886 if(DamageType->GetClass() == UMeleeDamage::StaticClass())
887 {
888 return false;
889 }
890 if(DamageType->GetClass() == UNonLethalMeleeDamage::StaticClass())
891 {
892 return true;
893 }
894 if(DamageType->GetClass() == UNonLethalBulletDamage::StaticClass())
895 {
896 return true;
897 }
898 if(DamageType->GetClass() == UPoisionDamage::StaticClass())
899 {
900 return false;
901 }
902 if(DamageType->GetClass() == UWaterDamage::StaticClass())
903 {
904 return false;
905 }
906 return false;
907
908}
static bool IsDamageTypeNonLethal(const UDamageType *DamageType)
Definition BaseHelpersBPLib.cpp:850

◆ LineTraceByChannel()

bool UBaseHelpersBPLib::LineTraceByChannel ( const UObject * WorldContextObject,
FHitResult & Hit,
const FVector & Start,
const FVector & End,
const ETraceTypeQuery TraceChannel,
const TArray< AActor * > & ActorsToIgnore,
const bool bIgnoreSelf,
const bool bReturnPhysicalMaterial = false,
const bool bTraceComplex = false,
const bool bDebug = false,
const FLinearColor TraceColor = FLinearColor::Red,
const float DrawTime = 2.0f )
static
562{
563 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::LineTraceByChannel);
564 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
565 const ECollisionChannel CollisionChannel = UEngineTypes::ConvertToCollisionChannel(TraceChannel);
566 const float DrawDebugColorDarkMultiplier = 0.1f;
567 const float DrawDebugColorLightMultiplier = 2.0f;
568 FCollisionQueryParams Params;
569 Params.bDebugQuery = bDebug;
570 Params.bTraceComplex = bTraceComplex;
571 Params.bReturnPhysicalMaterial = bReturnPhysicalMaterial;
572 if (bIgnoreSelf)
573 {
574 const AActor* IgnoreActor = Cast<AActor>(WorldContextObject);
575 if (IgnoreActor)
576 {
577 Params.AddIgnoredActor(IgnoreActor);
578 }
579 else
580 {
581 // find owner
582 const UObject* CurrentObject = WorldContextObject;
583 while (CurrentObject)
584 {
585 CurrentObject = CurrentObject->GetOuter();
586 IgnoreActor = Cast<AActor>(CurrentObject);
587 if (IgnoreActor)
588 {
589 Params.AddIgnoredActor(IgnoreActor);
590 break;
591 }
592 }
593 }
594 }
595 Params.AddIgnoredActors(ActorsToIgnore);
596
597 UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
598 bool const bHit = World ? World->LineTraceSingleByChannel(Hit, Start, End, CollisionChannel, Params) : false;
599
600 if(GetDrawDebugType(bDebug) != EDrawDebugTrace::None)
601 {
602 const bool bPersistent = GetDrawDebugType(bDebug) == EDrawDebugTrace::Persistent;
603 const float LifeTime = (GetDrawDebugType(bDebug) == EDrawDebugTrace::ForDuration) ? DrawTime : 0.f;
604
605 if (bHit && Hit.bBlockingHit)
606 {
607 const FLinearColor DarkerColor = FLinearColor(TraceColor.R * DrawDebugColorDarkMultiplier, TraceColor.G * DrawDebugColorDarkMultiplier, TraceColor.B * DrawDebugColorDarkMultiplier, TraceColor.A);
608 const FLinearColor LighterColor = FLinearColor((TraceColor.R + 0.1f) * DrawDebugColorLightMultiplier, (TraceColor.G + 0.1f) * DrawDebugColorLightMultiplier, (TraceColor.B + 0.1f) * DrawDebugColorLightMultiplier, TraceColor.A);
609 // Red up to the blocking hit, green thereafter
610 DrawDebugLine(World, Start, Hit.ImpactPoint, TraceColor.ToFColor(true), bPersistent, LifeTime);
611 DrawDebugLine(World, Hit.ImpactPoint, End, LighterColor.ToFColor(true), bPersistent, LifeTime);
612 DrawDebugPoint(World, Hit.ImpactPoint, 16.0f, DarkerColor.ToFColor(true), bPersistent, LifeTime);
613 }
614 else
615 {
616 // no hit means all red
617 DrawDebugLine(World, Start, End, TraceColor.ToFColor(true), bPersistent, LifeTime);
618 }
619 }
620 // DrawDebugLineTraceSingle(World, Start, End, DrawDebugType, bHit, OutHit, TraceColor, TraceHitColor, DrawTime);
621 return bHit;
622}
static bool LineTraceByChannel(const UObject *WorldContextObject, FHitResult &Hit, const FVector &Start, const FVector &End, const ETraceTypeQuery TraceChannel, const TArray< AActor * > &ActorsToIgnore, const bool bIgnoreSelf, const bool bReturnPhysicalMaterial=false, const bool bTraceComplex=false, const bool bDebug=false, const FLinearColor TraceColor=FLinearColor::Red, const float DrawTime=2.0f)
Definition BaseHelpersBPLib.cpp:558

◆ PrintToLog()

void UBaseHelpersBPLib::PrintToLog ( const UObject * WorldContextObject,
const FString & Message,
const bool bWarning = false,
const bool bError = false )
static
99{
100 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::PrintToLog);
101 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
102 PrintToLogWithCategory(WorldContextObject, LogBaseHelpers, Message, bWarning, bError);
103}
static void PrintToLog(const UObject *WorldContextObject, const FString &Message, const bool bWarning=false, const bool bError=false)
Definition BaseHelpersBPLib.cpp:98
static void PrintToLogWithCategory(const UObject *WorldContextObject, const FLogCategoryBase &Category, const FString &Message, const bool bWarning=false, const bool bError=false)
Definition BaseHelpersBPLib.cpp:105

◆ PrintToLogWithCategory()

void UBaseHelpersBPLib::PrintToLogWithCategory ( const UObject * WorldContextObject,
const FLogCategoryBase & Category,
const FString & Message,
const bool bWarning = false,
const bool bError = false )
static
106{
107 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::PrintToLogWithCategory);
108 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
109 FOutputDevice* OutputDevice = GWarn;
110 if(OutputDevice == nullptr){return;}
111 FString NetModeString;
112 switch(WorldContextObject->GetWorld()->GetNetMode())
113 {
114 case NM_Standalone:
115 NetModeString = FString("SDL");
116 break;
117 case NM_DedicatedServer:
118 NetModeString = FString("DServer");
119 break;
120 case NM_ListenServer:
121 NetModeString = FString("LServer");
122 break;
123 case NM_Client:
124 NetModeString = FString("Client");
125 break;
126 default:
127 NetModeString = FString("Unknown");
128 break;
129 }
130 const FString FullMessage = FString::Printf(TEXT("%s: %s"), *NetModeString, *Message);
131 if(bError)
132 {
133 OutputDevice->Log(Category.GetCategoryName(), ELogVerbosity::Error, FullMessage);
134 }
135 else if(bWarning)
136 {
137 OutputDevice->Log(Category.GetCategoryName(), ELogVerbosity::Warning, FullMessage);
138 }
139 else
140 {
141 OutputDevice->Log(Category.GetCategoryName(), ELogVerbosity::Log, FullMessage);
142 }
143}

◆ PrintVirtualBoneInfo()

void UBaseHelpersBPLib::PrintVirtualBoneInfo ( USkeletalMeshComponent * SkeletalMeshComponent)
static
258{
259 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::PrintVirtualBoneInfo);
260 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
261 if(SkeletalMeshComponent == nullptr){return;}
262
263 const USkeleton* Skeleton = SkeletalMeshComponent->GetSkeletalMeshAsset()->GetSkeleton();
264 if(Skeleton == nullptr){return;}
265
266 const FReferenceSkeleton& RefSkeleton = Skeleton->GetReferenceSkeleton();
267 const TArray<FVirtualBone>& VirtualBones = Skeleton->GetVirtualBones();
268
269 for (const FVirtualBone& VirtualBone : VirtualBones)
270 {
271 const int32 SourceBoneIndex = RefSkeleton.FindBoneIndex(VirtualBone.SourceBoneName);
272 const int32 TargetBoneIndex = RefSkeleton.FindBoneIndex(VirtualBone.TargetBoneName);
273
274 if (SourceBoneIndex != INDEX_NONE && TargetBoneIndex != INDEX_NONE)
275 {
276 UE_LOG(LogTemp, Log, TEXT("Virtual Bone: %s"), *VirtualBone.VirtualBoneName.ToString());
277 UE_LOG(LogTemp, Log, TEXT(" Source Bone: %s"), *VirtualBone.SourceBoneName.ToString());
278 UE_LOG(LogTemp, Log, TEXT(" Target Bone: %s"), *VirtualBone.TargetBoneName.ToString());
279 }
280 }
281}
static void PrintVirtualBoneInfo(USkeletalMeshComponent *SkeletalMeshComponent)
Definition BaseHelpersBPLib.cpp:257

◆ RandomCharacterSkills()

FCharacterBaseSkills UBaseHelpersBPLib::RandomCharacterSkills ( const int32 Min,
const int32 Max )
static
148{
149 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::RandomCharacterSkills);
150 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
151 FCharacterBaseSkills CharacterTraits;
152 const float MinFloat = Min * 1000.0f;
153 const float MaxFloat = Max * 1000.0f;
154 const float Agility = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
155 CharacterTraits.AddAgilityXP(Agility);
156 const float Charisma = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
157 CharacterTraits.AddCharismaXP(Charisma);
158 const float Endurance = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
159 CharacterTraits.AddEnduranceXP(Endurance);
160 const float Intelligence = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
161 CharacterTraits.AddIntelligenceXP(Intelligence);
162 const float Luck = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
163 CharacterTraits.AddLuckXP(Luck);
164 const float Perception = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
165 CharacterTraits.AddPerceptionXP(Perception);
166 const float Stealth = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
167 CharacterTraits.AddStealthXP(Stealth);
168 const float Strength = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
169 CharacterTraits.AddStrengthXP(Strength);
170 const float Weapon = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);
171 CharacterTraits.AddWeaponSkillXP(Weapon);
172 return CharacterTraits;
173}
static FCharacterBaseSkills RandomCharacterSkills(const int32 Min, const int32 Max)
Definition BaseHelpersBPLib.cpp:147
Definition BaseData.h:815
bool AddAgilityXP(const float Value)
Definition BaseData.h:851
bool AddLuckXP(const float Value)
Definition BaseData.h:867
bool AddCharismaXP(const float Value)
Definition BaseData.h:840
bool AddWeaponSkillXP(const float Value)
Definition BaseData.h:857
bool AddPerceptionXP(const float Value)
Definition BaseData.h:828
bool AddStealthXP(const float Value)
Definition BaseData.h:862
bool AddIntelligenceXP(const float Value)
Definition BaseData.h:845
bool AddStrengthXP(const float Value)
Definition BaseData.h:822
bool AddEnduranceXP(const float Value)
Definition BaseData.h:834

◆ SimpleLineTrace()

FHitResult UBaseHelpersBPLib::SimpleLineTrace ( const APlayerController * InController,
const float InLength,
const bool bDebug )
static
700{
701 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::SimpleLineTrace);
702 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
703 FHitResult Hit;
704 TArray<AActor*> ActorsToIgnore;
705 if(InController->GetPawn() != nullptr){ActorsToIgnore.Add(InController->GetPawn());}
706 UKismetSystemLibrary::LineTraceSingle(InController, GetTraceStartLocation(InController), GetTraceEndLocation(InController, InLength),
707 UEngineTypes::ConvertToTraceType(ECC_EngineTraceChannel1), false, ActorsToIgnore, GetDrawDebugType(bDebug), Hit,
708 true, FLinearColor::Blue, FLinearColor::Black, 2.0f);
709 return Hit;
710
711}
static FHitResult SimpleLineTrace(const APlayerController *InController, const float InLength, const bool bDebug)
Definition BaseHelpersBPLib.cpp:699

◆ SoundNameFromSource()

FName UBaseHelpersBPLib::SoundNameFromSource ( const ESoundSource SoundSource)
static
444{
445 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::SoundNameFromSource);
446 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
447 switch (SoundSource)
448 {
450 return FName("Alarms");
452 return FName("Climbing");
454 return FName("Distractions");
456 return FName("Door");
458 return FName("Footstep");
460 return FName("Gadget");
462 return FName("Interaction");
464 return FName("Jump");
466 return FName("Melee");
468 return FName("MeleeWeapon");
470 return FName("Reload");
472 return FName("Voice");
474 return FName("BulletFire");
476 return FName("BulletImpact");
478 return FName("DryFire");
480 return FName("EnvironmentalHazards");
482 return FName("Explosion");
484 return FName("SilencedBulletFire");
485 default:
486 UE_LOG(LogBaseHelpers, Error, TEXT("SoundName from Source Failed"));
487 return FName("default");
488 }
489}
static FName SoundNameFromSource(const ESoundSource SoundSource)
Definition BaseHelpersBPLib.cpp:443

◆ SoundSourceFromName()

ESoundSource UBaseHelpersBPLib::SoundSourceFromName ( const FName & SoundName)
static
362{
363 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::SoundSourceFromName);
364 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
365 if (SoundName == FName("Alarms"))
366 {
368 }
369 if (SoundName == FName("Climbing"))
370 {
372 }
373 if (SoundName == FName("Distractions"))
374 {
376 }
377 if (SoundName == FName("Door"))
378 {
379 return ESoundSource::Door;
380 }
381 if (SoundName == FName("Footstep"))
382 {
384 }
385 if (SoundName == FName("Gadget"))
386 {
388 }
389 if (SoundName == FName("Interaction"))
390 {
392 }
393 if (SoundName == FName("Jump"))
394 {
395 return ESoundSource::Jump;
396 }
397 if (SoundName == FName("Melee"))
398 {
399 return ESoundSource::Melee;
400 }
401 if (SoundName == FName("MeleeWeapon"))
402 {
404 }
405 if (SoundName == FName("Reload"))
406 {
408 }
409 if (SoundName == FName("Voice"))
410 {
411 return ESoundSource::Voice;
412 }
413 if (SoundName == FName("BulletFire"))
414 {
416 }
417 if (SoundName == FName("BulletImpact"))
418 {
420 }
421
422 if (SoundName == FName("DryFire"))
423 {
425 }
426 if (SoundName == FName("EnvironmentalHazards"))
427 {
429 }
430 if (SoundName == FName("Explosion"))
431 {
433 }
434 if (SoundName == FName("SilencedBulletFire"))
435 {
437 }
438 UE_LOG(LogBaseHelpers, Error, TEXT("SoundName from Source Failed"));
439 return ESoundSource::Interaction; // default case
440}
static ESoundSource SoundSourceFromName(const FName &SoundName)
Definition BaseHelpersBPLib.cpp:361

◆ TextureFromWidget()

UTexture2D * UBaseHelpersBPLib::TextureFromWidget ( UUserWidget *const Widget,
const FVector2D & DrawSize )
static

Renders a UMG Widget to a texture with the specified size.

Parameters
WidgetThe widget to be rendered.
DrawSizeThe size to render the Widget to. Also will be the texture size.
Returns
The texture containing the rendered widget.
750{
751 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::TextureFromWidget);
752 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
753 if (FSlateApplication::IsInitialized()
754 && Widget != NULL && Widget->IsValidLowLevel()
755 && DrawSize.X >= 1 && DrawSize.Y >= 1)
756 {
757 TSharedPtr<SWidget> SlateWidget(Widget->TakeWidget());
758 if (!SlateWidget.IsValid()) return NULL;
759 TSharedPtr<FWidgetRenderer> WidgetRenderer = MakeShareable(new FWidgetRenderer(true));
760 if (!WidgetRenderer.IsValid()) return NULL;
761
762 UTextureRenderTarget2D *TextureRenderTarget = WidgetRenderer->DrawWidget(SlateWidget.ToSharedRef(), DrawSize);
763 // Creates Texture2D to store RenderTexture content
764 UTexture2D *Texture = UTexture2D::CreateTransient(DrawSize.X, DrawSize.Y, PF_B8G8R8A8);
765#if WITH_EDITORONLY_DATA
766 Texture->MipGenSettings = TMGS_NoMipmaps;
767#endif
768
769 // Lock and copies the data between the textures
770 TArray<FColor> SurfData;
771 FRenderTarget *RenderTarget = TextureRenderTarget->GameThread_GetRenderTargetResource();
772 RenderTarget->ReadPixels(SurfData);
773
774 void* TextureData = Texture->GetPlatformData()->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
775 const int32 TextureDataSize = SurfData.Num() * 4;
776 FMemory::Memcpy(TextureData, SurfData.GetData(), TextureDataSize);
777 Texture->GetPlatformData()->Mips[0].BulkData.Unlock();
778 Texture->UpdateResource();
779
780 // Free resources
781 SurfData.Empty();
782 TextureRenderTarget->ConditionalBeginDestroy();
783 SlateWidget.Reset();
784 WidgetRenderer.Reset();
785
786 return Texture;
787 }
788 return NULL;
789}
static UTexture2D * TextureFromWidget(UUserWidget *const Widget, const FVector2D &DrawSize)
Definition BaseHelpersBPLib.cpp:749

◆ ToggleInputMode()

void UBaseHelpersBPLib::ToggleInputMode ( APlayerController * InController,
const bool bForceGameOnly = false,
const bool bForceUI = false,
class UUserWidget * WidgetToFocus = nullptr )
static
330{
331 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::ToggleInputMode);
332 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
333 const FInputModeGameOnly InputModeGameOnly;
334 const FInputModeGameAndUI InputModeUIOnly;
335 if(WidgetToFocus != nullptr)
336 {
337 // TSharedPtr<SWidget> SlateWidget = WidgetToFocus->GetSlateWidgetFromName();
338 // InputModeUIOnly.SetWidgetToFocus(SlateWidget);
339 }
340 if(InController->bShowMouseCursor)
341 {
342 InController->SetInputMode(InputModeGameOnly);
343 }
344 else
345 {
346 InController->SetInputMode(InputModeUIOnly);
347 }
348 InController->bShowMouseCursor = !InController->bShowMouseCursor;
349 if(bForceGameOnly)
350 {
351 InController->SetInputMode(InputModeGameOnly);
352 InController->bShowMouseCursor = false;
353 }
354 if(bForceUI)
355 {
356 InController->SetInputMode(InputModeGameOnly);
357 InController->bShowMouseCursor = true;
358 }
359}
static void ToggleInputMode(APlayerController *InController, const bool bForceGameOnly=false, const bool bForceUI=false, class UUserWidget *WidgetToFocus=nullptr)
Definition BaseHelpersBPLib.cpp:328

◆ ToggleWidgetVisibility()

void UBaseHelpersBPLib::ToggleWidgetVisibility ( UUserWidget * Widget,
const bool bForceSetVisible = false,
const bool bForceSetCollapsed = false )
static
303{
304 TRACE_CPUPROFILER_EVENT_SCOPE(UBaseHelpersBPLib::ToggleWidgetVisibility);
305 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_BPLib);
306
307 const ESlateVisibility CurrentVisibility = Widget->GetVisibility();
308 ESlateVisibility TargetVisibility;
309 if(CurrentVisibility == ESlateVisibility::Visible || CurrentVisibility == ESlateVisibility::HitTestInvisible || CurrentVisibility == ESlateVisibility::SelfHitTestInvisible)
310 {
311 TargetVisibility = ESlateVisibility::Collapsed;
312 }
313 else
314 {
315 TargetVisibility = ESlateVisibility::Visible;
316 }
317 if(bForceSetVisible)
318 {
319 TargetVisibility = ESlateVisibility::Visible;
320 }
321 if(bForceSetCollapsed)
322 {
323 TargetVisibility = ESlateVisibility::Collapsed;
324 }
325 Widget->SetVisibility(TargetVisibility);
326}
static void ToggleWidgetVisibility(UUserWidget *Widget, const bool bForceSetVisible=false, const bool bForceSetCollapsed=false)
Definition BaseHelpersBPLib.cpp:302

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