UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ExternalCollisionData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3#include "Chaos/Box.h"
6#include "Chaos/Vector.h"
7//
8// NOTE: This file is widely included in Engine code.
9// Avoid including Chaos headers when possible.
10//
11
12
15
16namespace Chaos
17{
18 // Event Emitter flag
26
52
57 {
59 : Location(FVec3((FReal)0.0))
61 , Normal(FVec3((FReal)0.0))
62 , Velocity1(FVec3((FReal)0.0))
63 , Velocity2(FVec3((FReal)0.0))
68 , Mass1((FReal)0.0)
69 , Mass2((FReal)0.0)
73 , bProbe(false)
74 , Proxy1(nullptr)
75 , Proxy2(nullptr)
78 , SolverTime((FReal)0.0)
79 {}
80
105
120 bool bProbe;
121
122 // The pointers to the proxies should be used with caution on the Game Thread.
123 // Ideally we only ever use these as table keys when acquiring related structures.
124 // If we genuinely need to dereference the pointers for any reason, test if they are deleted (nullptr) or
125 // pending deletion: if a call to FPhysScene_Chaos::GetOwningComponent<UPrimitiveComponent>() returns
126 // nullptr, the proxies should not be used.
127 // If either Proxy is nullptr, the structure is invalid.
130
133
135 };
136
137 /*
138 CollisionData used in the subsystems
139 */
141 {
143 : Location(FVec3((FReal)0.0))
145 , Normal(FVec3((FReal)0.0))
146 , Velocity1(FVec3((FReal)0.0))
147 , Velocity2(FVec3((FReal)0.0))
150 , Mass1((FReal)0.0)
151 , Mass2((FReal)0.0)
152 , BoundingboxVolume((FReal)-1.0)
155 , SurfaceType1(-1)
156 , SurfaceType2(-1)
157 {}
158
178
196
207 };
208
209 /*
210 BreakingData passed from the physics solver to subsystems
211 */
213 {
216 , Proxy(nullptr)
217 , Location(FVec3((FReal)0.0))
218 , Orientation(FRotation3::Identity)
219 , Velocity(FVec3((FReal)0.0))
221 , Mass((FReal)0.0)
222 , BoundingBox(FAABB3(FVec3((FReal)0.0), FVec3((FReal)0.0)))
225 {}
226
227 // The pointer to the proxy should be used with caution on the Game Thread.
228 // Ideally we only ever use this as a table key when acquiring related structures.
229 // If we genuinely need to dereference the pointer for any reason, test if it is deleted (nullptr) or
230 // pending deletion: if a call to FPhysScene_Chaos::GetOwningComponent<UPrimitiveComponent>() returns
231 // nullptr, the proxy should not be used.
233
242 };
243
244 /*
245 CrumblingData passed from the physics solver to subsystems
246 */
248 {
251 , Proxy(nullptr)
252 , Location(FVec3::ZeroVector)
253 , Orientation(FRotation3::Identity)
254 , LinearVelocity(FVec3::ZeroVector)
255 , AngularVelocity(FVec3::ZeroVector)
256 , Mass((FReal)0.0)
257 , LocalBounds(FAABB3(FVec3((FReal)0.0), FVec3((FReal)0.0)))
258 {}
259
260 // The pointer to the proxy should be used with caution on the Game Thread.
261 // Ideally we only ever use this as a table key when acquiring related structures.
262 // If we genuinely need to dereference the pointer for any reason, test if it is deleted (nullptr) or
263 // pending deletion: if a call to FPhysScene_Chaos::GetOwningComponent<UPrimitiveComponent>() returns
264 // nullptr, the proxy should not be used.
266
273 // optional ( see proxy options )
275 };
276
277 /*
278 BreakingData used in the subsystems
279 */
281 {
283 : Location(FVec3((FReal)0.0))
284 , Velocity(FVec3((FReal)0.0))
286 , Mass((FReal)0.0)
287 , BoundingboxVolume((FReal)-1.0)
290 , SurfaceType(-1)
291 {}
292
311
323
331
335
337
338 // Please don't be tempted to add the code below back. Holding onto a UObject pointer without the GC knowing about it is
339 // not a safe thing to do.
340 //UPhysicalMaterial* PhysicalMaterialTest;
342 };
343
344 /*
345 TrailingData passed from the physics solver to subsystems
346 */
348 {
350 : Location(FVec3((FReal)0.0))
351 , Orientation(FRotation3::Identity)
352 , Velocity(FVec3((FReal)0.0))
354 , Mass((FReal)0.0)
355 , Proxy(nullptr)
356 , BoundingBox(FAABB3(FVec3((FReal)0.0), FVec3((FReal)0.0)))
358 {}
359
360 UE_DEPRECATED(5.6, "Deprecated constructor")
371
377
378 // The pointer to the proxy should be used with caution on the Game Thread.
379 // Ideally we only ever use this as a table key when acquiring related structures.
380 // If we genuinely need to dereference the pointer for any reason, test if it is deleted (nullptr) or
381 // pending deletion: if a call to FPhysScene_Chaos::GetOwningComponent<UPrimitiveComponent>() returns
382 // nullptr, the proxy should not be used.
384
387 };
388
389 /*
390 TrailingData used in subsystems
391 */
443
445 {
447 : Proxy(nullptr)
448 , Sleeping(true)
449 {}
450
455
456 // The pointer to the proxy should be used with caution on the Game Thread.
457 // Ideally we only ever use this as a table key when acquiring related structures.
458 // If we genuinely need to dereference the pointer for any reason, test if it is deleted (nullptr) or
459 // pending deletion: if a call to FPhysScene_Chaos::GetOwningComponent<UPrimitiveComponent>() returns
460 // nullptr, the proxy should not be used.
462
463 bool Sleeping; // if !Sleeping == Awake
464 };
465
466 /*
467 RemovalData passed from the physics solver to subsystems
468 */
470 {
472 : Location(FVec3((FReal)0.0))
473 , Mass((FReal)0.0)
474 , Proxy(nullptr)
475 , BoundingBox(FAABB3(FVec3((FReal)0.0), FVec3((FReal)0.0)))
476 {}
477
484
487
488 // The pointer to the proxy should be used with caution on the Game Thread.
489 // Ideally we only ever use this as a table key when acquiring related structures.
490 // If we genuinely need to dereference the pointer for any reason, test if it is deleted (nullptr) or
491 // pending deletion: if a call to FPhysScene_Chaos::GetOwningComponent<UPrimitiveComponent>() returns
492 // nullptr, the proxy should not be used.
494
496 };
497
498 /*
499 RemovalData used in subsystems
500 */
542
543 template<class T, int d>
544 using TCollisionData UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FCollidingData instead") = FCollidingData;
545
546 template<class T, int d>
547 using TCollisionDataExt UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FCollidingDataExt instead") = FCollidingDataExt;
548
549 template<class T, int d>
550 using TBreakingData UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FBreakingData instead") = FBreakingData;
551
552 template<class T, int d>
553 using TBreakingDataExt UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FBreakingDataExt instead") = FBreakingDataExt;
554
555 template<class T, int d>
556 using TTrailingData UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FTrailingData instead") = FTrailingData;
557
558 template<class T, int d>
559 using TTrailingDataExt UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FTrailingDataExt instead") = FTrailingDataExt;
560
561 template<class T, int d>
562 using TSleepingData UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FSleepingData instead") = FSleepingData;
563}
564
565
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#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
return true
Definition ExternalRpcRegistry.cpp:601
Definition ParticleHandle.h:436
Definition NameTypes.h:617
Definition PhysicsProxyBase.h:97
Definition Array.h:670
Definition PhysicalMaterial.h:104
Definition SkeletalMeshComponent.h:307
EventEmitterFlag
Definition ExternalCollisionData.h:20
@ GlobalDispatcher
Definition ExternalCollisionData.h:23
@ EmptyDispatcher
Definition ExternalCollisionData.h:21
@ OwnDispatcher
Definition ExternalCollisionData.h:22
@ BothDispatcher
Definition ExternalCollisionData.h:24
FRealDouble FReal
Definition Real.h:22
@ false
Definition radaudio_common.h:23
Definition ExternalCollisionData.h:28
EventEmitterFlag EmitterFlag
Definition ExternalCollisionData.h:50
FBaseEventFlag()
Definition ExternalCollisionData.h:29
static EventEmitterFlag ComputeEmitterFlag(bool LocalEmitter, bool GlobalEmitter)
Definition ExternalCollisionData.h:36
void SetEmitterFlag(bool LocalEmitter, bool GlobalEmitter)
Definition ExternalCollisionData.h:31
Definition ExternalCollisionData.h:281
FReal BoundingboxVolume
Definition ExternalCollisionData.h:328
FBreakingDataExt()
Definition ExternalCollisionData.h:282
FVec3 AngularVelocity
Definition ExternalCollisionData.h:326
FVec3 Location
Definition ExternalCollisionData.h:324
FBreakingDataExt(const FBreakingData &InBreakingData)
Definition ExternalCollisionData.h:312
FQuat TransformRotation
Definition ExternalCollisionData.h:333
FVector TransformScale
Definition ExternalCollisionData.h:334
FBreakingDataExt(FVec3 InLocation, FVec3 InVelocity, FVec3 InAngularVelocity, FReal InMass, FGeometryParticleHandle *InParticle, FReal InBoundingboxVolume, FReal InBoundingboxExtentMin, FReal InBoundingboxExtentMax, int32 InSurfaceType)
Definition ExternalCollisionData.h:293
FVector TransformTranslation
Definition ExternalCollisionData.h:332
int32 SurfaceType
Definition ExternalCollisionData.h:330
FReal BoundingboxExtentMax
Definition ExternalCollisionData.h:329
FVec3 Velocity
Definition ExternalCollisionData.h:325
FReal Mass
Definition ExternalCollisionData.h:327
FName PhysicalMaterialName
Definition ExternalCollisionData.h:341
FBox BoundingBox
Definition ExternalCollisionData.h:336
FReal BoundingboxExtentMin
Definition ExternalCollisionData.h:329
Definition ExternalCollisionData.h:213
FBreakingData()
Definition ExternalCollisionData.h:214
FVec3 AngularVelocity
Definition ExternalCollisionData.h:237
int32 TransformGroupIndex
Definition ExternalCollisionData.h:240
FVec3 Location
Definition ExternalCollisionData.h:234
bool bFromCrumble
Definition ExternalCollisionData.h:241
IPhysicsProxyBase * Proxy
Definition ExternalCollisionData.h:232
FReal Mass
Definition ExternalCollisionData.h:238
Chaos::FAABB3 BoundingBox
Definition ExternalCollisionData.h:239
FRotation3 Orientation
Definition ExternalCollisionData.h:235
FVec3 Velocity
Definition ExternalCollisionData.h:236
Definition ExternalCollisionData.h:141
FVec3 Location
Definition ExternalCollisionData.h:197
FVec3 AngularVelocity1
Definition ExternalCollisionData.h:201
FReal BoundingboxVolume
Definition ExternalCollisionData.h:203
FCollidingDataExt(FVec3 InLocation, FVec3 InAccumulatedImpulse, FVec3 InNormal, FVec3 InVelocity1, FVec3 InVelocity2, FVec3 InAngularVelocity1, FVec3 InAngularVelocity2, FReal InMass1, FReal InMass2, FReal InBoundingboxVolume, FReal InBoundingboxExtentMin, FReal InBoundingboxExtentMax, int32 InSurfaceType1, int32 InSurfaceType2)
Definition ExternalCollisionData.h:159
FName PhysicalMaterialName1
Definition ExternalCollisionData.h:206
FReal Mass2
Definition ExternalCollisionData.h:202
FReal BoundingboxExtentMax
Definition ExternalCollisionData.h:204
FVec3 AccumulatedImpulse
Definition ExternalCollisionData.h:198
FVec3 Velocity1
Definition ExternalCollisionData.h:200
FReal BoundingboxExtentMin
Definition ExternalCollisionData.h:204
FName PhysicalMaterialName2
Definition ExternalCollisionData.h:206
FReal Mass1
Definition ExternalCollisionData.h:202
FCollidingDataExt(const FCollidingData &InCollisionData)
Definition ExternalCollisionData.h:179
FVec3 Normal
Definition ExternalCollisionData.h:199
FCollidingDataExt()
Definition ExternalCollisionData.h:142
FVec3 Velocity2
Definition ExternalCollisionData.h:200
int32 SurfaceType1
Definition ExternalCollisionData.h:205
FVec3 AngularVelocity2
Definition ExternalCollisionData.h:201
int32 SurfaceType2
Definition ExternalCollisionData.h:205
Definition ExternalCollisionData.h:57
int32 ShapeIndex1
Definition ExternalCollisionData.h:131
FVec3 Velocity2
Definition ExternalCollisionData.h:110
FVec3 AngularVelocity2
Definition ExternalCollisionData.h:114
FVec3 Normal
Definition ExternalCollisionData.h:108
IPhysicsProxyBase * Proxy2
Definition ExternalCollisionData.h:129
FVec3 Location
Definition ExternalCollisionData.h:106
int32 ShapeIndex2
Definition ExternalCollisionData.h:132
bool bProbe
Definition ExternalCollisionData.h:120
FCollidingData(FVec3 InLocation, FVec3 InAccumulatedImpulse, FVec3 InNormal, FVec3 InVelocity1, FVec3 InVelocity2, FVec3 InDeltaVelocity1, FVec3 InDeltaVelocity2, FVec3 InAngularVelocity1, FVec3 InAngularVelocity2, FReal InMass1, FReal InMass2, FReal InPenetrationDepth, IPhysicsProxyBase *InProxy1, IPhysicsProxyBase *InProxy2, int32 InShapeIndex1, int32 InShapeIndex2, FReal InSolverTime)
Definition ExternalCollisionData.h:81
FReal Mass2
Definition ExternalCollisionData.h:116
FMaterialHandle Mat1
Definition ExternalCollisionData.h:118
FMaterialHandle Mat2
Definition ExternalCollisionData.h:119
FVec3 Velocity1
Definition ExternalCollisionData.h:109
FVec3 DeltaVelocity1
Definition ExternalCollisionData.h:111
IPhysicsProxyBase * Proxy1
Definition ExternalCollisionData.h:128
FVec3 AngularVelocity1
Definition ExternalCollisionData.h:113
FVec3 AccumulatedImpulse
Definition ExternalCollisionData.h:107
FCollidingData()
Definition ExternalCollisionData.h:58
FReal PenetrationDepth
Definition ExternalCollisionData.h:117
FVec3 DeltaVelocity2
Definition ExternalCollisionData.h:112
FReal Mass1
Definition ExternalCollisionData.h:115
FReal SolverTime
Definition ExternalCollisionData.h:134
Definition ExternalCollisionData.h:248
FReal Mass
Definition ExternalCollisionData.h:271
FRotation3 Orientation
Definition ExternalCollisionData.h:268
FVec3 Location
Definition ExternalCollisionData.h:267
TArray< int32 > Children
Definition ExternalCollisionData.h:274
FCrumblingData()
Definition ExternalCollisionData.h:249
FVec3 LinearVelocity
Definition ExternalCollisionData.h:269
FAABB3 LocalBounds
Definition ExternalCollisionData.h:272
FVec3 AngularVelocity
Definition ExternalCollisionData.h:270
IPhysicsProxyBase * Proxy
Definition ExternalCollisionData.h:265
Definition PhysicalMaterials.h:24
Definition ExternalCollisionData.h:502
int32 SurfaceType
Definition ExternalCollisionData.h:540
FRemovalDataExt(FVec3 InLocation, FReal InMass, FGeometryParticleHandle *InParticle, FReal InBoundingboxVolume, FReal InBoundingboxExtentMin, FReal InBoundingboxExtentMax, int32 InSurfaceType)
Definition ExternalCollisionData.h:512
FReal Mass
Definition ExternalCollisionData.h:537
FReal BoundingboxExtentMax
Definition ExternalCollisionData.h:539
FVec3 Location
Definition ExternalCollisionData.h:536
FReal BoundingboxExtentMin
Definition ExternalCollisionData.h:539
FReal BoundingboxVolume
Definition ExternalCollisionData.h:538
FRemovalDataExt()
Definition ExternalCollisionData.h:503
FRemovalDataExt(const FRemovalData &InRemovalData)
Definition ExternalCollisionData.h:527
Definition ExternalCollisionData.h:470
FRemovalData()
Definition ExternalCollisionData.h:471
FReal Mass
Definition ExternalCollisionData.h:486
IPhysicsProxyBase * Proxy
Definition ExternalCollisionData.h:493
FVec3 Location
Definition ExternalCollisionData.h:485
FRemovalData(FVec3 InLocation, FReal InMass, IPhysicsProxyBase *InProxy, Chaos::TAABB< FReal, 3 > &InBoundingBox)
Definition ExternalCollisionData.h:478
Chaos::FAABB3 BoundingBox
Definition ExternalCollisionData.h:495
Definition ExternalCollisionData.h:445
IPhysicsProxyBase * Proxy
Definition ExternalCollisionData.h:461
FSleepingData()
Definition ExternalCollisionData.h:446
FSleepingData(IPhysicsProxyBase *InProxy, bool InSleeping)
Definition ExternalCollisionData.h:451
bool Sleeping
Definition ExternalCollisionData.h:463
Definition ExternalCollisionData.h:393
FReal Mass
Definition ExternalCollisionData.h:438
FTrailingDataExt(const FTrailingData &InTrailingData)
Definition ExternalCollisionData.h:424
FVec3 Location
Definition ExternalCollisionData.h:435
FReal BoundingboxExtentMin
Definition ExternalCollisionData.h:440
int32 SurfaceType
Definition ExternalCollisionData.h:441
FVec3 AngularVelocity
Definition ExternalCollisionData.h:437
FTrailingDataExt(FVec3 InLocation, FVec3 InVelocity, FVec3 InAngularVelocity, FReal InMass, FGeometryParticleHandle *InParticle, FReal InBoundingboxVolume, FReal InBoundingboxExtentMin, FReal InBoundingboxExtentMax, int32 InSurfaceType)
Definition ExternalCollisionData.h:405
FTrailingDataExt()
Definition ExternalCollisionData.h:394
FVec3 Velocity
Definition ExternalCollisionData.h:436
FReal BoundingboxExtentMax
Definition ExternalCollisionData.h:440
FReal BoundingboxVolume
Definition ExternalCollisionData.h:439
Definition ExternalCollisionData.h:348
int32 TransformGroupIndex
Definition ExternalCollisionData.h:386
FTrailingData()
Definition ExternalCollisionData.h:349
FVec3 Location
Definition ExternalCollisionData.h:372
Chaos::FAABB3 BoundingBox
Definition ExternalCollisionData.h:385
IPhysicsProxyBase * Proxy
Definition ExternalCollisionData.h:383
FVec3 AngularVelocity
Definition ExternalCollisionData.h:375
FRotation3 Orientation
Definition ExternalCollisionData.h:373
FVec3 Velocity
Definition ExternalCollisionData.h:374
FReal Mass
Definition ExternalCollisionData.h:376