KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
UCircularProgressBar 클래스 참조

#include <UCircularProgressBar.h>

+ UCircularProgressBar에 대한 상속 다이어그램 :
+ UCircularProgressBar에 대한 협력 다이어그램:

Public 멤버 함수

void SetPercent (const float InPercent)
 
void StartProgress (const float Start, const float End, const float Duration=1.0f)
 Start에서 End까지 부드럽게 애니메이션
 
void StopProgress ()
 애니메이션 중단
 

Public 속성

FLinearColor HighColor = FLinearColor(0.2f, 0.9f, 0.3f)
 높은 진행률 색상 (50% ~ 100%)
 
class UImage * Img_CircularBar
 
FLinearColor LowColor = FLinearColor(0.9f, 0.2f, 0.2f)
 낮은 진행률 색상 (0% ~ 50%)
 
FLinearColor MidColor = FLinearColor(1.0f, 0.8f, 0.2f)
 중간 진행률 색상 (50%)
 
float Percent = 0.0f
 진행률 (0.0 ~ 1.0)
 

Protected 멤버 함수

virtual void NativePreConstruct () override
 
virtual void NativeTick (const FGeometry &MyGeometry, float InDeltaTime) override
 

Private 멤버 함수

void ApplyStyle ()
 
FORCEINLINE double easeOutSine (const double Value)
 

Private 속성

float AnimDuration = 1.0f
 
float AnimElapsedTime = 0.0f
 
float AnimStartPercent = 0.0f
 
float AnimTargetPercent = 0.0f
 
bool bIsAnimating = false
 

상세한 설명

UCircularProgressBar.h 파일의 13 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ ApplyStyle()

void UCircularProgressBar::ApplyStyle ( )
private

UCircularProgressBar.cpp 파일의 75 번째 라인에서 정의되었습니다.

76{
77 if (!Img_CircularBar)
78 return;
79
80 auto DynamicMaterial = Img_CircularBar->GetDynamicMaterial();
81 if (DynamicMaterial)
82 {
83 // Percent 값 설정
84 DynamicMaterial->SetScalarParameterValue(TEXT("Percent"), Percent);
85
86 // Percent에 따라 색상 Lerp
87 FLinearColor FilledColor;
88 if (Percent <= 0.5f)
89 {
90 // 0% ~ 50%: LowColor → MidColor
91 float Alpha = Percent * 2.0f; // 0.0 ~ 1.0으로 정규화
92 FilledColor = FLinearColor::LerpUsingHSV(LowColor, MidColor, Alpha);
93 }
94 else
95 {
96 // 50% ~ 100%: MidColor → HighColor
97 float Alpha = (Percent - 0.5f) * 2.0f; // 0.0 ~ 1.0으로 정규화
98 FilledColor = FLinearColor::LerpUsingHSV(MidColor, HighColor, Alpha);
99 }
100
101 // FilledColor 파라미터 설정
102 DynamicMaterial->SetVectorParameterValue(TEXT("FilledColor"), FilledColor);
103 }
104}
float Percent
진행률 (0.0 ~ 1.0)
FLinearColor MidColor
중간 진행률 색상 (50%)
FLinearColor HighColor
높은 진행률 색상 (50% ~ 100%)
FLinearColor LowColor
낮은 진행률 색상 (0% ~ 50%)

다음을 참조함 : HighColor, Img_CircularBar, LowColor, MidColor, Percent.

다음에 의해서 참조됨 : NativePreConstruct(), NativeTick(), SetPercent(), StartProgress().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ easeOutSine()

FORCEINLINE double UCircularProgressBar::easeOutSine ( const double  Value)
inlineprivate

UCircularProgressBar.h 파일의 37 번째 라인에서 정의되었습니다.

38 {
39 return FMath::Sin((Value * PI) / 2.0);
40 }

다음에 의해서 참조됨 : NativeTick().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NativePreConstruct()

void UCircularProgressBar::NativePreConstruct ( )
overrideprotectedvirtual

UCircularProgressBar.cpp 파일의 8 번째 라인에서 정의되었습니다.

9{
10 Super::NativePreConstruct();
11 ApplyStyle();
12}

다음을 참조함 : ApplyStyle().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ NativeTick()

void UCircularProgressBar::NativeTick ( const FGeometry &  MyGeometry,
float  InDeltaTime 
)
overrideprotectedvirtual

UCircularProgressBar.cpp 파일의 14 번째 라인에서 정의되었습니다.

