KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
UVoiceRecording.cpp
이 파일의 문서화 페이지로 가기
1// Copyright (c) 2025 Doppleddiggong. All rights reserved. Unauthorized copying, modification, or distribution of this file, via any medium is strictly prohibited. Proprietary and confidential.
2
7#include "UVoiceRecording.h"
8
9#include "UBroadcastManager.h"
11#include "Components/Image.h"
12
14{
15 // 브로드캐스트 매니저에 이벤트 등록
16 if (auto EventManager = UBroadcastManager::Get(GetWorld()))
17 {
18 EventManager->OnAudioCapture.RemoveDynamic(this, &UVoiceRecording::OnAudioCapture);
19 EventManager->OnAudioCapture.AddDynamic(this, &UVoiceRecording::OnAudioCapture);
20
21 EventManager->OnAudioSpectrum.RemoveDynamic(this, &UVoiceRecording::OnAudioSpectrum);
22 EventManager->OnAudioSpectrum.AddDynamic(this, &UVoiceRecording::OnAudioSpectrum);
23 }
24
25 StartRecordingColor = FColor::FromHex(TEXT("CEF97CFF"));
26 StopRecordingColor = FColor::FromHex(TEXT("A3A3A3FF"));
27}
28
29void UVoiceRecording::NativeTick(const FGeometry& MyGeometry, float InDeltaTime)
30{
31 Super::NativeTick(MyGeometry, InDeltaTime);
32
33 UpdateSpectrumVisual(InDeltaTime);
34}
35
37{
38 if ( !Image_Symbol->IsVisible())
39 return;
40
41 const float Delta = FMath::Max(DeltaTime, 0.0f);
42 const float TargetValue = SpectrumDisplayValue;
43 const float CurrentValue = CircularProgressBar->Percent;
44 const float InterpSpeed = TargetValue > CurrentValue ? SpectrumRiseSpeed : SpectrumDecaySpeed;
45 const float NewPercent = FMath::FInterpConstantTo(CurrentValue, TargetValue, Delta, InterpSpeed);
46 CircularProgressBar->SetPercent(FMath::Clamp(NewPercent, 0.0f, 1.0f));
47
48 // Image_Symbol 스케일 업데이트
49 const float Scale = FMath::Lerp(1.0f, 1.75f, NewPercent);
50 Image_Symbol->SetRenderScale(FVector2D(Scale, Scale));
51}
52
54{
55 Image_Symbol->SetColorAndOpacity(bRecording ? StartRecordingColor : StopRecordingColor );
56
57 if ( bRecording == false )
58 {
60 CircularProgressBar->SetPercent(0.0f);
61 }
62}
63
65{
66 SpectrumDisplayValue = Spectrum;
67}
FLinearColor StartRecordingColor
TObjectPtr< class UCircularProgressBar > CircularProgressBar
virtual void NativeTick(const FGeometry &MyGeometry, float InDeltaTime) override
TObjectPtr< class UImage > Image_Symbol
원형 프로그레스바 위젯
float SpectrumRiseSpeed
스펙트럼 상승 속도
float SpectrumDisplayValue
스펙트럼 표시 값
FLinearColor StopRecordingColor
float SpectrumDecaySpeed
스펙트럼 감쇠 속도
void UpdateSpectrumVisual(float DeltaTime)
스펙트럼 시각화 업데이트
void OnAudioSpectrum(float Spectrum)
오디오 스펙트럼 데이터 수신 이벤트
void OnAudioCapture(bool bRecording)
오디오 캡처 상태 변경 이벤트
void InitWidget()
위젯 초기화