UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PhysicsSettings.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 PhysicsSettings.h: Declares the PhysicsSettings class.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
11#include "Engine/EngineTypes.h"
12#include "Templates/Casts.h"
15#include "BodySetupEnums.h"
18#include "PhysicsCoreTypes.h"
19#include "PhysicsSettingsCore.h"
20
21#include "PhysicsSettings.generated.h"
22
26USTRUCT()
45
50USTRUCT()
52{
54
56
58 UPROPERTY(EditAnywhere, Category = ChaosPhysics)
59 EChaosThreadingMode DefaultThreadingModel;
60
62 UPROPERTY(EditAnywhere, Category = Framerate)
63 EChaosSolverTickMode DedicatedThreadTickMode;
64
66 UPROPERTY(EditAnywhere, Category = Framerate)
67 EChaosBufferMode DedicatedThreadBufferMode;
68
69 ENGINE_API void OnSettingsUpdated();
70};
71
72UENUM()
73namespace ESettingsDOF
74{
75 enum Type : int
76 {
80 YZPlane,
82 XZPlane,
84 XYPlane,
85 };
86}
87
89USTRUCT()
91{
93
95 UPROPERTY(config, EditDefaultsOnly, Category = "Replication", Meta = (InlineEditConditionToggle))
96 bool bEnableResimulationErrorPositionThreshold;
97
99 UPROPERTY(EditAnywhere, Category = "Replication", meta = (editcondition = "bEnableResimulationErrorPositionThreshold"))
100 float ResimulationErrorPositionThreshold;
101
103 UPROPERTY(config, EditDefaultsOnly, Category = "Replication", Meta = (InlineEditConditionToggle))
104 bool bEnableResimulationErrorRotationThreshold;
105
107 UPROPERTY(EditAnywhere, Category = "Replication", meta = (editcondition = "bEnableResimulationErrorRotationThreshold"))
108 float ResimulationErrorRotationThreshold;
109
111 UPROPERTY(config, EditDefaultsOnly, Category = "Replication", Meta = (InlineEditConditionToggle))
112 bool bEnableResimulationErrorLinearVelocityThreshold;
113
115 UPROPERTY(EditAnywhere, Category = "Replication", meta = (editcondition = "bEnableResimulationErrorLinearVelocityThreshold"))
116 float ResimulationErrorLinearVelocityThreshold;
117
119 UPROPERTY(config, EditDefaultsOnly, Category = "Replication", Meta = (InlineEditConditionToggle))
120 bool bEnableResimulationErrorAngularVelocityThreshold;
121
123 UPROPERTY(EditAnywhere, Category = "Replication", meta = (editcondition = "bEnableResimulationErrorAngularVelocityThreshold"))
124 float ResimulationErrorAngularVelocityThreshold;
125
127 : bEnableResimulationErrorPositionThreshold(true)
128 , ResimulationErrorPositionThreshold(10.0f)
129 , bEnableResimulationErrorRotationThreshold(true)
130 , ResimulationErrorRotationThreshold(4.0f)
131 , bEnableResimulationErrorLinearVelocityThreshold(false)
132 , ResimulationErrorLinearVelocityThreshold(5.0f)
133 , bEnableResimulationErrorAngularVelocityThreshold(false)
134 , ResimulationErrorAngularVelocityThreshold(2.0f)
135 { }
136};
137
139USTRUCT()
141{
143
145 UPROPERTY(config, EditDefaultsOnly, Category = "Replication")
146 bool bEnablePhysicsReplicationLOD;
147
149 UPROPERTY(EditAnywhere, Category = "Replication", meta = (ClampMin = "0.0", UIMin = "0.0"))
150 float MinimumBaseDistance;
151
153 UPROPERTY(EditAnywhere, Category = "Replication", meta = (ClampMin = "0.0", UIMin = "0.0"))
154 float BaseDistanceRadiusMultiplier;
155
160 UPROPERTY(EditAnywhere, Category = "Replication", meta = (ClampMin = "0.0", UIMin = "0.0"))
161 float BaseDistancesForResimulationMode;
162
169 UPROPERTY(EditAnywhere, Category = "Replication", meta = (ClampMin = "0.0", UIMin = "0.0"))
170 float BaseDistancesForFullPrediction;
171
172
178 UPROPERTY(EditAnywhere, Category = "Replication", meta = (ClampMin = "0.0", UIMin = "0.0"))
179 float TimeOverDistance;
180
182 : bEnablePhysicsReplicationLOD(false)
183 , MinimumBaseDistance(200.0f)
184 , BaseDistanceRadiusMultiplier(0.75f)
185 , BaseDistancesForResimulationMode(0.25f)
186 , BaseDistancesForFullPrediction(0.8f)
187 , TimeOverDistance(0.15f)
188 { }
189};
190
192USTRUCT()
194{
196
198 UPROPERTY(config)
199 bool bEnablePhysicsResimulation_DEPRECATED;
200
202 UPROPERTY(config)
203 float ResimulationErrorThreshold_DEPRECATED;
204
209 UPROPERTY(EditAnywhere, Category = "Replication")
210 bool bEnablePhysicsPrediction;
211
215 UPROPERTY(EditAnywhere, Category = "Replication")
216 bool bEnablePhysicsHistoryCapture;
217
219 UPROPERTY(EditAnywhere, Category = "Replication")
220 float MaxSupportedLatencyPrediction;
221
223 UPROPERTY(EditAnywhere, Category = "Replication", meta = (DisplayName = "Default Resimulation Replication Settings (EPhysicsReplicationMode::Resimulation)"))
224 FPhysicsReplicationResimulationSettings ResimulationSettings;
225
227 UPROPERTY(EditAnywhere, Category = "Replication", meta = (DisplayName = "Default settings for physics replication LOD"))
228 FPhysicsReplicationLODSettings PhysicsReplicationLODSettings;
229
231 : bEnablePhysicsResimulation_DEPRECATED(false)
232 , ResimulationErrorThreshold_DEPRECATED(10.0f)
233 , bEnablePhysicsPrediction(false)
234 , bEnablePhysicsHistoryCapture(false)
235 , MaxSupportedLatencyPrediction(1000)
236 { }
237};
238
239UENUM()
241{
242 enum Type : int
243 {
253 Invalid
254 };
255}
256
260UCLASS(config=Engine, defaultconfig, meta=(DisplayName="Physics"), MinimalAPI)
262{
264
265
266 UPROPERTY(Config, EditAnywhere, Category = Replication, meta = (DisplayName = "Physics Prediction (Experimental)"))
268
270 UPROPERTY(config, EditAnywhere, Category = Replication, meta = (DisplayName = "Default Physics Replication Settings (EPhysicsReplicationMode::Default)"))
272
273 UPROPERTY(config)
274 TEnumAsByte<ESettingsLockedAxis::Type> LockedAxis_DEPRECATED;
275
277 UPROPERTY(config, EditAnywhere, Category = Simulation)
278 TEnumAsByte<ESettingsDOF::Type> DefaultDegreesOfFreedom;
279
282 UPROPERTY(config, EditAnywhere, Category = Optimization)
283 bool bSuppressFaceRemapTable;
284
286 UPROPERTY(config, EditAnywhere, Category = Optimization, meta = (DisplayName = "Support UV From Hit Results", ConfigRestartRequired = true))
287 bool bSupportUVFromHitResults;
288
291 UPROPERTY(config, EditAnywhere, Category = Optimization)
292 bool bDisableActiveActors;
293
295 UPROPERTY(config, EditAnywhere, Category = Optimization)
296 bool bDisableKinematicStaticPairs;
297
299 UPROPERTY(config, EditAnywhere, Category = Optimization)
300 bool bDisableKinematicKinematicPairs;
301
304 UPROPERTY(config, EditAnywhere, Category = Simulation)
305 bool bDisableCCD;
306
308 UPROPERTY(config, EditAnywhere, meta = (ClampMin = "0.0", UIMin = "0.0", ClampMax = "1.0", UIMax = "1.0"), Category = Framerate)
309 float AnimPhysicsMinDeltaTime;
310
312 UPROPERTY(config, EditAnywhere, Category = Simulation)
313 bool bSimulateAnimPhysicsAfterReset;
314
316 UPROPERTY(config, EditAnywhere, meta = (ClampMin = "0.0", UIMin = "0.0", ClampMax = "0.0001", UIMax = "0.0001"), Category = Framerate)
317 float MinPhysicsDeltaTime;
318
320 UPROPERTY(config, EditAnywhere, meta=(ClampMin="0.0013", UIMin = "0.0013", ClampMax="1.0", UIMax="1.0"), Category=Framerate)
321 float MaxPhysicsDeltaTime;
322
324 UPROPERTY(config, EditAnywhere, Category = Framerate)
325 bool bSubstepping;
326
328 UPROPERTY(config, EditAnywhere, Category = Framerate)
329 bool bSubsteppingAsync;
330
332 UPROPERTY(config, EditAnywhere, Category = Framerate)
333 bool bTickPhysicsAsync;
334
336 UPROPERTY(config, EditAnywhere, Category = Framerate, meta=(editcondition = "bTickPhysicsAsync"))
337 float AsyncFixedTimeStepSize;
338
340 UPROPERTY(config, EditAnywhere, meta = (ClampMin = "0.0013", UIMin = "0.0013", ClampMax = "1.0", UIMax = "1.0", editcondition = "bSubStepping"), Category=Framerate)
341 float MaxSubstepDeltaTime;
342
344 UPROPERTY(config, EditAnywhere, meta = (ClampMin = "1", UIMin = "1", ClampMax = "16", UIMax = "16", editcondition = "bSubstepping"), Category=Framerate)
345 int32 MaxSubsteps;
346
348 UPROPERTY(config, EditAnywhere, AdvancedDisplay, meta = (ClampMin = "0.0", UIMin = "0.0", ClampMax = "1.0", UIMax = "1.0"), Category = Framerate)
349 float SyncSceneSmoothingFactor;
350
352 UPROPERTY(config, EditAnywhere, AdvancedDisplay, meta = (ClampMin = "0.0013", UIMin = "0.0013", ClampMax = "1.0", UIMax = "1.0"), Category = Framerate)
353 float InitialAverageFrameRate;
354
356 UPROPERTY(config, EditAnywhere, AdvancedDisplay, meta = (ClampMin = "4", UIMin = "4"), Category = Framerate)
357 int PhysXTreeRebuildRate;
358
359 // PhysicalMaterial Surface Types
360 UPROPERTY(config, EditAnywhere, Category=PhysicalSurfaces)
361 TArray<FPhysicalSurfaceName> PhysicalSurfaces;
362
364 UPROPERTY(config, EditAnywhere, Category = Broadphase)
365 FBroadphaseSettings DefaultBroadphaseSettings;
366
368 UPROPERTY(config, EditAnywhere, Category = ChaosPhysics)
369 float MinDeltaVelocityForHitEvents;
370
372 UPROPERTY(config, EditAnywhere, Category = ChaosPhysics)
373 FChaosPhysicsSettings ChaosSettings;
374
375public:
376
377 static UPhysicsSettings* Get() { return CastChecked<UPhysicsSettings>(UPhysicsSettings::StaticClass()->GetDefaultObject()); }
378
379 UFUNCTION(BlueprintCallable, Category = "Physics")
380 int32 GetPhysicsHistoryCount() const
381 {
382 return FMath::Max<int32>(1, FMath::CeilToInt(0.001f * PhysicsPrediction.MaxSupportedLatencyPrediction / AsyncFixedTimeStepSize));
383 }
384
385 ENGINE_API virtual void PostInitProperties() override;
386
387#if WITH_EDITOR
388 ENGINE_API virtual bool CanEditChange( const FProperty* Property ) const override;
389 ENGINE_API virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
390
394
395#endif // WITH_EDITOR
396};
EPhysicalSurface
Definition ChaosEngineInterface.h:21
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
EPhysicsReplicationMode
Definition EngineTypes.h:3378
return true
Definition ExternalRpcRegistry.cpp:601
#define X(Name, Desc)
Definition FormatStringSan.h:47
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
EChaosSolverTickMode
Definition PhysicsCoreTypes.h:12
EChaosThreadingMode
Definition PhysicsCoreTypes.h:21
EChaosBufferMode
Definition PhysicsCoreTypes.h:31
Definition Engine.Build.cs:7
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition Array.h:670
Definition EnumAsByte.h:22
Definition PhysicsSettingsCore.h:20
Definition PhysicsSettings.h:262
static UPhysicsSettings * Get()
Definition PhysicsSettings.h:377
Definition PhysicsSettings.h:74
Type
Definition PhysicsSettings.h:76
@ Full3D
Definition PhysicsSettings.h:78
Definition PhysicsSettings.h:241
Type
Definition PhysicsSettings.h:243
@ false
Definition radaudio_common.h:23
Definition WorldSettings.h:298
Definition PhysicsSettings.h:52
Definition PhysicsSettings.h:28
FPhysicalSurfaceName(EPhysicalSurface InType, const FName &InName)
Definition PhysicsSettings.h:40
Definition PhysicsSettings.h:194
Definition PhysicsSettings.h:141
Definition PhysicsSettings.h:91
Definition UnrealType.h:6865
Definition EngineTypes.h:1719