5#include "CoreMinimal.h"
6#include "GameFramework/Actor.h"
7#include "MusicPlayer.generated.h"
9#define MAX_FADE_TIME_SECONDS 10.0f
10#define MIN_CLIP_LENGTH_SECONDS 2.0f
19 GENERATED_USTRUCT_BODY()
22 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
23 USoundBase* Track =
nullptr;
25 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, meta = (ClampMin = "0.0", ClampMax = "10.0"))
26 float FadeInTime = 1.0f;
28 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, meta = (ClampMin = "0.0", ClampMax = "10.0"))
29 float FadeOutOldTrackTime = 1.0f;
31 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, meta = (ClampMin = "0.0", ClampMax = "1.0"))
34 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
35 bool bPlayTrackListAfterTrackCompletion = true;
37 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, meta = (EditCondition="bPlayTrackListAfterTrackCompletion"))
38 FVector2D PostTrackDelay = FVector2D(0.0f, 0.0f);
40 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
41 bool bQueueTrack = true;
43 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
44 bool bDiscardTrackAfterPlay = false;
46 float CalculatedPostTrackDelay = 0.0f;
51 FadeInTime = Other.FadeInTime;
52 FadeOutOldTrackTime = Other.FadeOutOldTrackTime;
53 Volume = Other.Volume;
54 bPlayTrackListAfterTrackCompletion = Other.bPlayTrackListAfterTrackCompletion;
55 bQueueTrack = Other.bQueueTrack;
56 bDiscardTrackAfterPlay = Other.bDiscardTrackAfterPlay;
57 PostTrackDelay = Other.PostTrackDelay;
72 UFUNCTION(BlueprintPure, meta = (WorldContext =
"WorldContextObject"))
73 static AMusicPlayer* GetMusicPlayer(
const UObject* WorldContextObject);
75 UFUNCTION(BlueprintCallable)
78 UFUNCTION(BlueprintCallable)
79 void Stop(
float FadeOutTime = 1.0f);
80 UFUNCTION(BlueprintCallable)
81 void Resume(
float FadeInTime = 1.0f);
83 UFUNCTION(BlueprintCallable)
84 void SetTrackList(
const TArray<FTrackPlayInfo>& ListOfTracks,
bool bShuffleTracks =
true,
bool bPlayTrack =
true,
bool bWaitForTrackToCompleteBeforeSwitching =
true);
85 UFUNCTION(BlueprintCallable)
88 FString GetCurrentTrackInfo()
const;
91 virtual void BeginPlay()
override;
92 virtual void Tick(
float DeltaSeconds)
override;
93 virtual void EndPlay(
const EEndPlayReason::Type EndPlayReason)
override;
96 void OnTrack1PlaybackPercentChanged(
const class USoundWave* PlayingSoundWave,
const float PlaybackPercent);
98 void OnTrack2PlaybackPercentChanged(
const class USoundWave* PlayingSoundWave,
const float PlaybackPercent);
104 float GetRemainingTimeForTrack(UAudioComponent*
const AudioComponent)
const;
105 float GetCurrentPlayTimeForTrack(UAudioComponent*
const AudioComponent)
const;
106 float GetDurationForTrack(UAudioComponent*
const AudioComponent)
const;
107 UAudioComponent* GetInactiveAudioComponent()
const;
108 UAudioComponent* GetActiveAudioComponent()
const;
111 UAudioComponent* MusicTrack1 =
nullptr;
113 UAudioComponent* MusicTrack2 =
nullptr;
115 UAudioComponent* ActiveAudioComponent =
nullptr;
117 bool bShuffle = true;
118 int32 CurrentTrackIndex = 0;
122 float Track1CurrentPlaybackTime = 0.0f;
123 float Track1CurrentTrackLength = 0.0f;
124 float Track2CurrentPlaybackTime = 0.0f;
125 float Track2CurrentTrackLength = 0.0f;
Definition: MusicPlayer.h:66
static TMap< UWorld *, AMusicPlayer * > Singleton
Definition: MusicPlayer.h:102
Definition: MusicPlayer.h:18
USoundBase * Track
Definition: MusicPlayer.h:23