UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PhysicsAsset.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "UObject/Object.h"
10#include "PhysicsAsset.generated.h"
11
12namespace ECollisionEnabled { enum Type : int; }
13namespace EAggCollisionShape { enum Type : int; }
14
18
22
23
29USTRUCT(BlueprintType)
31{
33
35
40 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings)
41 int32 PositionIterations;
42
47 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings)
48 int32 VelocityIterations;
49
57 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings)
58 int32 ProjectionIterations;
59
64 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMin = 0))
65 float CullDistance;
66
70 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMin = 0))
71 float MaxDepenetrationVelocity;
72
78 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMin = 0))
79 float FixedTimeStep;
80
87 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings)
88 bool bUseLinearJointSolver;
89
94 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = CollisionSettings)
95 bool bUseManifolds;
96};
97
98
105USTRUCT(BlueprintType)
107{
109
111
115 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMax = 50))
116 int32 SolverIterations;
117
121 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMax = 50))
122 int32 JointIterations;
123
127 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMax = 50))
128 int32 CollisionIterations;
129
134 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMax = 50))
135 int32 SolverPushOutIterations;
136
140 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMax = 50))
141 int32 JointPushOutIterations;
142
146 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SolverSettings, meta = (ClampMax = 50))
147 int32 CollisionPushOutIterations;
148};
149
150
151
152
153UENUM()
155{
156 RBAN,
157 World,
158};
159
172{
174
175#if WITH_EDITORONLY_DATA
180 UPROPERTY()
182
183 UPROPERTY(AssetRegistrySearchable)
185
186 UPROPERTY(EditAnywhere, Category = Profiles, meta=(DisableCopyPaste))
188
189 UPROPERTY(EditAnywhere, Category = Profiles, meta=(DisableCopyPaste))
191
193 UPROPERTY()
195
198
201
202#endif // WITH_EDITORONLY_DATA
203
205 UPROPERTY()
206 TArray<int32> BoundsBodies;
207
213 TArray<TObjectPtr<USkeletalBodySetup>> SkeletalBodySetups;
214
221
222public:
223
227 UPROPERTY(EditAnywhere, Category = SolverSettings, Config)
229
238 UPROPERTY(VisibleAnywhere, Category = OldSolverSettings, Config, Meta = (DisplayName="[Not Used] Old Solver Settings"))
239 FSolverIterations SolverIterations;
240
246 UPROPERTY(EditAnywhere, Category = SolverSettings)
248
249
251 UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Physics)
252 uint8 bNotForDedicatedServer:1;
253
255 TMap<FName, int32> BodySetupIndexMap;
256
261 TMap<FRigidBodyIndexPair,bool> CollisionDisableTable;
262
264 UPROPERTY(VisibleAnywhere, Instanced, Category = Thumbnail)
266
267 //~ Begin UObject Interface
270#if WITH_EDITORONLY_DATA
272#endif
273 virtual FString GetDesc() override;
274 virtual void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const override;
275 UE_DEPRECATED(5.4, "Implement the version that takes FAssetRegistryTagsContext instead.")
278#if WITH_EDITOR
279 virtual void PostEditUndo() override;
280
282 {
284 }
285
287 {
288 return ConstraintProfiles;
289 }
290
291 virtual void PreEditChange(FProperty* PropertyThatWillChange) override;
292 virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
293 virtual EDataValidationResult IsDataValid(class FDataValidationContext& Context) const override;
294#endif
295 //~ End UObject Interface
296
297 // Find the index of the physics bone that is controlling this graphics bone.
298 ENGINE_API int32 FindControllingBodyIndex(const class USkeletalMesh* skelMesh, int32 BoneIndex) const;
299 ENGINE_API int32 FindParentBodyIndex(const class USkeletalMesh * skelMesh, int32 StartBoneIndex) const;
300 ENGINE_API int32 FindParentBodyIndex(const FReferenceSkeleton& RefSkeleton, const int32 StartBoneIndex) const;
301 ENGINE_API int32 FindConstraintIndex(FName ConstraintName) const;
302 ENGINE_API int32 FindConstraintIndex(FName Bone1Name, FName Bone2Name) const;
303 FName FindConstraintBoneName(int32 ConstraintIndex) const;
304 ENGINE_API int32 FindMirroredBone(const class USkeletalMesh* skelMesh, int32 BoneIndex) const;
305
307 ENGINE_API void GetBodyIndicesBelow(TArray<int32>& OutBodyIndices, FName InBoneName, const USkeletalMesh* InSkelMesh, bool bIncludeParent = true) const;
308 ENGINE_API void GetBodyIndicesBelow(TArray<int32>& OutBodyIndices, const FName InBoneName, const FReferenceSkeleton& RefSkeleton, const bool bIncludeParent = true) const;
309
310 ENGINE_API void GetNearestBodyIndicesBelow(TArray<int32> & OutBodyIndices, FName InBoneName, const USkeletalMesh* InSkelMesh) const;
311
312 ENGINE_API FBox CalcAABB(const class USkinnedMeshComponent* MeshComponent, const FTransform& LocalToWorld) const;
313
315 ENGINE_API void ClearAllPhysicsMeshes();
316
317#if WITH_EDITOR
322 ENGINE_API bool CanCalculateValidAABB(const class USkinnedMeshComponent* MeshComponent, const FTransform& LocalToWorld) const;
323
326#endif
327
328 // @todo document
329 void GetCollisionMesh(int32 ViewIndex, FMeshElementCollector& Collector, const FReferenceSkeleton& RefSkeleton, const TArray<FTransform>& SpaceBases, const FTransform& LocalToWorld, const FVector& Scale3D) const;
330
331 // @todo document
332 void DrawConstraints(int32 ViewIndex, FMeshElementCollector& Collector, const FReferenceSkeleton& RefSkeleton, const TArray<FTransform>& SpaceBases, const FTransform& LocalToWorld, float Scale) const;
333
334 ENGINE_API void GetUsedMaterials(TArray<UMaterialInterface*>& Materials);
335
336 // Disable collsion between the bodies specified by index
337 ENGINE_API void DisableCollision(int32 BodyIndexA, int32 BodyIndexB);
338
339 // Enable collsion between the bodies specified by index
341
342 // Check whether the two bodies specified are enabled for collision
343 ENGINE_API bool IsCollisionEnabled(int32 BodyIndexA, int32 BodyIndexB) const;
344
345 // Get the per-primitive collision filtering mode for a body
346 ENGINE_API void SetPrimitiveCollision(int32 BodyIndex, EAggCollisionShape::Type PrimitiveType, int32 PrimitiveIndex, ECollisionEnabled::Type CollisionEnabled);
347
348 // Get the per-primitive collision filtering mode for a body
349 ENGINE_API ECollisionEnabled::Type GetPrimitiveCollision(int32 BodyIndex, EAggCollisionShape::Type PrimitiveType, int32 PrimitiveIndex) const;
350
351 // Set whether or not a primitive volume contributes to the mass of the object
352 ENGINE_API void SetPrimitiveContributeToMass(int32 BodyIndex, EAggCollisionShape::Type PrimitiveType, int32 PrimitiveIndex, bool bContributesToMass);
353
354 // Get whether or not a primitive volume contributes to the mass of the object
355 ENGINE_API bool GetPrimitiveContributeToMass(int32 BodyIndex, EAggCollisionShape::Type PrimitiveType, int32 PrimitiveIndex) const;
356
358 ENGINE_API void UpdateBoundsBodiesArray();
359
361 ENGINE_API void UpdateBodySetupIndexMap();
362
363
364 // @todo document
365 ENGINE_API int32 FindBodyIndex(FName BodyName) const;
366
372 ENGINE_API void BodyFindConstraints(int32 BodyIndex, TArray<int32>& Constraints);
373
374#if WITH_EDITOR
377#endif
378
383 virtual void SetPreviewMesh(USkeletalMesh* PreviewMesh, bool bMarkAsDirty = true);
384 virtual USkeletalMesh* GetPreviewMesh() const;
385
386#if WITH_EDITOR
391 UFUNCTION(BlueprintCallable, Category = "Physics|Constraints")
393
399 UFUNCTION(BlueprintCallable, Category = "Physics|Constraints")
401
406 UFUNCTION(BlueprintCallable, Category = "Physics|Constraints")
408
411#endif
412
413private:
414
415#if WITH_EDITORONLY_DATA
419#endif
420
421
423 TArray<TObjectPtr<class UBodySetup>> BodySetup_DEPRECATED;
424
425 // Asset User Data
426public:
427 ENGINE_API void AddAssetUserData(UAssetUserData* InUserData) override;
428 ENGINE_API void RemoveUserDataOfClass(TSubclassOf<UAssetUserData> InUserDataClass) override;
429 ENGINE_API UAssetUserData* GetAssetUserDataOfClass(TSubclassOf<UAssetUserData> InUserDataClass) override;
430 ENGINE_API const TArray<UAssetUserData*>* GetAssetUserDataArray() const override;
431
432private:
433 UPROPERTY(EditAnywhere, AdvancedDisplay, Instanced, Category = UserData)
435};
436
437
438#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
439#include "CoreMinimal.h"
440#include "Engine/SkeletalMesh.h"
444#endif
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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 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
EPhysicsAssetSolverType
Definition PhysicsAsset.h:155
EDataValidationResult
Definition UObjectGlobals.h:4225
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Constraints.Build.cs:6
Definition Archive.h:1208
Definition AssetRegistryTagsContext.h:98
Definition DataValidation.h:40
Definition MeshElementCollector.h:26
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition Interface_AssetUserData.h:20
Definition Interface_PreviewMeshProvider.h:20
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SubclassOf.h:30
Definition AssetUserData.h:18
virtual void GetResourceSizeEx(FResourceSizeEx &CumulativeResourceSize) override
Definition BodySetup.cpp:1635
Definition Class.h:3793
Definition MaterialInterface.h:296
Definition Object.h:95
virtual COREUOBJECT_API void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const
Definition Obj.cpp:2423
virtual FString GetDesc()
Definition Object.h:704
Definition PhysicsAsset.h:172
static ENGINE_API FRefreshPhysicsAssetChangeDelegate OnRefreshPhysicsAssetChange
Definition PhysicsAsset.h:381
DECLARE_MULTICAST_DELEGATE_OneParam(FRefreshPhysicsAssetChangeDelegate, const UPhysicsAsset *)
Definition SkeletalBodySetup.h:26
Definition SkeletalMesh.h:440
Definition SkinnedMeshComponent.h:258
Definition ThumbnailInfo.h:16
Definition PhysicsAsset.h:13
Type
Definition ShapeElem.h:17
Definition EngineTypes.h:1571
Type
Definition EngineTypes.h:1573
const FName EnableCollision("EnableCollision")
int
Definition TestServer.py:515
U16 Index
Definition radfft.cpp:71
Definition ConstraintInstance.h:1238
Definition ConstraintInstance.h:255
Definition PhysicsAsset.h:31
Definition UnrealType.h:6865
Definition ReferenceSkeleton.h:100
Definition ResourceSize.h:31
Definition RigidBodyIndexPair.h:11
Definition PhysicsAsset.h:107
Definition ObjectPtr.h:488
Definition SoftObjectPtr.h:174
Definition Object.h:827