UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PhysicsObjectInterface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Chaos/ImplicitFwd.h"
11#include "Framework/Threading.h"
13#include "Math/MathFwd.h"
15
16#include "PhysicsObjectInterface.generated.h"
17
18class FChaosScene;
21
22USTRUCT(BlueprintType)
24{
26
27 Chaos::FPhysicsObjectHandle PhysicsObject = nullptr;
28 FVector ClosestLocation;
29 double ClosestDistance = 0.0;
30 operator bool() const
31 {
32 return IsValid();
33 }
34 bool IsValid() const
35 {
36 return PhysicsObject != nullptr;
37 }
38
39 CHAOS_API FName HitName() const;
40};
41
43
44namespace Chaos
45{
46 class FPBDRigidsSolver;
47 class FPerShapeData;
48 struct FMTDInfo;
49
53 template<EThreadContext Id>
55 {
56 public:
61
71
77
78 UE_DEPRECATED(5.3, "GetAllShapes has been deprecated. Please use GetAllThreadShapes instead.")
80
83
84 // Returns true if a shape is found and we can stop iterating.
86
100
102 protected:
104 };
105
108
112 template<EThreadContext Id>
114 {
115 public:
116 CHAOS_API void SetUserDefinedEntity(TArrayView<const FPhysicsObjectHandle> InObjects, FChaosUserDefinedEntity* UserDefinedEntity); // Set the user defined entity, use nullptr to remove the Entity and release the memory
121 UE_DEPRECATED(5.5, "This version of AddTorque has been deprecated. Please use the version with @param bAccelChange")
127
128 UE_DEPRECATED(5.4, "This version of AddRadialImpulse has been deprecated. Please use the version where the strain value is passed explicitly")
129 CHAOS_API void AddRadialImpulse(TArrayView<const FPhysicsObjectHandle> InObjects, FVector Origin, float Radius, float Strength, enum ERadialImpulseFalloff Falloff, bool bApplyStrain, bool bInvalidate, bool bVelChange = false);
130
131 CHAOS_API void AddRadialImpulse(TArrayView<const FPhysicsObjectHandle> InObjects, FVector Origin, float Radius, float Strength, enum ERadialImpulseFalloff Falloff, bool bApplyStrain, float Strain, bool bInvalidate, bool bVelChange = false, float MinValue = 0.f, float MaxValue = 1.f);
134
135 CHAOS_API void UpdateShapeCollisionFlags(TArrayView<const FPhysicsObjectHandle> InObjects, bool bSimCollision, bool bQueryCollision);
136 UE_DEPRECATED(5.7, "Use UpdateCombinedShapeFilterData instead")
139
140 template<typename TPayloadType, typename T, int d>
142 {
143 if (!SpatialAcceleration)
144 {
145 return;
146 }
147
149 {
150 const FBox WorldBounds = this->GetWorldBounds({ &Handle, 1 });
151 const FAABB3 ChaosWorldBounds{ WorldBounds.Min, WorldBounds.Max };
153 SpatialAcceleration->UpdateElementIn(AccelerationHandle, ChaosWorldBounds, true, this->GetSpatialIndex(Handle));
154 }
155 }
156
157 template<typename TPayloadType, typename T, int d>
159 {
160 if (!SpatialAcceleration)
161 {
162 return;
163 }
164
166 {
168 SpatialAcceleration->RemoveElementFrom(AccelerationHandle, this->GetSpatialIndex(Handle));
169 }
170 }
171
173
175 protected:
177 };
178
179
182
189 {
190 public:
191 static CHAOS_API void SetName(const FPhysicsObjectHandle Object, const FName& InName);
193
194#if CHAOS_DEBUG_NAME
196 static CHAOS_API const FString& GetDebugName(const FConstPhysicsObjectHandle Object);
197#endif
200
204
205 protected:
206 // This function should not be called without an appropriate read-lock on the relevant scene.
207 template<EThreadContext Id>
209
210 // This function should not be called without an appropriate write-lock on the relevant scene.
211 template<EThreadContext Id>
213 };
214}
ERadialImpulseFalloff
Definition ChaosEngineInterface.h:91
#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 GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
Definition ParticleHandle.h:213
Definition ImplicitObject.h:111
Definition PBDRigidsSolver.h:84
Definition PhysicsObjectInterface.h:189
static CHAOS_API FPBDRigidsSolver * GetSolver(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:1453
static CHAOS_API void SetName(const FPhysicsObjectHandle Object, const FName &InName)
Definition PhysicsObjectInterface.cpp:1400
static FReadPhysicsObjectInterface< Id > CreateReadInterface()
Definition PhysicsObjectInterface.h:208
static CHAOS_API FName GetName(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:1410
static FWritePhysicsObjectInterface< Id > CreateWriteInterface()
Definition PhysicsObjectInterface.h:212
static CHAOS_API void SetId(const FPhysicsObjectHandle Object, int32 InId)
Definition PhysicsObjectInterface.cpp:1433
static CHAOS_API IPhysicsProxyBase * GetProxy(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:1498
static CHAOS_API int32 GetId(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:1443
Definition PhysicsObjectInterface.h:55
CHAOS_API bool AreAllDynamic(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:614
CHAOS_API bool AreAllRigidBody(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:603
CHAOS_API bool AreAllSleeping(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:592
CHAOS_API FVector GetV(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:315
CHAOS_API FVector GetCoM(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:274
CHAOS_API FClosestPhysicsObjectResult GetClosestPhysicsBodyFromLocation(TArrayView< const FConstPhysicsObjectHandle > InObjects, const FVector &WorldLocation)
Definition PhysicsObjectInterface.cpp:766
CHAOS_API FBox GetWorldBounds(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:734
CHAOS_API TArray< TThreadParticle< Id > * > GetAllParticles(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:433
CHAOS_API bool AreAllValid(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:570
CHAOS_API float GetMass(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:682
CHAOS_API FVector GetVAtPoint(const FConstPhysicsObjectHandle Object, const FVector &Point)
Definition PhysicsObjectInterface.cpp:334
CHAOS_API FVector GetWorldCoM(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:293
CHAOS_API FAccelerationStructureHandle CreateAccelerationStructureHandle(const FConstPhysicsObjectHandle Handle)
Definition PhysicsObjectInterface.cpp:810
CHAOS_API int32 GetClusterHierarchyLevel(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:223
CHAOS_API bool AreAllKinematic(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:581
CHAOS_API bool AreAllDynamicOrSleeping(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:625
CHAOS_API TArray< FPerShapeData * > GetAllShapes(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:482
CHAOS_API FBox GetBounds(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:702
CHAOS_API bool AreAllDisabled(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:636
CHAOS_API FPhysicsObjectHandle GetRootObject(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:179
CHAOS_API FQuat GetR(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:299
CHAOS_API void VisitEveryShape(TArrayView< const FConstPhysicsObjectHandle > InObjects, TFunctionRef< bool(const FConstPhysicsObjectHandle, TThreadShapeInstance< Id > *)> Lambda)
Definition PhysicsObjectInterface.cpp:547
CHAOS_API FChaosUserDefinedEntity * GetUserDefinedEntity(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:196
CHAOS_API TThreadRigidParticle< Id > * GetRigidParticle(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:416
CHAOS_API FTransform GetTransform(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:252
CHAOS_API FVector GetX(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:258
CHAOS_API FImplicitObjectRef GetGeometry(const FConstPhysicsObjectHandle Handle)
Definition PhysicsObjectInterface.cpp:531
CHAOS_API TThreadKinematicParticle< Id > * GetKinematicParticle(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:399
CHAOS_API TArray< TThreadShapeInstance< Id > * > GetAllThreadShapes(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:507
CHAOS_API FSpatialAccelerationIdx GetSpatialIndex(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:373
CHAOS_API bool HasChildren(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:190
CHAOS_API FVector GetW(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:354
CHAOS_API TThreadParticle< Id > * GetParticle(const FConstPhysicsObjectHandle Object)
Definition PhysicsObjectInterface.cpp:389
CHAOS_API TArray< TThreadRigidParticle< Id > * > GetAllRigidParticles(TArrayView< const FConstPhysicsObjectHandle > InObjects, bool bIncludeNulls=false)
Definition PhysicsObjectInterface.cpp:455
CHAOS_API bool AreAllShapesQueryEnabled(TArrayView< const FConstPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:655
Definition PhysicsObjectInterface.h:114
CHAOS_API void SetAngularVelocityInRadians(TArrayView< const FPhysicsObjectHandle > InObjects, const FVector &InAngularVelocity, bool bAddToCurrent=false)
Definition PhysicsObjectInterface.cpp:1077
CHAOS_API void ForceKinematic(TArrayView< const FPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:910
CHAOS_API void AddRadialImpulse(TArrayView< const FPhysicsObjectHandle > InObjects, FVector Origin, float Radius, float Strength, enum ERadialImpulseFalloff Falloff, bool bApplyStrain, bool bInvalidate, bool bVelChange=false)
Definition PhysicsObjectInterface.cpp:1167
CHAOS_API void SetAngularEtherDrag(TArrayView< const FPhysicsObjectHandle > InObjects, float InAngularDrag)
Definition PhysicsObjectInterface.cpp:1284
void AddToSpatialAcceleration(TArrayView< const FPhysicsObjectHandle > InObjects, ISpatialAcceleration< TPayloadType, T, d > *SpatialAcceleration)
Definition PhysicsObjectInterface.h:141
CHAOS_API void WakeUp(TArrayView< const FPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:882
CHAOS_API void SetUserDefinedEntity(TArrayView< const FPhysicsObjectHandle > InObjects, FChaosUserDefinedEntity *UserDefinedEntity)
Definition PhysicsObjectInterface.cpp:816
CHAOS_API void SetLinearImpulseVelocity(TArrayView< const FPhysicsObjectHandle > InObjects, const FVector &Impulse, bool bVelChange)
Definition PhysicsObjectInterface.cpp:1122
void RemoveFromSpatialAcceleration(TArrayView< const FPhysicsObjectHandle > InObjects, ISpatialAcceleration< TPayloadType, T, d > *SpatialAcceleration)
Definition PhysicsObjectInterface.h:158
CHAOS_API void UpdateCombinedShapeFilterData(TArrayView< const FPhysicsObjectHandle > InObjects, const Chaos::Filter::FCombinedShapeFilterData &CombinedShapeFilter)
Definition PhysicsObjectInterface.cpp:1340
CHAOS_API void SetLinearVelocity(TArrayView< const FPhysicsObjectHandle > InObjects, const FVector &InVelocity, bool bAddToCurrent=false)
Definition PhysicsObjectInterface.cpp:1032
CHAOS_API void UpdateShapeFilterData(TArrayView< const FPhysicsObjectHandle > InObjects, const FCollisionFilterData &QueryData, const FCollisionFilterData &SimData)
Definition PhysicsObjectInterface.cpp:1333
CHAOS_API void PutToSleep(TArrayView< const FPhysicsObjectHandle > InObjects)
Definition PhysicsObjectInterface.cpp:864
CHAOS_API void UpdateShapeCollisionFlags(TArrayView< const FPhysicsObjectHandle > InObjects, bool bSimCollision, bool bQueryCollision)
Definition PhysicsObjectInterface.cpp:1310
CHAOS_API void SetLinearEtherDrag(TArrayView< const FPhysicsObjectHandle > InObjects, float InLinearDrag)
Definition PhysicsObjectInterface.cpp:1257
CHAOS_API void AddConnectivityEdgesBetween(TArrayView< const FPhysicsObjectHandle > FromObjects, TArrayView< const FPhysicsObjectHandle > ToObjects, const FClusterCreationParameters &Parameters)
Definition PhysicsObjectInterface.cpp:1360
Definition ISpatialAcceleration.h:267
virtual bool UpdateElementIn(const TPayloadType &Payload, const TAABB< T, d > &NewBounds, bool bHasBounds, FSpatialAccelerationIdx Idx)
Definition ISpatialAcceleration.h:333
virtual bool RemoveElementFrom(const TPayloadType &Payload, FSpatialAccelerationIdx Idx)
Definition ISpatialAcceleration.h:323
Definition ChaosScene.h:88
Definition ChaosUserEntity.h:9
Definition NameTypes.h:617
Definition PhysicsProxyBase.h:97
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition SkeletalMeshComponent.h:307
std::conditional_t< Id==EThreadContext::External, FKinematicGeometryParticle, FKinematicGeometryParticleHandle > TThreadKinematicParticle
Definition ParticleHandleFwd.h:123
std::conditional_t< Id==EThreadContext::External, FGeometryParticle, FGeometryParticleHandle > TThreadParticle
Definition ParticleHandleFwd.h:120
std::conditional_t< Id==EThreadContext::External, FShapeInstanceProxy, FShapeInstance > TThreadShapeInstance
Definition ShapeInstanceFwd.h:33
std::conditional_t< Id==EThreadContext::External, FPBDRigidParticle, FPBDRigidParticleHandle > TThreadRigidParticle
Definition ParticleHandleFwd.h:126
FPBDRigidsSolver FPBDRigidsSolver
Definition PBDRigidsEvolutionFwd.h:15
int
Definition TestServer.py:515
Definition ClusterCreationParameters.h:14
Definition PhysicsObjectInternal.h:16
Definition GeometryParticlesfwd.h:59
Definition CollisionFilterData.h:187
Definition PhysicsObjectInterface.h:24
bool IsValid() const
Definition PhysicsObjectInterface.h:34
Definition CollisionFilterData.h:46
TVector< T > Min
Definition Box.h:39
TVector< T > Max
Definition Box.h:42