9#include "Kismet/GameplayStatics.h"
10#include "Kismet/KismetMathLibrary.h"
11#include "Misc/DateTime.h"
58 FTCHARToUTF8 UTF8Text(*InText);
62 Md5.Update((uint8*)UTF8Text.Get(), UTF8Text.Length());
66 for (uint8 B : Digest)
67 HashString += FString::Printf(TEXT(
"%02x"), B);
73 return (Index >= 0) && (Index < Count);
78 if (TargetArray.Num() == 0)
84 return TargetArray[FMath::RandRange(0, TargetArray.Num() - 1)];
89 const int32 Num = Montages.Num();
93 const int32 Idx = FMath::RandRange(0, Num - 1);
99 const auto DataTime = FDateTime::UtcNow();
100 return DataTime.ToUnixTimestamp();
104 UPrimitiveComponent* Target, int32 ElementIndex, FName OptionalName)
109 const int32 Num = Target->GetNumMaterials();
110 if (ElementIndex < 0 || ElementIndex >= Num)
113 UMaterialInterface* CurMat = Target->GetMaterial(ElementIndex);
117 if (UMaterialInstanceDynamic* AsMID = Cast<UMaterialInstanceDynamic>(CurMat))
120 UMaterialInstanceDynamic* NewMID = UMaterialInstanceDynamic::Create(CurMat, Target, OptionalName);
122 Target->SetMaterial(ElementIndex, NewMID);
129 if (!IsValid(Actor) || !Sound)
132 if (
auto World = Actor->GetWorld())
134 if ( RetriggerDelay > 0.0f)
136 TWeakObjectPtr<const AActor> WeakActor = Actor;
137 FTimerHandle TimerHandle;
138 World->GetTimerManager().SetTimer(TimerHandle, [WeakActor, Sound]()
140 if (WeakActor.IsValid())
142 UGameplayStatics::PlaySoundAtLocation(WeakActor.Get(), Sound, WeakActor->GetActorLocation());
144 }, RetriggerDelay,
false);
148 UGameplayStatics::PlaySoundAtLocation(Actor, Sound, Actor->GetActorLocation());
155 if ( !IsValid(A) || !IsValid(B) )
158 return UKismetMathLibrary::Vector_Distance( A->GetActorLocation(), B->GetActorLocation() );
163 FString CleanedText = InText;
164 CleanedText.ReplaceInline(TEXT(
"\r\n"), TEXT(
""));
165 CleanedText.ReplaceInline(TEXT(
"\r"), TEXT(
""));
166 CleanedText.ReplaceInline(TEXT(
"\n"), TEXT(
""));
175 Target->SetHiddenInGame(!bVisible);
176 Target->SetVisibility(bVisible);
187 for (
const TCHAR& Char : Word)
190 if (Char >= 0xAC00 && Char <= 0xD7A3)
194 if ((Char >= 0x1100 && Char <= 0x11FF) || (Char >= 0x3130 && Char <= 0x318F))
198 if (Char == TEXT(
' '))
UCommonFunctionLibrary 클래스를 선언합니다.
static void PlayLocationSound(const AActor *Actor, USoundBase *Sound, const float RetriggerDelay)
지정된 위치에서 사운드를 재생한다.
static bool InBounds(const int32 Index, const int32 Count)
주어진 인덱스가 배열 범위 안에 있는지 확인한다.
static void SetCollisionDebugVisible(UPrimitiveComponent *Target, bool bVisible)
static int32 GetRandomIndex(const TArray< int32 > &TargetArray, bool &bIsValid)
정수 배열에서 랜덤 인덱스를 선택한다.
static int64 GetNowTimestamp()
현재 시간을 Unix Timestamp(초)로 반환한다.
static FString GererateMD5(const FString &InText)
static UAnimMontage * GetRandomMontage(const TArray< UAnimMontage * > &Montages)
몽타주 배열에서 랜덤 항목을 반환한다.
static FString RemoveLineBreaks(const FString &InText)
줄바꿈 문자들을 모두 공백으로 치환한 문자열을 반환
static class UMaterialInstanceDynamic * GetOrCreateMID(class UPrimitiveComponent *Target, int32 ElementIndex, FName OptionalName=NAME_None)
머티리얼 인스턴스 다이내믹을 얻거나 새로 생성한다.
static float GetDistance(AActor *A, AActor *B)
두 액터 사이의 거리를 계산한다.
static bool IsValidKoreanWord(const FString &Word)
한국어 단어 검증 (한글만 포함되어 있는지 확인)