-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPhysicsInterfaceUtils.cpp
More file actions
35 lines (32 loc) · 1.74 KB
/
Copy pathPhysicsInterfaceUtils.cpp
File metadata and controls
35 lines (32 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Copyright Epic Games, Inc. All Rights Reserved.
#include "Physics/PhysicsInterfaceUtils.h"
#include "CollisionQueryParams.h"
#include "Physics/PhysicsFiltering.h"
#include "PhysicsInterfaceTypesCore.h"
FCollisionFilterData CreateQueryFilterData(const uint8 MyChannel, const bool bTraceComplex, const FCollisionResponseContainer& InCollisionResponseContainer, const struct FCollisionQueryParams& QueryParam, const struct FCollisionObjectQueryParams& ObjectParam, const bool bMultitrace)
{
Chaos::Filter::FQueryFilterData Result = CreateChaosQueryFilterData(MyChannel, bTraceComplex, InCollisionResponseContainer, QueryParam, ObjectParam, bMultitrace);
return Chaos::Filter::FQueryFilterBuilder::GetLegacyQueryFilter(Result);
}
Chaos::Filter::FQueryFilterData CreateChaosQueryFilterData(const uint8 MyChannel, const bool bTraceComplex, const FCollisionResponseContainer& InCollisionResponseContainer, const struct FCollisionQueryParams& QueryParam, const struct FCollisionObjectQueryParams& ObjectParam, const bool bMultitrace)
{
Chaos::EFilterFlags FlagsToSet = bTraceComplex ? Chaos::EFilterFlags::ComplexCollision : Chaos::EFilterFlags::SimpleCollision;
if (ObjectParam.IsValid())
{
FPhysicsObjectQueryFilterBuilder Builder;
Builder.SetObjectTypes(ObjectParam.GetQueryBitfield64());
Builder.SetMultiQuery(bMultitrace);
Builder.SetMaskFilter(ObjectParam.IgnoreMask);
Builder.SetFlags(FlagsToSet, true);
return Builder.Build();
}
else
{
FPhysicsTraceQueryFilterBuilder Builder;
Builder.SetCollisionChannelIndex((ECollisionChannel)MyChannel);
Builder.SetResponses(InCollisionResponseContainer);
Builder.SetMaskFilter(QueryParam.IgnoreMask);
Builder.SetFlags(FlagsToSet, true);
return Builder.Build();
}
}