UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ChaosVDCollisionDataWrappers.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
5#include "HAL/Platform.h"
6
7#include "ChaosVDCollisionDataWrappers.generated.h"
8
9namespace Chaos
10{
11 enum class EParticleType : uint8;
12 class FChaosArchive;
13}
14
15UENUM()
44
45UENUM()
54
55USTRUCT()
57{
59
60 // Shape-space contact points on the two bodies
61 UPROPERTY(VisibleAnywhere, Category=Contact)
62 FVector ShapeContactPoints[2] = { FVector(ForceInit), FVector(ForceInit) };
63
64 // Shape-space contact normal on the second shape with direction that points away from shape 1
65 UPROPERTY(VisibleAnywhere, Category=Contact)
66 FVector ShapeContactNormal = FVector(ForceInit);
67
68 // Contact separation (negative for overlap)
69 UPROPERTY(VisibleAnywhere, Category=Contact)
70 float Phi = 0.f;
71
72 // Face index of the shape we hit. Only valid for Heightfield and Trimesh contact points, otherwise INDEX_NONE
73 UPROPERTY(VisibleAnywhere, Category=Contact)
75
76 // Whether this is a vertex-plane contact, edge-edge contact etc.
77 UPROPERTY(VisibleAnywhere, Category=Contact)
79
81};
82
84
85UENUM()
87{
88 None = 0,
89 Disabled = 1 << 0,
90 WasRestored = 1 << 1,
91 WasReplaced = 1 << 2,
93 IsValid = 1 << 4,
95};
97
98USTRUCT()
100{
102
103 UPROPERTY(VisibleAnywhere, Category=ContactData)
104 uint8 bDisabled:1 = false;
105 UPROPERTY()
106 uint8 bWasRestored:1 = false;
107 UPROPERTY()
108 uint8 bWasReplaced:1 = false;
109 UPROPERTY(VisibleAnywhere, Category=ContactData)
110 uint8 bHasStaticFrictionAnchor:1 = false;
111
112 UPROPERTY()
113 uint8 bIsValid:1 = false;
114 UPROPERTY(VisibleAnywhere, Category=ContactData)
115 uint8 bInsideStaticFrictionCone:1 = false;
116
117 UPROPERTY(VisibleAnywhere, Category=ContactData)
118 FVector NetPushOut = FVector(ForceInit);
119 UPROPERTY(VisibleAnywhere, Category=ContactData)
120 FVector NetImpulse = FVector(ForceInit);
121
122 UPROPERTY(VisibleAnywhere, Category=ContactData)
123 float TargetPhi = 0.f;
124 UPROPERTY(VisibleAnywhere, Category=ContactData)
125 float InitialPhi = 0.f;
126 UPROPERTY()
127 FVector ShapeAnchorPoints[2] = { FVector(ForceInit), FVector(ForceInit) };
128 UPROPERTY()
129 FVector InitialShapeContactPoints[2] = { FVector(ForceInit), FVector(ForceInit) };
130 UPROPERTY(VisibleAnywhere, Category=ContactData)
132
133 UPROPERTY()
134 FVector ShapeContactPoints[2] = { FVector(ForceInit), FVector(ForceInit) };
135
136 bool bIsSelectedInEditor = false;
137
139};
140
142
143USTRUCT()
145{
147
148 UPROPERTY(VisibleAnywhere, Category = MaterialData)
150
151 UPROPERTY(VisibleAnywhere, Category = MaterialData)
152 float MaterialDynamicFriction = 0.0f;
153
154 UPROPERTY(VisibleAnywhere, Category = MaterialData)
155 float MaterialStaticFriction = 0.0f;
156
157 UPROPERTY(VisibleAnywhere, Category = MaterialData)
158 float MaterialRestitution = 0.0f;
159
160 UPROPERTY(VisibleAnywhere, Category = MaterialData)
161 float DynamicFriction = 0.0f;
162
163 UPROPERTY(VisibleAnywhere, Category = MaterialData)
164 float StaticFriction = 0.0f;
165
166 UPROPERTY(VisibleAnywhere, Category = MaterialData)
167 float Restitution = 0.0f;
168
169 UPROPERTY(VisibleAnywhere, Category = MaterialData)
170 float RestitutionThreshold = 0.0f;
171
172 UPROPERTY(VisibleAnywhere, Category = MaterialData)
173 float InvMassScale0 = 0.0f;
174
175 UPROPERTY(VisibleAnywhere, Category = MaterialData)
176 float InvMassScale1 = 0.0f;
177
178 UPROPERTY(VisibleAnywhere, Category = MaterialData)
179 float InvInertiaScale0 = 0.0f;
180
181 UPROPERTY(VisibleAnywhere, Category = MaterialData)
182 float InvInertiaScale1 = 0.0f;
183
184 bool Serialize(FArchive& Ar);
185};
186
188
189UENUM()
191{
192 None = 0,
193 IsCurrent = 1 << 0,
194 Disabled = 1 << 1,
195 UseManifold = 1 << 2,
196 UseIncrementalManifold = 1 << 3,
197 CanRestoreManifold = 1 << 4,
198 WasManifoldRestored = 1 << 5,
199 IsQuadratic0 = 1 << 6,
200 IsQuadratic1 = 1 << 7,
201 IsProbe = 1 << 8,
202 CCDEnabled = 1 << 9,
203 CCDSweepEnabled = 1 << 10,
204 ModifierApplied = 1 << 11,
205 MaterialSet = 1 << 12,
206};
207
208USTRUCT()
210{
212
214
215 UPROPERTY()
216 uint8 bIsCurrent:1 = false;
217 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
218 uint8 bDisabled:1 = false;
219 UPROPERTY()
220 uint8 bUseManifold:1 = false;
221 UPROPERTY()
222 uint8 bUseIncrementalManifold:1 = false;
223 UPROPERTY()
224 uint8 bCanRestoreManifold:1 = false;
225 UPROPERTY()
226 uint8 bWasManifoldRestored:1 = false;
227 UPROPERTY()
228 uint8 bIsQuadratic0:1 = false;
229 UPROPERTY()
230 uint8 bIsQuadratic1:1 = false;
231 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
232 uint8 bIsProbe:1 = false;
233 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
234 uint8 bCCDEnabled:1 = false;
235 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
236 uint8 bCCDSweepEnabled:1 = false;
237 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
238 uint8 bModifierApplied:1 = false;
239 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
240 uint8 bMaterialSet:1 = false;
241
242 UPROPERTY(VisibleAnywhere, Category = ConstraintData)
244
245 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
246 FVector AccumulatedImpulse = FVector(ForceInit);
247
248 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
250
251 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
253
254 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
256
257 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
258 float CullDistance = 0.f;
259
260 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
261 TArray<float> CollisionMargins;
262
263 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
264 float CollisionTolerance = 0.f;
265
266 UPROPERTY()
267 int32 ClosestManifoldPointIndex = 0;
268
269 UPROPERTY()
270 int32 ExpectedNumManifoldPoints = 0;
271
272 UPROPERTY()
273 FVector LastShapeWorldPositionDelta = FVector(ForceInit);
274
275 UPROPERTY()
276 FQuat LastShapeWorldRotationDelta = FQuat(ForceInit);
277
278 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
279 float Stiffness = 0.f;
280
281 UPROPERTY(VisibleAnywhere, Category = ConstraintData)
282 float MinInitialPhi = 0.f;
283
284 UPROPERTY(VisibleAnywhere, Category = ConstraintData)
285 float InitialOverlapDepenetrationVelocity = -1.f;
286
287 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
288 float CCDTimeOfImpact = 0.f;
289
290 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
291 float CCDEnablePenetration = 0.f;
292
293 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
294 float CCDTargetPenetration = 0.f;
295
296 UPROPERTY(VisibleAnywhere, Category=ConstraintData)
298
299 UPROPERTY()
300 int32 Particle0Index = INDEX_NONE;
301 UPROPERTY()
302 int32 Particle1Index = INDEX_NONE;
303
304 UPROPERTY()
305 int32 SolverID = INDEX_NONE;
306
308};
309
311
312UENUM()
314{
315 None = 0,
316 IsActive = 1 << 0,
317 IsCCD = 1 << 1,
318 IsCCDActive = 1 << 2,
319 IsSleeping = 1 << 3,
320 IsModified = 1 << 4,
321};
322
323UENUM()
325{
326 // A general purpose midphase that handle BVHs, Meshes,
327 // Unions of Unions, etc in the geometry hierarchy.
328 Generic,
329
330 // A midphase optimized for particle pairs with a small
331 // number of shapes. Pre-expands the set of potentially
332 // colliding shape pairs.
333 ShapePair,
334
335 // A midphase used to collide particles as sphere approximations
337
338 Unknown
339};
340
341USTRUCT()
343{
345
347
348 UPROPERTY()
349 int32 SolverID = INDEX_NONE;
350
351 UPROPERTY(VisibleAnywhere, Category=General)
353
354 UPROPERTY(VisibleAnywhere, Category=Flags)
355 uint8 bIsActive:1 = false;
356 UPROPERTY(VisibleAnywhere, Category=Flags)
357 uint8 bIsCCD:1 = false;
358 UPROPERTY(VisibleAnywhere, Category=Flags)
359 uint8 bIsCCDActive:1 = false;
360 UPROPERTY(VisibleAnywhere, Category=Flags)
361 uint8 bIsSleeping:1 = false;
362 UPROPERTY(VisibleAnywhere, Category=Flags)
363 uint8 bIsModified:1 = false;
364
365 UPROPERTY(VisibleAnywhere, Category=Misc)
366 int32 LastUsedEpoch = 0;
367
368 UPROPERTY(VisibleAnywhere, Category=Particle)
369 int32 Particle0Idx = 0;
370 UPROPERTY(VisibleAnywhere, Category=Particle)
371 int32 Particle1Idx = 0;
372
373 UPROPERTY(VisibleAnywhere, Category=Constraints)
375
377};
378
380
381UENUM()
395
396USTRUCT()
398{
400
401 UPROPERTY(VisibleAnywhere, Category=CollisionData)
402 uint32 Word0 = 0;
403 UPROPERTY(VisibleAnywhere, Category=CollisionData)
404 uint32 Word1 = 0;
405 UPROPERTY(VisibleAnywhere, Category=CollisionData)
406 uint32 Word2 = 0;
407 UPROPERTY(VisibleAnywhere, Category=CollisionData)
408 uint32 Word3 = 0;
409
411
412 bool operator==(const FChaosVDCollisionFilterData& Other) const = default;
413};
414
415template <>
420
422
423UENUM()
425{
426 None = 0,
427 SimCollision = 1 << 0,
428 QueryCollision = 1 << 1,
429 IsProbe = 1 << 2,
430};
431
432USTRUCT()
434{
436
437 UPROPERTY(VisibleAnywhere, Category=CollisionData)
439
440 UPROPERTY()
441 uint8 bSimCollision : 1 = false;
442 UPROPERTY()
443 uint8 bQueryCollision : 1 = false;
444 UPROPERTY()
445 uint8 bIsProbe : 1 = false;
446
447 UPROPERTY(VisibleAnywhere, Category=FilterData)
449
450 UPROPERTY(VisibleAnywhere, Category=SimData)
452
453 UPROPERTY(VisibleAnywhere, Category="CVD Data")
454 bool bIsComplex = false;
455
456 UPROPERTY(VisibleAnywhere, Category="CVD Data")
457 bool bIsValid = false;
458
460
461 CHAOSVDRUNTIME_API bool operator==(const FChaosVDShapeCollisionData& Other) const;
462};
463
464template <>
469
471
472
475USTRUCT()
477{
479
480 UPROPERTY()
481 FString DisplayName;
482
483 UPROPERTY()
484 int32 CollisionChannel = INDEX_NONE;
485
486 UPROPERTY()
487 bool bIsTraceType = false;
488
490};
491
493
495USTRUCT()
497{
499
501
502 UPROPERTY(VisibleAnywhere, Category=CollisionData)
503 FChaosVDCollisionChannelInfo CustomChannelsNames[32] = {};
504
506};
507
EChaosVDCollisionTraceFlag
Definition ChaosVDCollisionDataWrappers.h:383
EChaosVDMidPhaseFlags
Definition ChaosVDCollisionDataWrappers.h:314
EChaosVDMidPhaseType
Definition ChaosVDCollisionDataWrappers.h:325
EChaosVDManifoldPointFlags
Definition ChaosVDCollisionDataWrappers.h:87
EChaosVDConstraintFlags
Definition ChaosVDCollisionDataWrappers.h:191
EChaosVDCollisionShapeDataFlags
Definition ChaosVDCollisionDataWrappers.h:425
EChaosVDContactPointType
Definition ChaosVDCollisionDataWrappers.h:47
EChaosVDContactShapesType
Definition ChaosVDCollisionDataWrappers.h:17
#define CVD_IMPLEMENT_SERIALIZER(Type)
Definition ChaosVDDataSerializationMacros.h:30
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
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 ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define FVector
Definition IOSSystemIncludes.h:8
@ General
Definition MaterialExpressionFunctionInput.h:41
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Constraints.Build.cs:6
Definition Archive.h:1208
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
EParticleType
Definition GeometryParticlesfwd.h:11
@ false
Definition radaudio_common.h:23
Definition ChaosVDCollisionDataWrappers.h:477
Definition ChaosVDCollisionDataWrappers.h:497
Definition ChaosVDCollisionDataWrappers.h:398
Definition ChaosVDCollisionDataWrappers.h:145
Definition ChaosVDCollisionDataWrappers.h:210
Definition ChaosVDCollisionDataWrappers.h:57
Definition ChaosVDCollisionDataWrappers.h:100
Definition ChaosVDCollisionDataWrappers.h:343
Definition ChaosVDCollisionDataWrappers.h:434
Definition UnrealTypeTraits.h:335
Definition UnrealTypeTraits.h:347
static CORE_API const TTransform< double > Identity
Definition TransformNonVectorized.h:58