UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PhysicsReplicationLOD.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
11
12namespace Chaos
13{
14 namespace Private
15 {
16 class FPBDIsland;
17 }
18}
19
27
28class UPrimitiveComponent;
30
32{
33public:
35
37
38public: // IPhysicsReplicationLOD Functions
39
40 virtual void SetEnabled(const bool bInEnabled) override;
41 virtual bool IsEnabled() const override;
42
44 virtual void RegisterFocalPoint_External(const UPrimitiveComponent* Component, FName BoneName = NAME_None) override;
46 virtual void UnregisterFocalPoint_External(const UPrimitiveComponent* Component, FName BoneName = NAME_None) override;
47
49 virtual void RegisterFocalPoint_External(Chaos::FConstPhysicsObjectHandle PhysicsObject) override;
51 virtual void UnregisterFocalPoint_External(Chaos::FConstPhysicsObjectHandle PhysicsObject) override;
52
55
56private:
57 bool bEnabled;
58 FPhysScene* PhysScene;
59 FPhysicsReplicationLODAsync* PhysicsReplicationLODAsync;
60};
61
62
63
64
65// ------------------------------- Async -------------------------------
66
67
81
82
85 FPhysicsReplicationLODAsyncInput,
86 Chaos::FSimCallbackNoOutput,
87 Chaos::ESimCallbackOptions::Presimulate | Chaos::ESimCallbackOptions::Rewind | Chaos::ESimCallbackOptions::PhysicsObjectUnregister>
88{
90
91public:
92
94 : bEnabled(false)
95 , DefaultSettings()
96 , LodData()
97 , FocalParticles()
98 , ParticlesInFocalIslands()
99 , CachedIslandLodData()
100 , ParticleIslands()
101 , IslandParticles()
102 , IslandAABB()
103 , ParticleAABB()
104 {
105 }
106
108
109private: // TSimCallbackObject Functions
110 virtual void OnPostInitialize_Internal() override;
111 virtual void ProcessInputs_Internal(int32 PhysicsStep) override; // Called before OnPreSimulate_Internal()
112 virtual void OnPreSimulate_Internal() override;
113 virtual void OnPhysicsObjectUnregistered_Internal(Chaos::FConstPhysicsObjectHandle PhysicsObject) override;
114
115
116public: // IPhysicsReplicationLODAsync Functions
117 virtual bool IsEnabled() const override;
118
120 virtual void RegisterFocalPoint_Internal(Chaos::FConstPhysicsObjectHandle PhysicsObject) override;
122 virtual void UnregisterFocalPoint_Internal(Chaos::FConstPhysicsObjectHandle PhysicsObject) override;
123
128
129private:
130 void ConsumeAsyncInput();
131 void CacheParticlesInFocalIslands();
132
133 bool PerformIslandLOD(const Chaos::FGeometryParticleHandle& ParticleHandle, const uint32 LODFlags);
134 bool PerformDistanceLOD(const Chaos::FGeometryParticleHandle& ParticleHandle, const uint32 LODFlags);
135
136private:
137 bool bEnabled;
138 FPhysicsReplicationLODSettings DefaultSettings;
139 FPhysicsRepLodData LodData;
141
142 // Particles in the same islands as focal particles
143 TArray<int32> ParticlesInFocalIslands;
144
145 // LOD Data cached per island, valid for one physics frame
146 TMap<int32, FPhysicsRepLodData> CachedIslandLodData;
147
148 // Transient array to hold islands affected by LOD
150
151 // Transient array to hold particles that are part of islands
153
154 // Transient BoundingBox for island
155 Chaos::FAABB3 IslandAABB;
156
157 // Transient BoundingBox for particle, used to cache LocalBounds and apply offset from world location and then add to IslandAABB
158 Chaos::FAABB3 ParticleAABB;
159};
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
EPhysicsReplicationLODFlags
Definition PhysicsReplicationLOD.h:21
@ LODFlag_DistanceCheck
Definition PhysicsReplicationLOD.h:24
@ LODFlag_IslandCheck
Definition PhysicsReplicationLOD.h:23
@ LODFlag_All
Definition PhysicsReplicationLOD.h:25
@ LODFlag_None
Definition PhysicsReplicationLOD.h:22
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ParticleHandle.h:436
Definition SimCallbackObject.h:521
Definition NameTypes.h:617
Definition PhysScene_Chaos.h:116
Definition PhysicsReplicationLOD.h:88
virtual ~FPhysicsReplicationLODAsync()
Definition PhysicsReplicationLOD.h:107
virtual bool IsEnabled() const override
Definition PhysicsReplicationLOD.cpp:143
virtual void RegisterFocalPoint_Internal(Chaos::FConstPhysicsObjectHandle PhysicsObject) override
Definition PhysicsReplicationLOD.cpp:270
virtual void UnregisterFocalPoint_Internal(Chaos::FConstPhysicsObjectHandle PhysicsObject) override
Definition PhysicsReplicationLOD.cpp:293
FPhysicsReplicationLODAsync()
Definition PhysicsReplicationLOD.h:93
virtual FPhysicsRepLodData * GetLODData_Internal(Chaos::FConstPhysicsObjectHandle PhysicsObject, const uint32 LODFlags=EPhysicsReplicationLODFlags::LODFlag_All) override
Definition PhysicsReplicationLOD.cpp:298
Definition PhysicsReplicationLOD.h:32
virtual ~FPhysicsReplicationLOD()
Definition PhysicsReplicationLOD.cpp:60
virtual void SetEnabled(const bool bInEnabled) override
Definition PhysicsReplicationLOD.cpp:71
virtual IPhysicsReplicationLODAsync * GetPhysicsReplicationLOD_Internal() override
Definition PhysicsReplicationLOD.cpp:134
virtual void UnregisterFocalPoint_External(const UPrimitiveComponent *Component, FName BoneName=NAME_None) override
Definition PhysicsReplicationLOD.cpp:102
virtual void RegisterFocalPoint_External(const UPrimitiveComponent *Component, FName BoneName=NAME_None) override
Definition PhysicsReplicationLOD.cpp:94
virtual bool IsEnabled() const override
Definition PhysicsReplicationLOD.cpp:85
Definition PhysicsReplicationLODInterface.h:55
Definition PhysicsReplicationLODInterface.h:13
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SkeletalMeshComponent.h:307
Definition OverriddenPropertySet.cpp:45
@ false
Definition radaudio_common.h:23
Definition PhysicsObjectInternal.h:16
Definition SimCallbackInput.h:34
Definition PhysicsReplicationLODInterface.h:29
Definition PhysicsReplicationLOD.h:69
TOptional< bool > bEnabled
Definition PhysicsReplicationLOD.h:70
TArray< Chaos::FConstPhysicsObjectHandle > PhysicsObjectsToUnregister
Definition PhysicsReplicationLOD.h:72
void Reset()
Definition PhysicsReplicationLOD.h:74
TArray< Chaos::FConstPhysicsObjectHandle > PhysicsObjectsToRegister
Definition PhysicsReplicationLOD.h:71
Definition PhysicsSettings.h:141
Definition Optional.h:131
void Reset()
Definition Optional.h:306