UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ReplicatedState.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "ReplicatedState.generated.h"
8
10UENUM()
20
22UENUM()
30
32USTRUCT()
34{
36
37
38 UPROPERTY()
39 TObjectPtr<class AActor> AttachParent;
40
42 UPROPERTY()
43 FVector_NetQuantize100 LocationOffset;
44
46 UPROPERTY()
48
50 UPROPERTY()
51 FRotator RotationOffset;
52
54 UPROPERTY()
55 FName AttachSocket;
56
58 UPROPERTY()
59 TObjectPtr<class USceneComponent> AttachComponent;
60
62 : AttachParent(nullptr)
63 , LocationOffset(ForceInit)
65 , RotationOffset(ForceInit)
66 , AttachSocket(NAME_None)
67 , AttachComponent(nullptr)
68 { }
69};
70
73{
74 enum Type
75 {
76 None = 0x00,
77 Sleeping = 0x01,
79 RepPhysics = 0x04 // This RigidBody was replicated from the server with simulating physics
80 };
81}
82
84USTRUCT()
112
117USTRUCT()
119{
121
122
125
129
132 FVector Location;
133
137
141
144 uint8 bSimulatedPhysicSleep : 1;
145
148 uint8 bRepPhysics : 1;
149
152 uint8 bRepAcceleration : 1;
153
156 int32 ServerFrame;
157
160 int32 ServerPhysicsHandle = INDEX_NONE;
161
163 UPROPERTY(EditDefaultsOnly, Category=Replication, AdvancedDisplay)
164 EVectorQuantization LocationQuantizationLevel;
165
167 UPROPERTY(EditDefaultsOnly, Category=Replication, AdvancedDisplay)
168 EVectorQuantization VelocityQuantizationLevel;
169
171 UPROPERTY(EditDefaultsOnly, Category=Replication, AdvancedDisplay)
172 ERotatorQuantization RotationQuantizationLevel;
173
175
176 ENGINE_API bool SerializeQuantizedVector(FArchive& Ar, FVector& Vector, EVectorQuantization QuantizationLevel);
177
178 ENGINE_API bool NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess);
179
180 void FillFrom(const FRigidBodyState& RBState, const AActor* const Actor = nullptr, int32 InServerFrame = 0)
181 {
182 Location = RebaseOntoZeroOrigin(RBState.Position, Actor);
183 Rotation = RBState.Quaternion.Rotator();
184 LinearVelocity = RBState.LinVel;
185 AngularVelocity = RBState.AngVel;
186 bSimulatedPhysicSleep = (RBState.Flags & ERigidBodyFlags::Sleeping) != 0;
187 bRepPhysics = true;
188 ServerFrame = InServerFrame;
189 }
190
191 void CopyTo(FRigidBodyState& RBState, const AActor* const Actor = nullptr) const
192 {
193 RBState.Position = RebaseOntoLocalOrigin(Location, Actor);
194 RBState.Quaternion = Rotation.Quaternion();
195 RBState.LinVel = LinearVelocity;
196 RBState.AngVel = AngularVelocity;
197 RBState.Flags =
198 (decltype(FRigidBodyState::Flags))(bSimulatedPhysicSleep ? ERigidBodyFlags::Sleeping : ERigidBodyFlags::None)
201 }
202
203 bool operator==(const FRepMovement& Other) const
204 {
205 if ( LinearVelocity != Other.LinearVelocity )
206 {
207 return false;
208 }
209
210 if ( AngularVelocity != Other.AngularVelocity )
211 {
212 return false;
213 }
214
215 if ( Location != Other.Location )
216 {
217 return false;
218 }
219
220 if ( Rotation != Other.Rotation )
221 {
222 return false;
223 }
224
225 if (bRepAcceleration && (Acceleration != Other.Acceleration))
226 {
227 return false;
228 }
229
230 if ( bSimulatedPhysicSleep != Other.bSimulatedPhysicSleep )
231 {
232 return false;
233 }
234
235 if ( bRepPhysics != Other.bRepPhysics )
236 {
237 return false;
238 }
239
240 if ( bRepAcceleration != Other.bRepAcceleration )
241 {
242 return false;
243 }
244
245 return true;
246 }
247
248 bool operator!=(const FRepMovement& Other) const
249 {
250 return !(*this == Other);
251 }
252
255
257 static ENGINE_API FVector RebaseOntoLocalOrigin(const FVector& Location, const FIntVector& LocalOrigin);
258
260 static ENGINE_API FVector RebaseOntoZeroOrigin(const FVector& Location, const FIntVector& LocalOrigin);
261
263 static ENGINE_API FVector RebaseOntoLocalOrigin(const FVector& Location, const AActor* const WorldContextActor);
264
266 static ENGINE_API FVector RebaseOntoZeroOrigin(const FVector& Location, const AActor* const WorldContextActor);
267
270
273};
274
275template<>
277{
278 enum
279 {
282 };
283};
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
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 UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
ERotatorQuantization
Definition ReplicatedState.h:24
EVectorQuantization
Definition ReplicatedState.h:12
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Actor.h:257
Definition Archive.h:1208
Definition NameTypes.h:617
Definition ActorComponent.h:152
Definition CoreNet.h:191
Definition ReplicatedState.h:73
Type
Definition ReplicatedState.h:75
@ RepPhysics
Definition ReplicatedState.h:79
@ NeedsUpdate
Definition ReplicatedState.h:78
@ None
Definition ReplicatedState.h:76
@ Sleeping
Definition ReplicatedState.h:77
Definition ReplicatedState.h:34
Definition ReplicatedState.h:119
static ENGINE_API int32 EnableMultiplayerWorldOriginRebasing
Definition ReplicatedState.h:254
void CopyTo(FRigidBodyState &RBState, const AActor *const Actor=nullptr) const
Definition ReplicatedState.h:191
static ENGINE_API FVector RebaseOntoLocalOrigin(const FVector &Location, const class UActorComponent *const WorldContextActorComponent)
bool operator==(const FRepMovement &Other) const
Definition ReplicatedState.h:203
bool operator!=(const FRepMovement &Other) const
Definition ReplicatedState.h:248
static ENGINE_API FVector RebaseOntoZeroOrigin(const FVector &Location, const class UActorComponent *const WorldContextActorComponent)
Definition ReplicatedState.h:86
uint8 Flags
Definition ReplicatedState.h:102
Definition NetSerialization.h:500
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithNetSharedSerialization
Definition StructOpsTypeTraits.h:31
@ WithNetSerializer
Definition StructOpsTypeTraits.h:26
Definition StructOpsTypeTraits.h:46