UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SQCapture.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "ChaosSQTypes.h"
9#include "Containers/Array.h"
10#include "Containers/Map.h"
11#include "CoreMinimal.h"
12#include "Math/Transform.h"
13#include "Math/UnrealMathSSE.h"
14#include "Math/Vector.h"
16#include "PhysXPublicCore.h"
20#include "Templates/UniquePtr.h"
21
24
25namespace ChaosInterface
26{
27 struct FOverlapHit;
28 struct FRaycastHit;
29 struct FSweepHit;
30}
31
32namespace Chaos
33{
34 class FChaosArchive;
35 class FImplicitObject;
36 class FPerShapeData;
37}
38
39//Allows us to capture a scene query with either physx or chaos and then load it into either format for testing purposes
41{
43 FSQCapture(const FSQCapture&) = delete;
44 FSQCapture& operator=(const FSQCapture&) = delete;
45
46 enum class ESQType : uint8
47 {
48 Raycast,
49 Sweep,
51 } SQType;
52
54 PHYSICSCORE_API void EndCaptureChaosSweep(const ChaosInterface::FSQHitBuffer<ChaosInterface::FSweepHit>& Results);
55
56 PHYSICSCORE_API void StartCaptureChaosRaycast(const Chaos::FPBDRigidsEvolution& Evolution, const FVector& InStartPoint, const FVector& InDir, float InDeltaMag, FHitFlags InOutputFlags, const ChaosInterface::FQueryFilterData& QueryFilter, const FCollisionFilterData& FilterData, ICollisionQueryFilterCallbackBase& Callback);
57 PHYSICSCORE_API void EndCaptureChaosRaycast(const ChaosInterface::FSQHitBuffer<ChaosInterface::FRaycastHit>& Results);
58
59 PHYSICSCORE_API void StartCaptureChaosOverlap(const Chaos::FPBDRigidsEvolution& Evolution, const Chaos::FImplicitObject& InQueryGeom, const FTransform& InStartTM, const ChaosInterface::FQueryFilterData& QueryFilter, const FCollisionFilterData& FilterData, ICollisionQueryFilterCallbackBase& Callback);
60 PHYSICSCORE_API void EndCaptureChaosOverlap(const ChaosInterface::FSQHitBuffer<ChaosInterface::FOverlapHit>& Results);
61
63
65 FTransform StartTM; //only valid if overlap or sweep
66 FVector StartPoint; //only valid if raycast
67
68 float DeltaMag;
72
74
77
80
83
84 UE_DEPRECATED(5.4, "Please use ChaosImplicitGeometry instead.")
85 TUniquePtr<Chaos::FImplicitObject> ChaosOwnerObject; //should be private, do not access directly
86
87 UE_DEPRECATED(5.4, "Please use ChaosImplicitGeometry instead.")
88 const Chaos::FImplicitObject* ChaosGeometry;
89
90 UE_DEPRECATED(5.4, "Please use ChaosImplicitGeometry instead.")
91 TUniquePtr<Chaos::FImplicitObject> SerializableChaosGeometry;
92
94 PHYSICSCORE_API FSQCapture(FPhysTestSerializer& OwningPhysSerializer); //This should be created by PhysTestSerializer
95 PHYSICSCORE_API void Serialize(Chaos::FChaosArchive& Ar);
96
98
99 TArray<uint8> GeomData;
100 TArray<uint8> HitData;
101
102 FPhysTestSerializer& PhysSerializer;
103
104 PHYSICSCORE_API void CaptureChaosFilterResults(const Chaos::FPBDRigidsEvolution& Evolution, const FCollisionFilterData& FilterData, ICollisionQueryFilterCallbackBase& Callback);
105
106 TMap<Chaos::FGeometryParticle*, TArray<TPair<Chaos::FPerShapeData*, ECollisionQueryHitType>>> ChaosActorToShapeHitsArray;
107
109 void SerializeChaosBuffers(Chaos::FChaosArchive& Ar, int32 Version, ChaosInterface::FSQHitBuffer<THit>& ChaosBuffer);
110
111 PHYSICSCORE_API void SerializeChaosActorToShapeHitsArray(Chaos::FChaosArchive& Ar);
112
113 bool bDiskDataIsChaos;
114 bool bChaosDataReady;
115 bool bPhysXDataReady;
116};
ECollisionQueryHitType
Definition CollisionQueryFilterCallbackCore.h:13
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#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
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition SQTypes.h:220
Definition ImplicitObject.h:111
Definition PBDRigidsEvolutionGBF.h:51
Definition ShapeInstance.h:36
Definition ParticleHandle.h:2739
Definition UnrealType.h:3087
Definition PhysTestSerializer.h:37
Definition CollisionQueryFilterCallbackCore.h:25
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition ChaosInterfaceUtils.cpp:28
Definition SkeletalMeshComponent.h:307
Definition PhysicsInterfaceTypesCore.h:390
Definition CollisionFilterData.h:46
Definition PhysicsInterfaceWrapperShared.h:86
Definition SQCapture.h:41
ChaosInterface::FSQHitBuffer< ChaosInterface::FSweepHit > ChaosSweepBuffer
Definition SQCapture.h:75
FVector StartPoint
Definition SQCapture.h:66
TArray< ChaosInterface::FRaycastHit > ChaosRaycastTouches
Definition SQCapture.h:79
TArray< ChaosInterface::FSweepHit > ChaosSweepTouches
Definition SQCapture.h:76
ChaosInterface::FQueryFilterData QueryFilterData
Definition SQCapture.h:70
FHitFlags OutputFlags
Definition SQCapture.h:69
TArray< ChaosInterface::FOverlapHit > ChaosOverlapTouches
Definition SQCapture.h:82
FTransform StartTM
Definition SQCapture.h:65
TUniquePtr< ICollisionQueryFilterCallbackBase > FilterCallback
Definition SQCapture.h:71
Chaos::FImplicitObjectPtr ChaosImplicitGeometry
Definition SQCapture.h:73
FSQCapture(const FSQCapture &)=delete
ChaosInterface::FSQHitBuffer< ChaosInterface::FOverlapHit > ChaosOverlapBuffer
Definition SQCapture.h:81
FSQCapture & operator=(const FSQCapture &)=delete
ChaosInterface::FSQHitBuffer< ChaosInterface::FRaycastHit > ChaosRaycastBuffer
Definition SQCapture.h:78
float DeltaMag
Definition SQCapture.h:68
FVector Dir
Definition SQCapture.h:64
ESQType
Definition SQCapture.h:47
Definition Tuple.h:652