UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ReplicationStateDescriptorMacros.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "HAL/Platform.h"
10
11
12//
13// $IRIS: TEMPORARY TO HELP WITH FAKE GENERATING REPLICATIONSTATES
14// define macros to declare and implement the fake Generated State
15// This will be generate by UHT
16//
17
18//
19// Helper functions
20//
21
22namespace UE::Net::Private
23{
24
25template <typename T>
26static constexpr uint32 CalculateWordCountForChangeMask(const T& ChangeMaskDescriptors)
27{
30}
31
32}
33
34//
35// DECLARATION MACROS
36//
37#define IRIS_DECLARE_COMMON() \
38private: \
39 static const UE::Net::FReplicationStateDescriptor sReplicationStateDescriptor; \
40 static const UE::Net::FReplicationStateMemberDescriptor sReplicationStateDescriptorMemberDescriptors[]; \
41 static const UE::Net::FReplicationStateMemberSerializerDescriptor sReplicationStateDescriptorMemberSerializerDescriptors[]; \
42 static const UE::Net::FReplicationStateMemberTraitsDescriptor sReplicationStateDescriptorMemberTraitsDescriptors[]; \
43 static const UE::Net::FReplicationStateMemberFunctionDescriptor sReplicationStateDescriptorMemberFunctionDescriptors[]; \
44 static const UE::Net::FReplicationStateMemberTagDescriptor sReplicationStateDescriptorMemberTagDescriptors[]; \
45 static const UE::Net::FReplicationStateMemberReferenceDescriptor sReplicationStateDescriptorMemberReferenceDescriptors[]; \
46 static const UE::Net::FReplicationStateMemberDebugDescriptor sReplicationStateDescriptorMemberDebugDescriptors[]; \
47 UE::Net::FReplicationStateHeader InternalReplicationState; \
48 UE::Net::FNetBitArrayView::StorageWordType ChangeMask[UE::Net::Private::CalculateWordCountForChangeMask(sReplicationStateChangeMaskDescriptors)] = { }; \
49\
50 /* helpers, should do special methods for this with no safety at all since this will be generated. Single bitcase should be as fast as possible */ \
51 void SetDirty(const UE::Net::FReplicationStateMemberChangeMaskDescriptor& Bits) { UE::Net::FNetBitArrayView Mask(&ChangeMask[0], sReplicationStateDescriptor.ChangeMaskBitCount); UE::Net::Private::MarkDirty(InternalReplicationState, Mask, Bits);} \
52 bool IsDirty(const UE::Net::FReplicationStateMemberChangeMaskDescriptor& Bits) const { const UE::Net::FNetBitArrayView Mask(const_cast<UE::Net::FNetBitArrayView::StorageWordType*>(&ChangeMask[0]), sReplicationStateDescriptor.ChangeMaskBitCount); return Mask.GetBit(Bits.BitOffset); } \
53public: \
54 static const UE::Net::FReplicationStateDescriptor* GetReplicationStateDescriptor() { return &sReplicationStateDescriptor; }
55
56#define IRIS_ACCESS_BY_VALUE(MemberName, MemberType, MemberIndex) \
57void Set##MemberName(MemberType Value) { if (MemberName != Value) { SetDirty(sReplicationStateChangeMaskDescriptors[MemberIndex]); } MemberName = Value; } \
58MemberType Get##MemberName() const { return MemberName; } \
59bool Is##MemberName##Dirty() const { return IsDirty(sReplicationStateChangeMaskDescriptors[MemberIndex]); }
60
61#define IRIS_ACCESS_BY_REFERENCE(MemberName, MemberType, MemberIndex) \
62void Set##MemberName(const MemberType& Value) { if (MemberName != Value) { SetDirty(sReplicationStateChangeMaskDescriptors[MemberIndex]); } MemberName = Value; } \
63const MemberType& Get##MemberName() const { return MemberName; } \
64bool Is##MemberName##Dirty() const { return IsDirty(sReplicationStateChangeMaskDescriptors[MemberIndex]); }
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_ARRAY_COUNT(array)
Definition UnrealTemplate.h:212
uint32_t uint32
Definition binka_ue_file_header.h:6
static constexpr uint32 CalculateRequiredWordCount(uint32 BitCount)
Definition NetBitArray.h:1414
Definition NetworkVersion.cpp:28
U16 Index
Definition radfft.cpp:71