UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IStageDataProvider.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7
8#include "CoreMinimal.h"
9#include "Misc/App.h"
10#include "StageMessages.h"
11
13{
14 static const FQualifiedFrameTime InvalidTime = FQualifiedFrameTime(FFrameTime(FFrameNumber(-1)), FFrameRate(-1, -1));
15}
16
18
24{
25public:
27
29
30 //~ Begin static methods for data provider users
31
32public:
33
35 template<typename MessageType, typename... Args>
36 static bool SendMessage(EStageMessageFlags Flags, Args&&... args)
37 {
38#if ENABLE_STAGEMONITOR_LOGGING
39 MessageType TempObj(Forward<Args>(args)...);
40 return SendMessage(MoveTempIfPossible(TempObj), Flags);
41#endif
42
43 return false;
44 }
45
47 template<typename MessageType, typename... Args>
48 static bool SendMessage(EStageMessageFlags Flags, MessageType& Message)
49 {
50#if ENABLE_STAGEMONITOR_LOGGING
51 return SendMessage(Forward<MessageType>(Message), Flags);
52#endif
53
54 return false;
55 }
56
58 template<typename MessageType, typename... Args>
59 static bool SendMessage(EStageMessageFlags Flags, MessageType&& Message)
60 {
61#if ENABLE_STAGEMONITOR_LOGGING
62 return SendMessage(Forward<MessageType>(Message), Flags);
63#else
64 return false;
65#endif
66 }
67
68private:
69
71 template<typename MessageType>
72 static bool SendMessage(MessageType&& Message, EStageMessageFlags InFlags)
73 {
74 //To simply API, modular feature checkup is hidden here. Could add preprocessors to disable this entirel
76 if (ModularFeatures.IsModularFeatureAvailable(IStageDataProvider::ModularFeatureName))
77 {
79
80 static_assert(TIsDerivedFrom<MessageType, FStageProviderEventMessage>::IsDerived || TIsDerivedFrom<MessageType, FStageProviderPeriodicMessage>::IsDerived, "MessageType must be a FStageProviderEventMessage or FStageProviderPeriodicMessage derived UStruct.");
81
82 // Timestamp the outgoing message.
84 Message.DateTime = FDateTime::Now();
85
86 if (CurrentFrameTime.IsSet())
87 {
88 Message.FrameTime = CurrentFrameTime.GetValue();
89 }
90 else
91 {
92 Message.FrameTime = UE::StageProviderUtils::InvalidTime;
93 }
94
95 return StageDataProvider->SendMessageInternal(&Message, MessageType::StaticStruct(), InFlags);
96 }
97
98 return false;
99 }
100
101 //~ End static methods for data provider users
102
103protected:
104
107};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EStageMessageFlags
Definition StageMessages.h:25
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTempIfPossible(T &&Obj) noexcept
Definition UnrealTemplate.h:538
static FORCEINLINE TOptional< FQualifiedFrameTime > GetCurrentFrameTime()
Definition App.h:737
Definition NameTypes.h:617
Definition IModularFeature.h:12
Definition IModularFeatures.h:15
static CORE_API IModularFeatures & Get()
Definition ModularFeatures.cpp:9
TModularFeature & GetModularFeature(const FName Type)
Definition IModularFeatures.h:54
Definition IStageDataProvider.h:24
static bool SendMessage(EStageMessageFlags Flags, Args &&... args)
Definition IStageDataProvider.h:36
static bool SendMessage(EStageMessageFlags Flags, MessageType &Message)
Definition IStageDataProvider.h:48
static FName ModularFeatureName
Definition IStageDataProvider.h:28
virtual bool SendMessageInternal(FStageDataBaseMessage *Payload, UScriptStruct *Type, EStageMessageFlags InFlags)=0
virtual ~IStageDataProvider()
Definition IStageDataProvider.h:26
static bool SendMessage(EStageMessageFlags Flags, MessageType &&Message)
Definition IStageDataProvider.h:59
Definition Class.h:1720
Definition IStageDataProvider.h:13
static CORE_API FDateTime Now()
Definition DateTime.cpp:377
Definition FrameNumber.h:18
Definition FrameRate.h:21
Definition FrameTime.h:16
Definition QualifiedFrameTime.h:13
Definition StageMessages.h:106
Definition UnrealTypeTraits.h:40
Definition Optional.h:131