15{
16 Super::NativeTick(MyGeometry, InDeltaTime);
17
18 // 애니메이션 업데이트
19 if (bIsAnimating)
20 {
21 AnimElapsedTime += InDeltaTime;
22
23 // 진행률 계산 (0.0 ~ 1.0)
24 float Progress = FMath::Clamp(AnimElapsedTime / AnimDuration, 0.0f, 1.0f);
25
26 // EaseOutSine 적용
27 float EasedProgress = easeOutSine(Progress);
28
29 // Start에서 Target으로 Lerp
30 Percent = FMath::Lerp(AnimStartPercent, AnimTargetPercent, EasedProgress);
31
32 // 스타일 적용
33 ApplyStyle();
34
35 // 애니메이션 완료
36 if (Progress >= 1.0f)
37 {
38 bIsAnimating = false;
39 Percent = AnimTargetPercent; // 정확한 값으로 설정
40 ApplyStyle();
41 }
42 }
43}
FORCEINLINE double easeOutSine(const double Value)

다음을 참조함 : AnimDuration, AnimElapsedTime, AnimStartPercent, AnimTargetPercent, ApplyStyle(), bIsAnimating, easeOutSine(), Percent.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetPercent()

void UCircularProgressBar::SetPercent ( const float  InPercent)

UCircularProgressBar.cpp 파일의 45 번째 라인에서 정의되었습니다.

46{
47 // 애니메이션 중단
48 bIsAnimating = false;
49
50 Percent = FMath::Clamp(InPercent, 0.0f, 1.0f);
51 ApplyStyle();
52}

다음을 참조함 : ApplyStyle(), bIsAnimating, Percent.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ StartProgress()

void UCircularProgressBar::StartProgress ( const float  Start,
const float  End,
const float  Duration = 1.0f 
)

Start에서 End까지 부드럽게 애니메이션

UCircularProgressBar.cpp 파일의 54 번째 라인에서 정의되었습니다.

55{
56 // 애니메이션 설정
57 AnimStartPercent = FMath::Clamp(Start, 0.0f, 1.0f);
58 AnimTargetPercent = FMath::Clamp(End, 0.0f, 1.0f);
59 AnimDuration = FMath::Max(Duration, 0.01f); // 최소 0.01초
60 AnimElapsedTime = 0.0f;
61
62 // 시작 값으로 설정
64 ApplyStyle();
65
66 // 애니메이션 시작
67 bIsAnimating = true;
68}

다음을 참조함 : AnimDuration, AnimElapsedTime, AnimStartPercent, AnimTargetPercent, ApplyStyle(), bIsAnimating, Percent.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ StopProgress()

void UCircularProgressBar::StopProgress ( )

애니메이션 중단

UCircularProgressBar.cpp 파일의 70 번째 라인에서 정의되었습니다.

71{
72 bIsAnimating = false;
73}

다음을 참조함 : bIsAnimating.

멤버 데이터 문서화

◆ AnimDuration

float UCircularProgressBar::AnimDuration = 1.0f
private

UCircularProgressBar.h 파일의 69 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : NativeTick(), StartProgress().

◆ AnimElapsedTime

float UCircularProgressBar::AnimElapsedTime = 0.0f
private

UCircularProgressBar.h 파일의 68 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : NativeTick(), StartProgress().

◆ AnimStartPercent

float UCircularProgressBar::AnimStartPercent = 0.0f
private

UCircularProgressBar.h 파일의 66 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : NativeTick(), StartProgress().

◆ AnimTargetPercent

float UCircularProgressBar::AnimTargetPercent = 0.0f
private

UCircularProgressBar.h 파일의 67 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : NativeTick(), StartProgress().

◆ bIsAnimating

bool UCircularProgressBar::bIsAnimating = false
private

UCircularProgressBar.h 파일의 64 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : NativeTick(), SetPercent(), StartProgress(), StopProgress().

◆ HighColor

FLinearColor UCircularProgressBar::HighColor = FLinearColor(0.2f, 0.9f, 0.3f)

높은 진행률 색상 (50% ~ 100%)

UCircularProgressBar.h 파일의 60 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : ApplyStyle().

◆ Img_CircularBar

class UImage* UCircularProgressBar::Img_CircularBar

UCircularProgressBar.h 파일의 44 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : ApplyStyle().

◆ LowColor

FLinearColor UCircularProgressBar::LowColor = FLinearColor(0.9f, 0.2f, 0.2f)

낮은 진행률 색상 (0% ~ 50%)

UCircularProgressBar.h 파일의 52 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : ApplyStyle().

◆ MidColor

FLinearColor UCircularProgressBar::MidColor = FLinearColor(1.0f, 0.8f, 0.2f)

중간 진행률 색상 (50%)

UCircularProgressBar.h 파일의 56 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : ApplyStyle().

◆ Percent

float UCircularProgressBar::Percent = 0.0f

진행률 (0.0 ~ 1.0)

UCircularProgressBar.h 파일의 48 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : ApplyStyle(), NativeTick(), SetPercent(), StartProgress().


이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: