UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PhysInterface_Chaos.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Chaos/Declares.h"
9#include "PhysicsInterfaceWrapperShared.h"
15
16//NOTE: Do not include Chaos headers directly as it means recompiling all of engine. This should be reworked to avoid allocations
17
20static int32 NextBodyIdValue = 0;
21static int32 NextConstraintIdValue = 0;
22
24struct FBodyInstance;
25struct FPhysxUserData;
26struct FConstraintDrive;
29
30
31class AWorldSettings;
33
35{
36public:
37 ENGINE_API FPhysInterface_Chaos(const AWorldSettings* Settings=nullptr);
39
40 // Describe the interface to identify it to the caller
41 static FString GetInterfaceDescription() { return TEXT("Chaos"); }
42
44
45 // Material mask functions
48
49 // Actor interface functions
50
52
55
58
65
66
69
71
72 // Interface needed for cmd
74 static ENGINE_API bool ExecuteRead(USkeletalMeshComponent* InMeshComponent, TFunctionRef<void()> InCallable);
79
81 // TODO_CHAOSAPI: Deprecate non-const ref API
83 static ENGINE_API bool ExecuteWrite(USkeletalMeshComponent* InMeshComponent, TFunctionRef<void()> InCallable);
89
91
96
97 // Misc
98
99 static ENGINE_API bool ExecPhysCommands(const TCHAR* Cmd, FOutputDevice* Ar, UWorld* InWorld);
100
102
103 // Shape interface functions
105
108
109 UE_DEPRECATED(5.4, "Use CreateGeometry with FImplicitObjectPtr instead")
111
112 // Trace functions for testing specific geometry (not against a world)
114 static ENGINE_API bool Sweep_Geom(FHitResult& OutHit, const FBodyInstance* InInstance, const FVector& InStart, const FVector& InEnd, const FQuat& InShapeRotation, const FCollisionShape& InShape, bool bSweepComplex);
118
121};
122
123/*
124FORCEINLINE ECollisionShapeType GetType(const Chaos::FImplicitObject& Geom)
125{
126 if (Geom.GetType() == Chaos::ImplicitObjectType::Box)
127 {
128 return ECollisionShapeType::Box;
129 }
130 if (Geom.GetType() == Chaos::ImplicitObjectType::Sphere)
131 {
132 return ECollisionShapeType::Sphere;
133 }
134 if (Geom.GetType() == Chaos::ImplicitObjectType::Plane)
135 {
136 return ECollisionShapeType::Plane;
137 }
138 return ECollisionShapeType::None;
139}
140*/
142
143/*
144FORCEINLINE float GetRadius(const Chaos::FCapsule& Capsule)
145{
146 return Capsule.GetRadius();
147}
148
149FORCEINLINE float GetHalfHeight(const Chaos::FCapsule& Capsule)
150{
151 return Capsule.GetHeight() / 2.f;
152}
153*/
154
156{
157 //TODO_SQ_IMPLEMENTATION
158}
159
161{
162 //TODO_SQ_IMPLEMENTATION
163}
164
166{
167 //TODO_SQ_IMPLEMENTATION
168}
169
171{
172 //TODO_SQ_IMPLEMENTATION
173}
174
176
178
180
185
186inline void SetShape(FPhysTypeDummy& Hit, FPhysTypeDummy* Shape)
187{
188
189}
190
191bool IsBlocking(const FPhysicsShape& PShape, const FCollisionFilterData& QueryFilter);
EAngularConstraintMotion
Definition ChaosEngineInterface.h:114
ELinearConstraintMotion
Definition ChaosEngineInterface.h:187
EPhysicsInterfaceScopedTransactionMode
Definition ChaosScopedSceneLock.h:22
EPhysicsInterfaceScopedThreadContext
Definition ChaosScopedSceneLock.h:16
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
void ComputeZeroDistanceImpactNormalAndPenetration(const UWorld *World, const ChaosInterface::FLocationHit &Hit, const Chaos::FImplicitObject &Geom, const FTransform &QueryTM, FHitResult &OutResult)
Definition PhysInterface_Chaos.h:160
bool IsBlocking(const FPhysicsShape &PShape, const FCollisionFilterData &QueryFilter)
Definition CollisionConversions.cpp:780
ECollisionShapeType GetGeometryType(const Chaos::FPerShapeData &Shape)
Definition PhysInterface_Chaos.cpp:67
void DrawOverlappingTris(const UWorld *World, const ChaosInterface::FLocationHit &Hit, const Chaos::FImplicitObject &Geom, const FTransform &QueryTM)
Definition PhysInterface_Chaos.h:155
uint32 GetTriangleMeshExternalFaceIndex(const FPhysicsShape &Shape, uint32 InternalFaceIndex)
Definition PhysInterface_Chaos.cpp:1296
void GetShapes(const FPhysActorDummy &RigidActor, FPhysTypeDummy **ShapesBuffer, uint32 NumShapes)
Definition PhysInterface_Chaos.h:181
Chaos::FChaosPhysicsMaterial * GetMaterialFromInternalFaceIndex(const FPhysicsShape &Shape, const FPhysicsActor &Actor, uint32 InternalFaceIndex)
Definition PhysInterface_Chaos.cpp:72
void SetShape(FPhysTypeDummy &Hit, FPhysTypeDummy *Shape)
Definition PhysInterface_Chaos.h:186
Chaos::FChaosPhysicsMaterial * GetMaterialFromInternalFaceIndexAndHitLocation(const FPhysicsShape &Shape, const FPhysicsActor &Actor, uint32 InternalFaceIndex, const FVector &HitLocation)
Definition PhysInterface_Chaos.cpp:98
ECollisionShapeType
Definition PhysicsInterfaceTypesCore.h:49
const bool bTraceComplex
Definition PhysicsInterfaceUtils.h:19
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Defines.h:85
Definition ImplicitObject.h:111
Definition ShapeInstance.h:36
Definition SingleParticlePhysicsProxy.h:58
Definition ParticleHandle.h:2739
Definition ChaosEngineInterface.h:347
UE_DEPRECATED(5.7, "Use GetCombinedShapeFilterData instead") static PHYSICSCORE_API FCollisionFilterData GetSimulationFilter(const FPhysicsShapeHandle &InShape)
Definition OutputDevice.h:133
Definition PhysInterface_Chaos.h:35
static ENGINE_API FPhysicsMaterialMaskHandle CreateMaterialMask(const UPhysicalMaterialMask *InMaterialMask)
Definition PhysInterface_Chaos.cpp:182
static ENGINE_API bool ExecPhysCommands(const TCHAR *Cmd, FOutputDevice *Ar, UWorld *InWorld)
Definition PhysUtils.cpp:340
static ENGINE_API void UpdateMaterialMask(FPhysicsMaterialMaskHandle &InHandle, const UPhysicalMaterialMask *InMaterialMask)
Definition PhysInterface_Chaos.cpp:189
ENGINE_API ~FPhysInterface_Chaos()
Definition PhysInterface_Chaos.cpp:178
static ENGINE_API void AddGeometry(const FPhysicsActorHandle &InActor, const FGeometryAddParams &InParams, TArray< FPhysicsShapeHandle > *OutOptShapes=nullptr)
Definition PhysInterface_Chaos.cpp:762
static ENGINE_API void SetLinearMotionLimitType_AssumesLocked(const FPhysicsConstraintHandle &InConstraintRef, PhysicsInterfaceTypes::ELimitAxis InAxis, ELinearConstraintMotion InMotion)
Definition PhysInterface_Chaos.cpp:249
static ENGINE_API void CalculateMassPropertiesFromShapeCollection(Chaos::FMassProperties &OutProperties, const TArray< FPhysicsShapeHandle > &InShapes, float InDensityKGPerCM)
Definition PhysInterface_Chaos.cpp:1302
static ENGINE_API const FBodyInstance * ShapeToOriginalBodyInstance(const FBodyInstance *InCurrentInstance, const Chaos::FPerShapeData *InShape)
Definition PhysInterface_Chaos.cpp:737
static ENGINE_API bool Overlap_Geom(const FBodyInstance *InBodyInstance, const FPhysicsGeometryCollection &InGeometry, const FTransform &InShapeTransform, FMTDResult *OutOptResult=nullptr, bool bTraceComplex=false)
Definition PhysInterface_Chaos.cpp:1179
static ENGINE_API bool IsInScene(const FPhysicsActorHandle &InActorReference)
Definition PhysInterface_Chaos.cpp:226
static ENGINE_API bool Sweep_Geom(FHitResult &OutHit, const FBodyInstance *InInstance, const FVector &InStart, const FVector &InEnd, const FQuat &InShapeRotation, const FCollisionShape &InShape, bool bSweepComplex)
Definition PhysInterface_Chaos.cpp:1003
static ENGINE_API void CreateGeometry(const FGeometryAddParams &InParams, TArray< Chaos::FImplicitObjectPtr > &OutGeoms, Chaos::FShapesArray &OutShapes, TArray< FPhysicsShapeHandle > *OutOptShapes)
static ENGINE_API bool ExecuteWrite(const FPhysicsActorHandle &InActorReference, TFunctionRef< void(const FPhysicsActorHandle &Actor)> InCallable)
Definition PhysInterface_Chaos.cpp:589
static ENGINE_API bool ExecuteRead(const FPhysicsActorHandle &InActorReference, TFunctionRef< void(const FPhysicsActorHandle &Actor)> InCallable)
Definition PhysInterface_Chaos.cpp:532
static ENGINE_API void ExecuteShapeWrite(FBodyInstance *InInstance, FPhysicsShapeHandle &InShape, TFunctionRef< void(FPhysicsShapeHandle &InShape)> InCallable)
Definition PhysInterface_Chaos.cpp:670
static ENGINE_API bool ExecuteOnUnbrokenConstraintReadOnly(const FPhysicsConstraintHandle &InConstraintRef, TFunctionRef< void(const FPhysicsConstraintHandle &)> Func)
Definition PhysInterface_Chaos.cpp:510
static ENGINE_API void UpdateTwistLimitParams_AssumesLocked(const FPhysicsConstraintHandle &InConstraintRef, float InAverageMass, const FTwistConstraint &InParams)
Definition PhysInterface_Chaos.cpp:359
static ENGINE_API bool ExecuteOnUnbrokenConstraintReadWrite(const FPhysicsConstraintHandle &InConstraintRef, TFunctionRef< void(const FPhysicsConstraintHandle &)> Func)
Definition PhysInterface_Chaos.cpp:521
static ENGINE_API void FlushScene(FPhysScene *InScene)
Definition PhysInterface_Chaos.cpp:231
static ENGINE_API bool LineTrace_Geom(FHitResult &OutHit, const FBodyInstance *InInstance, const FVector &InStart, const FVector &InEnd, bool bTraceComplex, bool bExtractPhysMaterial=false)
Definition PhysInterface_Chaos.cpp:905
static ENGINE_API void UpdateDriveTarget_AssumesLocked(const FPhysicsConstraintHandle &InConstraintRef, const FLinearDriveConstraint &InLinDrive, const FAngularDriveConstraint &InAngDrive, bool InInitialize=false)
Definition PhysInterface_Chaos.cpp:501
static ENGINE_API FPhysicsShapeHandle CreateShape(physx::PxGeometry *InGeom, bool bSimulation=true, bool bQuery=true, UPhysicalMaterial *InSimpleMaterial=nullptr, TArray< UPhysicalMaterial * > *InComplexMaterials=nullptr)
Definition PhysInterface_Chaos.cpp:729
static ENGINE_API void UpdateAngularDrive_AssumesLocked(const FPhysicsConstraintHandle &InConstraintRef, const FAngularDriveConstraint &InDriveParams, bool InInitialize=false)
Definition PhysInterface_Chaos.cpp:423
static ENGINE_API void UpdateLinearDrive_AssumesLocked(const FPhysicsConstraintHandle &InConstraintRef, const FLinearDriveConstraint &InDriveParams, bool InInitialize=false)
Definition PhysInterface_Chaos.cpp:380
static ENGINE_API void SetMaterials(const FPhysicsShapeHandle &InShape, const TArrayView< UPhysicalMaterial * >InMaterials)
Definition PhysInterface_Chaos.cpp:816
static FString GetInterfaceDescription()
Definition PhysInterface_Chaos.h:41
static ENGINE_API bool GetSquaredDistanceToBody(const FBodyInstance *InInstance, const FVector &InPoint, float &OutDistanceSquared, FVector *OutOptPointOnBody=nullptr)
Definition PhysInterface_Chaos.cpp:1190
static ENGINE_API FPhysScene * GetCurrentSceneForComponent(USceneComponent *InComponent)
Definition PhysInterface_Chaos.cpp:202
static ENGINE_API void SetAngularMotionLimitType_AssumesLocked(const FPhysicsConstraintHandle &InConstraintRef, PhysicsInterfaceTypes::ELimitAxis InAxis, EAngularConstraintMotion InMotion)
Definition PhysInterface_Chaos.cpp:289
static ENGINE_API void UpdateConeLimitParams_AssumesLocked(const FPhysicsConstraintHandle &InConstraintRef, float InAverageMass, const FConeConstraint &InParams)
Definition PhysInterface_Chaos.cpp:338
static ENGINE_API void UpdateLinearLimitParams_AssumesLocked(const FPhysicsConstraintHandle &InConstraintRef, float InLimit, float InAverageMass, const FLinearConstraint &InParams)
Definition PhysInterface_Chaos.cpp:320
Definition PhysScene_Chaos.h:116
Definition ChaosEngineInterface.h:247
Definition ChaosEngineInterface.h:263
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UniquePtr.h:107
Definition PhysicalMaterialMask.h:22
Definition PhysicalMaterial.h:104
Definition World.h:918
Definition SkeletalMeshComponent.h:307
ELimitAxis
Definition ChaosEngineInterface.h:140
Definition ChaosInterfaceWrapperCore.h:29
Definition ChaosInterfaceWrapperCore.h:28
Definition SQTypes.h:63
Definition SQTypes.h:134
Definition MassProperties.h:24
Definition PhysicalMaterials.h:63
Definition PhysicsObjectInternal.h:16
Definition ConstraintDrives.h:125
Definition BodyInstance.h:320
Definition CollisionFilterData.h:46
Definition CollisionShape.h:21
Definition ConstraintTypes.h:72
Definition ConstraintDrives.h:24
Definition GenericPhysicsInterface.h:26
Definition PhysicsInterfaceTypes.h:43
Definition HitResult.h:21
Definition ConstraintTypes.h:43
Definition ConstraintDrives.h:66
Definition EngineTypes.h:2418
Definition ChaosEngineInterface.h:304
Definition PhysxUserData.h:37
Definition ConstraintTypes.h:100