106 lines
3.9 KiB
C++
106 lines
3.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Components/Widget.h"
|
|
#include "AudioPlaybackThrobber.generated.h"
|
|
|
|
class SAudioPlaybackThrobber;
|
|
class UAudioComponent;
|
|
class USoundWave;
|
|
|
|
UCLASS(BlueprintType, Blueprintable)
|
|
class FUNNYGIRL_API UAudioPlaybackThrobber : public UWidget
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UAudioPlaybackThrobber();
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback", meta = (ClampMin = "1", ClampMax = "16"))
|
|
int32 BarCount = 7;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback", meta = (ClampMin = "0.5"))
|
|
float BarWidth = 3.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback", meta = (ClampMin = "0.0"))
|
|
float BarGap = 2.5f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback", meta = (ClampMin = "0.0", ClampMax = "1.0"))
|
|
float MinHeightFraction = 0.18f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback", meta = (ClampMin = "0.0"))
|
|
float AnimationSpeed = 4.8f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback", meta = (ClampMin = "0.0", ClampMax = "1.0"))
|
|
float GlowStrength = 0.35f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback", meta = (ClampMin = "0.0", ClampMax = "1.0"))
|
|
float CenterBoost = 0.35f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback")
|
|
FLinearColor BarColor = FLinearColor(0.18f, 0.82f, 1.0f, 1.0f);
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback")
|
|
FLinearColor IdleBarColor = FLinearColor(0.18f, 0.82f, 1.0f, 0.18f);
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback")
|
|
bool bIsPlaying = false;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback|Audio")
|
|
TObjectPtr<UAudioComponent> AudioComponent;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback|Audio")
|
|
bool bUseAudioEnvelope = false;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback|Audio", meta = (ClampMin = "0.0"))
|
|
float AudioEnvelopeGain = 5.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback|Audio", meta = (ClampMin = "0.1"))
|
|
float AudioEnvelopeGamma = 0.65f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback|Audio", meta = (ClampMin = "0.0"))
|
|
float AudioEnvelopeSmoothingSpeed = 16.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback|Audio", meta = (ClampMin = "0.0", ClampMax = "1.0"))
|
|
float ManualAudioLevel = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback|Audio", meta = (ClampMin = "0.0", ClampMax = "1.0"))
|
|
float AudioSilenceThreshold = 0.03f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio Playback|Audio", meta = (ClampMin = "0.0", ClampMax = "1.0"))
|
|
float AudioSilenceOpacity = 0.08f;
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Audio Playback")
|
|
void SetIsPlaying(bool bInIsPlaying);
|
|
|
|
UFUNCTION(BlueprintPure, Category = "Audio Playback")
|
|
bool IsPlaying() const { return bIsPlaying; }
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Audio Playback|Audio")
|
|
void SetAudioComponent(UAudioComponent* InAudioComponent);
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Audio Playback|Audio")
|
|
void SetUseAudioEnvelope(bool bInUseAudioEnvelope);
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Audio Playback|Audio")
|
|
void SetManualAudioLevel(float InAudioLevel);
|
|
|
|
protected:
|
|
virtual void BeginDestroy() override;
|
|
virtual TSharedRef<SWidget> RebuildWidget() override;
|
|
virtual void SynchronizeProperties() override;
|
|
virtual void ReleaseSlateResources(bool bReleaseChildren) override;
|
|
|
|
private:
|
|
UFUNCTION()
|
|
void HandleAudioEnvelopeValue(const USoundWave* PlayingSoundWave, const float EnvelopeValue);
|
|
|
|
void UnbindAudioComponent();
|
|
void BindAudioComponent();
|
|
|
|
TSharedPtr<SAudioPlaybackThrobber> MyThrobber;
|
|
bool bAudioEnvelopeDelegateBound = false;
|
|
};
|