UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DataflowSimulationContext.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
9
10namespace UE::Dataflow
11{
13 template<typename Base = UE::Dataflow::FContextSingle>
15 {
16 public:
18
20 : Super(InOwner)
21 {}
22
23 virtual ~TSimulationContext() override {};
24
26 void SetTimingInfos(const float DeltaSeconds, const float TimeSeconds) {DeltaTime = DeltaSeconds; SimulationTime = TimeSeconds;}
27
29 float GetDeltaTime() const {return DeltaTime;}
30
32 float GetSimulationTime() const {return SimulationTime;}
33
35 template<typename ProxyType>
36 void GetTypedProxies(TArray<ProxyType*>& FilteredProxies) const;
37
39 DATAFLOWSIMULATION_API void GetSimulationProxies(const FString& ProxyType, const TArray<FString>& SimulationGroups, TArray<FDataflowSimulationProxy*>& FilteredProxies) const;
40
42 DATAFLOWSIMULATION_API void AddSimulationProxy(const FString& ProxyType, FDataflowSimulationProxy* SimulationProxy);
43
45 DATAFLOWSIMULATION_API void RemoveSimulationProxy(const FString& ProxyType, const FDataflowSimulationProxy* SimulationProxy);
46
49
51 DATAFLOWSIMULATION_API int32 NumSimulationProxies(const FString& ProxyType) const;
52
55
57 DATAFLOWSIMULATION_API void BuildGroupBits(const TArray<FString>& SimulationGroups, TBitArray<>& GroupBits) const;
58
61 {
62 IterationIndices.Push(0);
63 }
64
67 {
68 IterationIndices.Pop();
69 }
70
73 {
74 IterationIndices.Last() = IterationIndex;
75 }
76
79 {
80 return IterationIndices.Last();
81 }
82
83 private :
84
86 float SimulationTime = 0.0f;
87
89 float DeltaTime = 0.0f;
90
93
95 TMap<FString, uint32> GroupIndices;
96
98 TArray<int32> IterationIndices;
99 };
100
101 template<typename Base>
102 template<typename ProxyType>
104 {
105 if(const TSet<FDataflowSimulationProxy*>* TypedProxies = SimulationProxies.Find(ProxyType::StaticStruct()->GetName()))
106 {
107 for(FDataflowSimulationProxy* SimulationProxy : *TypedProxies)
108 {
109 if(SimulationProxy)
110 {
111 FilteredProxies.Add(SimulationProxy->AsType<ProxyType>());
112 }
113 }
114 }
115 }
116
119}
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
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
UE_NODEBUG UE_FORCEINLINE_HINT void Push(ElementType &&Item)
Definition Array.h:1224
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
Definition UnrealString.h.inl:34
Definition DataflowObjectInterface.h:15
Definition DataflowSimulationContext.h:15
void SetIterationIndex(const int32 IterationIndex)
Definition DataflowSimulationContext.h:72
virtual ~TSimulationContext() override
Definition DataflowSimulationContext.h:23
void PopIterationIndex()
Definition DataflowSimulationContext.h:66
DATAFLOWSIMULATION_API int32 NumSimulationProxies(const FString &ProxyType) const
Definition DataflowSimulationContext.cpp:88
float GetDeltaTime() const
Definition DataflowSimulationContext.h:29
void PushIterationIndex()
Definition DataflowSimulationContext.h:60
DATAFLOWSIMULATION_API void RemoveSimulationProxy(const FString &ProxyType, const FDataflowSimulationProxy *SimulationProxy)
Definition DataflowSimulationContext.cpp:76
DATAFLOWSIMULATION_API void BuildGroupBits(const TArray< FString > &SimulationGroups, TBitArray<> &GroupBits) const
Definition DataflowSimulationContext.cpp:28
TSimulationContext(const TObjectPtr< UObject > &InOwner)
Definition DataflowSimulationContext.h:19
void SetTimingInfos(const float DeltaSeconds, const float TimeSeconds)
Definition DataflowSimulationContext.h:26
DATAFLOWSIMULATION_API void ResetSimulationProxies()
Definition DataflowSimulationContext.cpp:82
DATAFLOWSIMULATION_API void AddSimulationProxy(const FString &ProxyType, FDataflowSimulationProxy *SimulationProxy)
Definition DataflowSimulationContext.cpp:70
void GetTypedProxies(TArray< ProxyType * > &FilteredProxies) const
Definition DataflowSimulationContext.h:103
DATAFLOWSIMULATION_API void GetSimulationProxies(const FString &ProxyType, const TArray< FString > &SimulationGroups, TArray< FDataflowSimulationProxy * > &FilteredProxies) const
Definition DataflowSimulationContext.cpp:10
int32 GetIterationIndex()
Definition DataflowSimulationContext.h:78
DATAFLOWSIMULATION_API void RegisterProxyGroups()
Definition DataflowSimulationContext.cpp:41
float GetSimulationTime() const
Definition DataflowSimulationContext.h:32
DATAFLOW_CONTEXT_INTERNAL(UE::Dataflow::TEngineContext< Base >, TSimulationContext)
Definition DataflowAnyType.cpp:10
Definition DataflowSimulationProxy.h:15
Definition ObjectPtr.h:488