UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BasicBroadPhase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
9#include "ChaosStats.h"
10
11namespace Chaos
12{
20 {
21 public:
23 using FAABB = FAABB3;
24
31
36 FReal Dt,
38 const FCollisionDetectorSettings& Settings)
39 {
41
42 Allocator->SetMaxContexts(1);
43
45 Context.SetSettings(Settings);
46 Context.Allocator = Allocator->GetContextAllocator(0);
47
48 if (ParticlePairs != nullptr)
49 {
50 for (const FParticlePair& ParticlePair : *ParticlePairs)
51 {
52 // Pair array is const and the particles are not, but we need to const_cast
55
56 if ((ParticleA != nullptr) && (ParticleB != nullptr))
57 {
59 }
60 }
61 }
62
63 if ((ParticlesA != nullptr) && (ParticlesB != nullptr))
64 {
65 for (FParticleHandle* ParticleA : *ParticlesA)
66 {
67 if (ParticleA != nullptr)
68 {
69 for (FParticleHandle* ParticleB : *ParticlesB)
70 {
71 if (ParticleB != nullptr)
72 {
74 }
75 }
76 }
77 }
78 }
79 }
80
81 private:
82 inline void ProduceOverlaps(
83 FReal Dt,
88 {
89 if (!ParticleA->HasCollision() || !ParticleB->HasCollision())
90 {
91 return;
92 }
93 const FAABB3& Box0 = ParticleA->WorldSpaceInflatedBounds();
94 const FAABB3& Box1 = ParticleB->WorldSpaceInflatedBounds();
95 if (Box0.Intersects(Box1))
96 {
97 FParticlePairMidPhase* MidPhase = Context.GetAllocator()->GetMidPhase(ParticleA, ParticleB, SearchParticle, Context);
98 if (MidPhase != nullptr)
99 {
100 MidPhase->GenerateCollisions(Context.GetSettings().BoundsExpansion, Dt, Context);
101 }
102 }
103 }
104
105 const TArray<FParticlePair>* ParticlePairs;
106 const TArray<FParticleHandle*>* ParticlesA;
107 const TArray<FParticleHandle*>* ParticlesB;
108 };
109}
#define SCOPE_CYCLE_COUNTER(Stat)
Definition Stats.h:650
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition BasicBroadPhase.h:20
TGeometryParticleHandle< FReal, 3 > FParticleHandle
Definition BasicBroadPhase.h:22
void ProduceOverlaps(FReal Dt, Private::FCollisionConstraintAllocator *Allocator, const FCollisionDetectorSettings &Settings)
Definition BasicBroadPhase.h:35
FBasicBroadPhase(const TArray< FParticlePair > *InParticlePairs, const TArray< FParticleHandle * > *InParticlesA, const TArray< FParticleHandle * > *InParticlesB)
Definition BasicBroadPhase.h:25
Definition CollisionContext.h:83
void SetSettings(const FCollisionDetectorSettings &InSettings)
Definition CollisionContext.h:100
Definition CollisionContext.h:17
An allocator and container of collision constraints that supports reuse of constraints from the previ...
Definition CollisionConstraintAllocator.h:234
Definition ParticleHandle.h:436
Definition Vector.h:41
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
TAABB< FReal, 3 > FAABB3
Definition ImplicitObject.h:34