UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UnrealNetwork.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 UnrealNetwork.h: Unreal networking.
5=============================================================================*/
6
7/*-----------------------------------------------------------------------------
8 Forward declarations.
9-----------------------------------------------------------------------------*/
10
11#pragma once
12
13#include "CoreMinimal.h"
15#include "UObject/CoreNet.h"
16#include "EngineLogs.h"
17#include "UObject/UnrealType.h"
21#include "Net/ReplayResult.h"
22#include <type_traits>
23
24class AActor;
25
26/*class UNetDriver;*/
27class UNetConnection;
28class UPendingNetGame;
30
31/*-----------------------------------------------------------------------------
32 Types.
33-----------------------------------------------------------------------------*/
34
35// Return the value of Max/2 <= Value-Reference+some_integer*Max < Max/2.
37{
38 return ((Value-Reference+Max/2) & (Max-1)) - Max/2;
39}
41{
42 return Reference + BestSignedDifference(Value,Reference,Max);
43}
44
45UE_DEPRECATED(5.1, "No longer used.")
47
50
53
55DECLARE_MULTICAST_DELEGATE_TwoParams(FOnProcessGameSpecificDemoHeader, const TArray<FString>& /*GameSpecificData*/, FString& /*Error*/);
56
60
61// Games can use these to override Version Data of Replay Headers
64
66
68UE_DEPRECATED(5.1, "Deprecated in favor of FOnReplayPlaybackFailureDelegate")
71
73
80
82{
86
90
94
98
101
104 UE_DEPRECATED(5.1, "Deprecated in favor of OnReplayPlaybackFailure")
107
110
113
116
119
122
125
128};
129
135{
138
144
146 bool bIsPushBased = false;
147
149 UE::Net::CreateAndRegisterReplicationFragmentFunc CreateAndRegisterReplicationFragmentFunction = nullptr;
150
151};
152
154{
156 {
157 UE_DEPRECATED(5.2, "No longer used")
164
171
175
176 private:
178
179 void* operator new(size_t) = delete;
180 void* operator new[](size_t) = delete;
181 void operator delete(void*) = delete;
182 void operator delete[](void*) = delete;
183 };
184
186 {
193
197
198 private:
199
201
202 void* operator new(size_t) = delete;
203 void* operator new[](size_t) = delete;
204 void operator delete(void*) = delete;
205 void operator delete[](void*) = delete;
206 };
207}
208/*-----------------------------------------------------------------------------
209 Replication.
210-----------------------------------------------------------------------------*/
211
212template<class BaseClass, class DerivedClass>
214{
215 return std::is_base_of_v<BaseClass, DerivedClass>;
216}
217
220{
222#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
223 if (!(TheProperty->PropertyFlags & CPF_Net))
224 {
225 UE_LOG(LogNet, Fatal,TEXT("Attempt to replicate property '%s' that was not tagged to replicate! Please use 'Replicated' or 'ReplicatedUsing' keyword in the UPROPERTY() declaration."), *TheProperty->GetFullName());
226 }
227#endif
228 return TheProperty;
229}
230
231#define DOREPLIFETIME_WITH_PARAMS_FAST(c,v,params) \
232{ \
233 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
234 const TCHAR* DoRepPropertyName_##c_##v(TEXT(#v)); \
235 const NetworkingPrivate::FRepPropertyDescriptor PropertyDescriptor_##c_##v(DoRepPropertyName_##c_##v, (int32)c::ENetFields_Private::v, 1); \
236\
237 PRAGMA_DISABLE_DEPRECATION_WARNINGS \
238 RegisterReplicatedLifetimeProperty(PropertyDescriptor_##c_##v, OutLifetimeProps, FixupParams<decltype(c::v)>(params)); \
239 PRAGMA_ENABLE_DEPRECATION_WARNINGS \
240}
241
242#define DOREPLIFETIME_WITH_PARAMS_FAST_STATIC_ARRAY(c,v,params) \
243{ \
244 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
245 const TCHAR* DoRepPropertyName_##c_##v(TEXT(#v)); \
246 const NetworkingPrivate::FRepPropertyDescriptor PropertyDescriptor_##c_##v(DoRepPropertyName_##c_##v, (int32)c::ENetFields_Private::v##_STATIC_ARRAY, (int32)c::EArrayDims_Private::v); \
247 RegisterReplicatedLifetimeProperty(PropertyDescriptor_##c_##v, OutLifetimeProps, params); \
248}
249
250#define DOREPLIFETIME_WITH_PARAMS(c,v,params) \
251{ \
252 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
253 FProperty* ReplicatedProperty = GetReplicatedProperty(StaticClass(), c::StaticClass(), GET_MEMBER_NAME_CHECKED(c,v)); \
254 PRAGMA_DISABLE_DEPRECATION_WARNINGS \
255 RegisterReplicatedLifetimeProperty(ReplicatedProperty, OutLifetimeProps, FixupParams<decltype(c::v)>(params)); \
256 PRAGMA_ENABLE_DEPRECATION_WARNINGS \
257}
258
259#define DOREPLIFETIME(c,v) DOREPLIFETIME_WITH_PARAMS(c,v,FDoRepLifetimeParams())
260
262#define DOREPLIFETIME_DIFFNAMES(c,v, n) \
263{ \
264 static TWeakFieldPtr<FProperty> __swp##v{}; \
265 const FProperty* sp##v = __swp##v.Get(); \
266 if (nullptr == sp##v) \
267 { \
268 sp##v = GetReplicatedProperty(StaticClass(), c::StaticClass(), n); \
269 __swp##v = sp##v; \
270 } \
271 for ( int32 i = 0; i < sp##v->ArrayDim; i++ ) \
272 { \
273 OutLifetimeProps.AddUnique( FLifetimeProperty( sp##v->RepIndex + i ) ); \
274 } \
275}
276
277#define DOREPLIFETIME_CONDITION(c,v,cond) \
278{ \
279 static_assert(cond != COND_NetGroup, "COND_NetGroup cannot be used on replicated properties. Only when registering subobjects"); \
280 FDoRepLifetimeParams LocalDoRepParams; \
281 LocalDoRepParams.Condition = cond; \
282 DOREPLIFETIME_WITH_PARAMS(c,v,LocalDoRepParams); \
283}
284
286#define DOREPLIFETIME_CONDITION_NOTIFY(c,v,cond,rncond) \
287{ \
288 static_assert(cond != COND_NetGroup, "COND_NetGroup cannot be used on replicated properties. Only when registering subobjects"); \
289 FDoRepLifetimeParams LocalDoRepParams; \
290 LocalDoRepParams.Condition = cond; \
291 LocalDoRepParams.RepNotifyCondition = rncond; \
292 DOREPLIFETIME_WITH_PARAMS(c,v,LocalDoRepParams); \
293}
294
295#define DOREPLIFETIME_ACTIVE_OVERRIDE_FAST(c,v,active) \
296{ \
297 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
298 UE::Net::Private::FNetPropertyConditionManager::Get().SetPropertyActiveOverride(this, (int32)c::ENetFields_Private::v, active); \
299}
300
301#define DOREPLIFETIME_ACTIVE_OVERRIDE_FAST_STATIC_ARRAY(c,v,active) \
302{ \
303 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
304 UE::Net::Private::FNetPropertyConditionManager& PropertyConditionManager = UE::Net::Private::FNetPropertyConditionManager::Get(); \
305 for (int32 i = 0; i < (int32)c::EArrayDims_Private::v; ++i) \
306 { \
307 PropertyConditionManager.SetPropertyActiveOverride(this, (int32)c::ENetFields_Private::v##_STATIC_ARRAY + i, active); \
308 } \
309}
310
311#define DOREPLIFETIME_ACTIVE_OVERRIDE(c,v,active) \
312{ \
313 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
314 static FProperty* sp##v = GetReplicatedProperty(StaticClass(), c::StaticClass(),GET_MEMBER_NAME_CHECKED(c,v)); \
315 UE::Net::Private::FNetPropertyConditionManager& PropertyConditionManager = UE::Net::Private::FNetPropertyConditionManager::Get(); \
316 for (int32 i = 0; i < sp##v->ArrayDim; i++) \
317 { \
318 PropertyConditionManager.SetPropertyActiveOverride(this, sp##v->RepIndex + i, active); \
319 } \
320}
321
322#define DOREPCUSTOMCONDITION_ACTIVE_FAST(c,v,active) \
323{ \
324 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
325 OutActiveState.SetActiveState((uint16)c::ENetFields_Private::v, active); \
326}
327
328#define DOREPCUSTOMCONDITION_SETACTIVE_FAST(c,v,active) \
329{ \
330 UE::Net::Private::FNetPropertyConditionManager::Get().SetPropertyActive(this, (uint16)c::ENetFields_Private::v, active); \
331}
332
333#define DOREPCUSTOMCONDITION_SETACTIVE_FAST_STATIC_ARRAY(c,v,active) \
334{ \
335 UE::Net::Private::FNetPropertyConditionManager& PropertyConditionManager = UE::Net::Private::FNetPropertyConditionManager::Get(); \
336 for (int32 i = 0; i < (int32)c::EArrayDims_Private::v; ++i) \
337 { \
338 PropertyConditionManager.SetPropertyActive(this, (uint16)c::ENetFields_Private::v##_STATIC_ARRAY + i, active); \
339 } \
340}
341
343#define DOREPDYNAMICCONDITION_INITCONDITION_FAST(c,v,cond) \
344{ \
345 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
346 OutActiveState.SetDynamicCondition((uint16)c::ENetFields_Private::v, cond); \
347}
348
353#define DOREPDYNAMICCONDITION_SETCONDITION_FAST(c,v,cond) \
354{ \
355 UE::Net::Private::FNetPropertyConditionManager::Get().SetPropertyDynamicCondition(this, (uint16)c::ENetFields_Private::v, cond); \
356}
357
358
359
363 const FDoRepLifetimeParams& Params);
364
368 const FDoRepLifetimeParams& Params);
369
370/*-----------------------------------------------------------------------------
371 Capture additional parameters required to bind FastArrays when using Iris
372-----------------------------------------------------------------------------*/
374{
375 template <typename T, typename...>
376 auto Requires(T* FastArray) -> decltype(FastArray->GetFastArrayCreateReplicationFragmentFunction());
377};
378
379template<typename T>
381{
382 // Use passed in CreateAndRegisterReplicationFragmentFunction if set
383 if (Params.CreateAndRegisterReplicationFragmentFunction)
384 {
385 return Params;
386 }
387
389 NewParams.CreateAndRegisterReplicationFragmentFunction = T::GetFastArrayCreateReplicationFragmentFunction();
390 return NewParams;
391}
392
393template<typename T>
398
399/*-----------------------------------------------------------------------------
400 Disable macros.
401 Use these macros to state that properties tagged replicated
402 are voluntarily not replicated. This silences an error about missing
403 registered properties when class replication is started
404-----------------------------------------------------------------------------*/
405
407#define DISABLE_REPLICATED_PROPERTY(c,v) \
408DisableReplicatedLifetimeProperty(StaticClass(), c::StaticClass(), GET_MEMBER_NAME_CHECKED(c,v), OutLifetimeProps);
409
411#define DISABLE_REPLICATED_PRIVATE_PROPERTY(c,v) \
412DisableReplicatedLifetimeProperty(StaticClass(), c::StaticClass(), FName(TEXT(#v)), OutLifetimeProps);
413
414#define DISABLE_REPLICATED_PROPERTY_FAST(c,v) \
415{ \
416 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
417 const TCHAR* DoRepPropertyName_##c_##v(TEXT(#v)); \
418 const NetworkingPrivate::FRepPropertyDescriptor PropertyDescriptor_##c_##v(DoRepPropertyName_##c_##v, (int32)c::ENetFields_Private::v, 1); \
419 DisableReplicatedLifetimeProperty(PropertyDescriptor_##c_##v, OutLifetimeProps); \
420}
421
422#define DISABLE_REPLICATED_PROPERTY_FAST_STATIC_ARRAY(c,v) \
423{ \
424 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
425 const TCHAR* DoRepPropertyName_##c_##v(TEXT(#v)); \
426 const NetworkingPrivate::FRepPropertyDescriptor PropertyDescriptor_##c_##v(DoRepPropertyName_##c_##v, (int32)c::ENetFields_Private::v##_STATIC_ARRAY, (int32)c::EArrayDims_Private::v); \
427 DisableReplicatedLifetimeProperty(PropertyDescriptor_##c_##v, OutLifetimeProps); \
428}
429
433#define DISABLE_ALL_CLASS_REPLICATED_PROPERTIES(c, SuperClassBehavior) \
434DisableAllReplicatedPropertiesOfClass(StaticClass(), c::StaticClass(), SuperClassBehavior, OutLifetimeProps);
435
436#define DISABLE_ALL_CLASS_REPLICATED_PROPERTIES_FAST(c, SuperClassBehavior) \
437{ \
438 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), "DISABLE_ALL_CLASS_REPLICATED_PROPERTIES"); \
439 const TCHAR* DoRepClassName_##c(TEXT(#c)); \
440 const NetworkingPrivate::FRepClassDescriptor ClassDescriptor_##c(DoRepClassName_##c, (int32)c::ENetFields_Private::NETFIELD_REP_START, (int32)c::ENetFields_Private::NETFIELD_REP_END); \
441 DisableAllReplicatedPropertiesOfClass(ClassDescriptor_##c, SuperClassBehavior, OutLifetimeProps); \
442}
443
446
449
450/*-----------------------------------------------------------------------------
451 Reset macros.
452 Use these to change the replication settings of an inherited property
453-----------------------------------------------------------------------------*/
454
455#define RESET_REPLIFETIME_CONDITION(c,v,cond) ResetReplicatedLifetimeProperty(StaticClass(), c::StaticClass(), GET_MEMBER_NAME_CHECKED(c,v), cond, OutLifetimeProps);
456
457#define RESET_REPLIFETIME(c,v) RESET_REPLIFETIME_CONDITION(c, v, COND_None)
458
459#define RESET_REPLIFETIME_CONDITION_FAST(c,v,cond) \
460{ \
461 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
462 const TCHAR* DoRepPropertyName_##c_##v(TEXT(#v)); \
463 const NetworkingPrivate::FRepPropertyDescriptor PropertyDescriptor_##c_##v(DoRepPropertyName_##c_##v, (int32)c::ENetFields_Private::v, 1); \
464 ResetReplicatedLifetimeProperty(PropertyDescriptor_##c_##v, cond, OutLifetimeProps); \
465}
466
467#define RESET_REPLIFETIME_CONDITION_FAST_STATIC_ARRAY(c,v,cond) \
468{ \
469 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
470 const TCHAR* DoRepPropertyName_##c_##v(TEXT(#v)); \
471 const NetworkingPrivate::FRepPropertyDescriptor PropertyDescriptor_##c_##v(DoRepPropertyName_##c_##v, (int32)c::ENetFields_Private::v##_STATIC_ARRAY, (int32)c::EArrayDims_Private::v); \
472 ResetReplicatedLifetimeProperty(PropertyDescriptor_##c_##v, cond, OutLifetimeProps); \
473}
474
475#define RESET_REPLIFETIME_FAST(c,v) RESET_REPLIFETIME_CONDITION_FAST(c, v, COND_None)
476#define RESET_REPLIFETIME_FAST_STATIC_ARRAY(c,v) RESET_REPLIFETIME_FAST_STATIC_ARRAY(c, v, COND_None)
477
478#define RESET_REPLIFETIME_WITH_PARAMS(c,v,params) ResetReplicatedLifetimeProperty(StaticClass(), c::StaticClass(), GET_MEMBER_NAME_CHECKED(c,v), params, OutLifetimeProps);
479
480#define RESET_REPLIFETIME_FAST_WITH_PARAMS(c,v,params) \
481{ \
482 static_assert(ValidateReplicatedClassInheritance<c, ThisClass>(), #c "." #v " is not accessible from this class."); \
483 const TCHAR* DoRepPropertyName_##c_##v(TEXT(#v)); \
484 const NetworkingPrivate::FRepPropertyDescriptor PropertyDescriptor_##c_##v(DoRepPropertyName_##c_##v, (int32)c::ENetFields_Private::v, 1); \
485 ResetReplicatedLifetimeProperty(PropertyDescriptor_##c_##v, params, OutLifetimeProps); \
486}
487
489 const UClass* ThisClass,
490 const UClass* PropertyClass,
494
499
501 const UClass* ThisClass,
502 const UClass* PropertyClass,
504 const FDoRepLifetimeParams& Params,
506
509 const FDoRepLifetimeParams& Params,
511
512
513/*-----------------------------------------------------------------------------
514 RPC Parameter Validation Helpers
515-----------------------------------------------------------------------------*/
516
517// This macro is for RPC parameter validation.
518// It handles the details of what should happen if a validation expression fails
519#define RPC_VALIDATE( expression ) \
520 if ( !( expression ) ) \
521 { \
522 UE_LOG( LogNet, Warning, \
523 TEXT("RPC_VALIDATE Failed: ") \
524 TEXT( PREPROCESSOR_TO_STRING( expression ) ) \
525 TEXT(" File: ") \
526 TEXT( PREPROCESSOR_TO_STRING( __FILE__ ) ) \
527 TEXT(" Line: ") \
528 TEXT( PREPROCESSOR_TO_STRING( __LINE__ ) ) ); \
529 return false; \
530 }
#define UE_NONCOPYABLE(TypeName)
Definition CoreMiscDefines.h:457
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
ELifetimeCondition
Definition CoreNetTypes.h:20
@ COND_None
Definition CoreNetTypes.h:21
ELifetimeRepNotifyCondition
Definition CoreNetTypes.h:43
@ REPNOTIFY_OnChanged
Definition CoreNetTypes.h:44
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
#define DECLARE_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:58
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
#define DECLARE_MULTICAST_DELEGATE_ThreeParams(DelegateName, Param1Type, Param2Type, Param3Type)
Definition DelegateCombinations.h:67
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
@ CPF_Net
Property is relevant to network replication.
Definition ObjectMacros.h:424
EReplayResult
Definition ReplayResult.h:10
ENGINE_API void RegisterReplicatedLifetimeProperty(const FProperty *ReplicatedProperty, TArray< FLifetimeProperty > &OutLifetimeProps, const FDoRepLifetimeParams &Params)
Definition UnrealNetwork.cpp:78
constexpr bool ValidateReplicatedClassInheritance()
Definition UnrealNetwork.h:213
int32 BestSignedDifference(int32 Value, int32 Reference, int32 Max)
Definition UnrealNetwork.h:36
ENGINE_API void ResetReplicatedLifetimeProperty(const UClass *ThisClass, const UClass *PropertyClass, FName PropertyName, ELifetimeCondition LifetimeCondition, TArray< FLifetimeProperty > &OutLifetimeProps)
Definition UnrealNetwork.cpp:159
TEnableIf< TModels_V< CGetFastArrayCreateReplicationFragmentFuncable, T >, constFDoRepLifetimeParams >::Type FixupParams(const FDoRepLifetimeParams &Params)
Definition UnrealNetwork.h:380
ENGINE_API void DisableAllReplicatedPropertiesOfClass(const UClass *ThisClass, const UClass *ClassToDisable, EFieldIteratorFlags::SuperClassFlags SuperClassBehavior, TArray< FLifetimeProperty > &OutLifetimeProps)
Definition UnrealNetwork.cpp:224
FProperty * GetReplicatedProperty(const UClass *CallingClass, const UClass *PropClass, const FName &PropName)
Definition UnrealNetwork.h:219
int32 MakeRelative(int32 Value, int32 Reference, int32 Max)
Definition UnrealNetwork.h:40
ENGINE_API void DisableReplicatedLifetimeProperty(const UClass *ThisClass, const UClass *PropertyClass, FName PropertyName, TArray< FLifetimeProperty > &OutLifetimeProps)
Definition UnrealNetwork.cpp:124
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Actor.h:257
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition Array.h:670
Definition EnableIf.h:20
Definition UnrealString.h.inl:34
Definition Class.h:3793
Definition NetConnection.h:284
Definition PendingNetGame.h:24
Definition World.h:918
Definition EngineBaseTypes.h:739
SuperClassFlags
Definition UnrealType.h:7040
Definition UnrealNetwork.h:154
FReplicationFragment *(* CreateAndRegisterReplicationFragmentFunc)(UObject *Owner, const FReplicationStateDescriptor *Descriptor, FFragmentRegistrationContext &Context)
Definition CoreNet.h:55
Definition AdvancedWidgetsModule.cpp:13
auto Requires(T *FastArray) -> decltype(FastArray->GetFastArrayCreateReplicationFragmentFunction())
Definition UnrealNetwork.h:135
Definition UnrealNetwork.h:82
static ENGINE_API FOnWriteGameSpecificDemoHeader OnWriteGameSpecificDemoHeader
Definition UnrealNetwork.h:88
static ENGINE_API FReplayScrubTeardown OnScrubTeardown
Definition UnrealNetwork.h:85
static ENGINE_API FGetOverridableVersionDataForDemoHeaderReadDelegate GetOverridableVersionDataForHeaderRead
Definition UnrealNetwork.h:96
static ENGINE_API FOnWriteGameSpecificFrameData OnWriteGameSpecificFrameData
Definition UnrealNetwork.h:92
static ENGINE_API FOnProcessGameSpecificDemoHeader OnProcessGameSpecificDemoHeader
Definition UnrealNetwork.h:89
static ENGINE_API FGetOverridableVersionDataForDemoHeaderWriteDelegate GetOverridableVersionDataForHeaderWrite
Definition UnrealNetwork.h:97
static ENGINE_API FOnReplayStartedDelegate OnReplayStarted
Definition UnrealNetwork.h:100
static ENGINE_API FOnProcessGameSpecificFrameData OnProcessGameSpecificFrameData
Definition UnrealNetwork.h:93
static ENGINE_API FPreReplayScrub OnPreScrub
Definition UnrealNetwork.h:84
Definition ReplayTypes.h:511
Definition UnrealNetwork.h:186
const TCHAR * ClassName
Definition UnrealNetwork.h:194
FRepClassDescriptor(const TCHAR *InClassName, const int32 InStartRepIndex, const int32 InEndRepIndex)
Definition UnrealNetwork.h:187
const int32 EndRepIndex
Definition UnrealNetwork.h:196
const int32 StartRepIndex
Definition UnrealNetwork.h:195
Definition UnrealNetwork.h:156
const int32 ArrayDim
Definition UnrealNetwork.h:174
const TCHAR * PropertyName
Definition UnrealNetwork.h:172
const int32 RepIndex
Definition UnrealNetwork.h:173
FRepPropertyDescriptor(const TCHAR *InPropertyName, const int32 InRepIndex, const int32 InArrayDim)
Definition UnrealNetwork.h:165