UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
QuartzSubscription.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10
11#define UE_API ENGINE_API
12
13// forwards
18
19namespace Audio
20{
21 struct FQuartzGameThreadSubscriber;
22 class FQuartzClockProxy;
23
24 // old version of TQuartzCommandQueue
25 template<class ListenerType>
27 {
28 };
29} // namespace Audio
30
40using namespace Audio::Quartz;
41
42// TODO: comment up why we listen to these interfaces
45 IMetronomeEventListener
46 , ICommandListener
47 , IQueueCommandListener
48>
49{
50public:
51 // ctor
53
56
57 // dtor
58 UE_API virtual ~FQuartzTickableObject() override;
59
61
62 // called by the associated QuartzSubsystem
63 UE_API void QuartzTick(float DeltaTime);
64
65 UE_API bool QuartzIsTickable() const;
66
68
69 bool IsInitialized() const { return QuartzSubscriptionToken.IsSubscribed(); }
70
71 UE_API Audio::FQuartzGameThreadSubscriber GetQuartzSubscriber();
72
74
75 UE_DEPRECATED(5.5, "This should not be called directly, use the ICommandListener interface instead.")
77
78 UE_DEPRECATED(5.5, "This should not be called directly, use the IMetronomeEventListener interface instead.")
80
81 UE_DEPRECATED(5.5, "This should not be called directly, use the IQueueCommandListener interface instead.")
83
84 // required by TQuartzShareableCommandQueue template
85 UE_API virtual void OnCommandEvent(const Audio::FQuartzQuantizedCommandDelegateData& Data) override;
86 UE_API virtual void OnMetronomeEvent(const Audio::FQuartzMetronomeDelegateData& Data) override;
87 UE_API virtual void OnQueueCommandEvent(const Audio::FQuartzQueueCommandData& Data) override;
88
89 // virtual interface (ExecCommand will forward the data to derived classes' ProcessCommand() call)
93
94
95 const Audio::FQuartzOffset& GetQuartzOffset() const { return NotificationOffset; }
96
97protected:
100
102 virtual bool ShouldUnsubscribe() { return false; }
103
104private:
105 struct FMetronomeDelegateGameThreadData
106 {
107 FOnQuartzMetronomeEvent MulticastDelegate;
108 };
109
110 struct FCommandDelegateGameThreadData
111 {
112 FOnQuartzCommandEvent MulticastDelegate;
113 FThreadSafeCounter RefCount;
114 };
115
116 // delegate containers
117 FMetronomeDelegateGameThreadData MetronomeDelegates[static_cast<int32>(EQuartzCommandQuantization::Count)];
118 TArray<FCommandDelegateGameThreadData> QuantizedCommandDelegates;
119
120 TArray<TFunction<void(FQuartzTickableObject*)>> TempCommandQueue;
121
122private:
123 Audio::FQuartzOffset NotificationOffset;
124 FQuartzGameThreadCommandQueuePtr CommandQueuePtr;
125 FQuartzSubscriptionToken QuartzSubscriptionToken;
126}; // class FQuartzTickableObject
127
128#undef UE_API
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
EQuartzCommandQuantization
Definition QuartzQuantizationUtilities.h:46
#define UE_API
Definition QuartzSubscription.h:11
@ Milliseconds
@ Multiplier
typename TVisitorPatternBase< Ts... >::template TElementBase< ConsumerInterfaces... > TConsumerBase
Definition QuartzCommandQueue.h:30
Definition QuartzSubscriptionToken.h:11
ENGINE_API bool IsSubscribed() const
Definition QuartzSubscriptionToken.cpp:73
Definition QuartzSubscription.h:49
UE_API void QuartzUnsubscribe()
Definition QuartzSubscription.cpp:44
FQuartzTickableObject & operator=(const FQuartzTickableObject &)=default
UE_API void SetNotificationAnticipationAmountMilliseconds(const double Milliseconds)
Definition QuartzSubscription.cpp:132
UE_API Audio::FQuartzGameThreadSubscriber GetQuartzSubscriber()
Definition QuartzSubscription.cpp:144
void ExecCommand(const Audio::FQuartzQuantizedCommandDelegateData &Data)
Definition QuartzSubscription.h:76
UE_API bool QuartzIsTickable() const
Definition QuartzSubscription.cpp:164
UE_API int32 AddCommandDelegate(const FOnQuartzCommandEventBP &InDelegate)
Definition QuartzSubscription.cpp:49
virtual UE_API ~FQuartzTickableObject() override
Definition QuartzSubscription.cpp:20
virtual UE_API void OnMetronomeEvent(const Audio::FQuartzMetronomeDelegateData &Data) override
Definition QuartzSubscription.cpp:112
virtual void ProcessCommand(const Audio::FQuartzQueueCommandData &Data)
Definition QuartzSubscription.h:92
virtual void ProcessCommand(const Audio::FQuartzMetronomeDelegateData &Data)
Definition QuartzSubscription.h:91
UE_API void AddMetronomeBpDelegate(EQuartzCommandQuantization InQuantizationBoundary, const FOnQuartzMetronomeEventBP &OnQuantizationEvent)
Definition QuartzSubscription.cpp:169
virtual UE_API void OnCommandEvent(const Audio::FQuartzQuantizedCommandDelegateData &Data) override
Definition QuartzSubscription.cpp:68
UE_API void SetNotificationAnticipationAmountMusicalDuration(const EQuartzCommandQuantization Duration, const double Multiplier)
Definition QuartzSubscription.cpp:138
virtual void ProcessCommand(const Audio::FQuartzQuantizedCommandDelegateData &Data)
Definition QuartzSubscription.h:90
virtual UE_API void OnQueueCommandEvent(const Audio::FQuartzQueueCommandData &Data) override
Definition QuartzSubscription.cpp:126
UE_API FQuartzTickableObject()
Definition QuartzSubscription.cpp:17
FQuartzTickableObject(const FQuartzTickableObject &Other)=default
virtual bool ShouldUnsubscribe()
Definition QuartzSubscription.h:102
UE_API void QuartzTick(float DeltaTime)
Definition QuartzSubscription.cpp:154
bool IsInitialized() const
Definition QuartzSubscription.h:69
const Audio::FQuartzOffset & GetQuartzOffset() const
Definition QuartzSubscription.h:95
Definition ThreadSafeCounter.h:14
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition AudioMixerClockHandle.h:28
Definition QuartzSubsystem.h:47
Definition World.h:918
Definition QuartzCommandQueue.h:13
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
Definition QuartzInterfaces.h:23
Definition QuartzInterfaces.h:12
Definition QuartzInterfaces.h:34
Definition QuartzSubsystem.h:29