UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GeometryCollectionPhysicsProxy.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7
16#include "Chaos/PhysicsObject.h"
17#include "Containers/Array.h"
18#include "PBDRigidsSolver.h"
19#include "Chaos/Defines.h"
21
22
23namespace Chaos
24{
25 template <typename T> class TSerializablePtr;
26 class FErrorReporter;
27 struct FClusterCreationParameters;
28
29 struct FDirtyGeometryCollectionData;
30
31 class FPBDCollisionConstraints;
32 class FPBDRigidsEvolutionBase;
33}
34
41{
42public:
47
49 {
50 return FGeometryCollectionItemIndex(TransformIndex, false);
51 }
52
54 {
56 Result.ItemIndex = ItemIndex;
57 return Result;
58 }
59
64
65public:
69
70 bool IsInternalCluster() const
71 {
72 return ItemIndex < INDEX_NONE;
73 }
74
76 {
78 return (ItemIndex - InternalClusterBaseIndex);
79 }
80
82 {
84 return ItemIndex;
85 }
86
87 bool IsValid() const
88 {
89 return ItemIndex != INDEX_NONE;
90 }
91
93 {
94 return ItemIndex;
95 }
96
98 {
99 return ItemIndex == Other.ItemIndex;
100 }
101
102private:
103 static const int32 InternalClusterBaseIndex = TNumericLimits<int32>::Lowest();
104
105 FGeometryCollectionItemIndex(int32 Index, bool bInternalCluster)
106 : ItemIndex(INDEX_NONE)
107 {
108 if (Index > INDEX_NONE)
109 {
110 ItemIndex = Index + (bInternalCluster? InternalClusterBaseIndex: 0);
111 }
112 }
113
114 int32 ItemIndex;
115};
116
118{
119public:
121
123 : Base(Chaos::EParticleType::GeometryCollection)
124 , Data(DataIn)
125 {}
126
127 void Reset()
128 {
129 Base::Reset(); // Sets Type to EParticleType::Static
130 }
131
132 const FGeometryCollectionResults* GetStateData() const { return Data; }
133
134private:
135 const FGeometryCollectionResults* Data;
136};
137
142class FGeometryCollectionPhysicsProxy : public TPhysicsProxy<FGeometryCollectionPhysicsProxy, FStubGeometryCollectionData, FGeometryCollectionProxyTimestamp>
143{
144public:
150
153
162 UE_DEPRECATED(5.6, "Use the constructor that use a shared ref for the game thread collection")
165 FGeometryDynamicCollection& GameThreadCollection,
166 const FSimulationParameters& SimulationParameters,
169 FGuid InCollectorGuid = FGuid::NewGuid(),
170 const Chaos::EMultiBufferMode BufferMode=Chaos::EMultiBufferMode::TripleGuarded);
171
174 TSharedRef<FGeometryDynamicCollection> GameThreadCollection,
175 const FSimulationParameters& SimulationParameters,
178 FGuid InCollectorGuid = FGuid::NewGuid(),
179 const Chaos::EMultiBufferMode BufferMode = Chaos::EMultiBufferMode::TripleGuarded);
180
182
187 CHAOS_API void Initialize(Chaos::FPBDRigidsEvolutionBase* Evolution);
188 void Reset() { }
189
190 bool IsInitializedOnPhysicsThread() const { return bIsInitializedOnPhysicsThread; }
191
199 typename Chaos::FPBDRigidsSolver::FParticlesType& Particles);
200
202 static CHAOS_API void InitializeDynamicCollection(FGeometryDynamicCollection& DynamicCollection, const FGeometryCollection& RestCollection, const FSimulationParameters& Params);
203
205 bool IsSimulating() const { return Parameters.Simulating; }
206
215
218
221
224
227
230
232 CHAOS_API void FlipBuffer();
233
239
240 bool IsDirty() { return false; }
241
243
248
251
252 UE_DEPRECATED(5.4, "Use GetSolverClusterHandle_Internal instead")
253 TArray<FClusterHandle*>& GetSolverClusterHandles() { return SolverClusterHandles; }
254
255 UE_DEPRECATED(5.4, "Use GetParticle_Internal instead")
256 TArray<FClusterHandle*>& GetSolverParticleHandles() { return SolverParticleHandles; }
257
259 {
260 const int32 ParticleIndex = FromTransformToParticleIndex[Index];
261 if (ParticleIndex != INDEX_NONE)
262 {
263 return SolverClusterHandles[ParticleIndex];
264 }
265 return nullptr;
266 }
267
269 { return PhysToGameInterchange.PeekConsumerBuffer(); }
270
273
274 UE_DEPRECATED(5.5, "Use BufferFieldCommand_Internal instead when calling on the physics thread or the _external version when calling on the gamethread")
275 CHAOS_API void BufferCommand(Chaos::FPBDRigidsSolver* RigidsSolver, const FFieldSystemCommand& Command);
276
278 CHAOS_API void BufferFieldCommand_Internal(Chaos::FPBDRigidsSolver* RigidsSolver, const FFieldSystemCommand& Command);
279
280 CHAOS_API void FieldForcesUpdateCallback(Chaos::FPBDRigidsSolver* RigidSolver);
281
282 CHAOS_API void FieldParameterUpdateCallback(Chaos::FPBDRigidsSolver* RigidSolver, const bool bUpdateViews = true);
283
286
288 void StartFrameCallback(const float InDt, const float InTime) {}
289 void EndFrameCallback(const float InDt) {}
294
295 bool IsGTCollectionDirty() const { return GameThreadCollection.IsDirty(); }
296
297 // set the world transform ( this needs to be called on the game thread )
298 CHAOS_API void SetWorldTransform_External(const FTransform& WorldTransform);
299 const FTransform& GetPreviousWorldTransform_External() const { return PreviousWorldTransform_External; }
300 const FTransform& GetWorldTransform_External() { return WorldTransform_External; }
301
302 // todo(chaos): Remove this and move to a cook time approach of the SM data based on the GC property
303 // Set whether the GC should be using collision from the Static Mesh or the GC itself for game thread traces ( this needs to be called on the game thread )
305
306 UE_DEPRECATED(5.4, "Use GetParticle_Internal instead")
308 {
309 return SolverParticleHandles;
310 }
311
313 {
314 return SolverParticleHandles;
315 }
316
318 {
319 if (FromTransformToParticleIndex.IsValidIndex(Index))
320 {
321 const int32 ParticleIndex = FromTransformToParticleIndex[Index];
322 if (SolverParticleHandles.IsValidIndex(ParticleIndex))
323 {
324 return SolverParticleHandles[ParticleIndex];
325 }
326 }
327 return nullptr;
328 }
329
331 {
332 return Parameters;
333 }
334
336 {
337 return Parameters;
338 }
339
341 {
342 return PhysicsThreadCollection;
343 }
344
346 {
347 return GameThreadCollection;
348 }
349
350 UE_DEPRECATED(5.4, "Use GetUnorderedParticles_External instead")
352 {
353 return GTParticles;
354 }
355
357 {
358 return GTParticles;
359 }
360
363
366
369
372
380
387 const EFieldFilterType FilterType,
388 const EFieldObjectType ObjectType);
389
390 /* Implemented so we can construct TAccelerationStructureHandle. */
391 virtual void* GetHandleUnsafe() const override { return nullptr; }
392
394 {
395 if (const int32* TransformGroupIndex = HandleToTransformGroupIndex.Find(Handle))
396 {
397 return *TransformGroupIndex;
398 }
399 return INDEX_NONE;
400 }
401
403 {
404 IndicesOut.SetNumUninitialized(Handles.Num());
405 for (int32 HandleIndex = 0; HandleIndex < Handles.Num(); ++HandleIndex)
406 {
407 IndicesOut[HandleIndex] = INDEX_NONE;
408 if (const int32* TransformGroupIndex = HandleToTransformGroupIndex.Find(Handles[HandleIndex]))
409 {
410 IndicesOut[HandleIndex] = (*TransformGroupIndex);
411 }
412 }
413 }
414
416 {
417 // first find the GTParticle matching the Transform index
418 if (ChildTransformIndex >= 0 && ChildTransformIndex < GTParticles.Num())
419 {
421 if (const FGTParticleIndices* Indices = GTParticleToIndices.Find(ChildGTParticle.Get()))
422 {
423 if (Indices->InternalClusterUniqueId != INDEX_NONE)
424 {
425 return FGeometryCollectionItemIndex::CreateInternalClusterItemIndex(Indices->InternalClusterUniqueId);
426 }
427 }
428 }
430 }
431
433 {
434 if (ensure(ItemIndex.IsInternalCluster()))
435 {
436 return InternalClusterUniqueIdxToChildrenTransformIndices.Find(ItemIndex.GetInternalClusterIndex());
437 }
438 return nullptr;
439 }
440
442 {
443 // internal cluster have no representation on the GT, so we use the child GT particle to find the matching internal cluster unique index
444 if (const FGTParticleIndices* Indices = GTParticleToIndices.Find(GTPParticle))
445 {
446 if (Indices->InternalClusterUniqueId != INDEX_NONE)
447 {
448 return FGeometryCollectionItemIndex::CreateInternalClusterItemIndex(Indices->InternalClusterUniqueId);
449 }
450 // regular particle that has a matching transform index
451 if (Indices->TransformGroupIndex != INDEX_NONE)
452 {
453 return FGeometryCollectionItemIndex::CreateTransformItemIndex(Indices->TransformGroupIndex);
454 }
455 }
457 }
458
460 {
461 if (const FGTParticleIndices* Indices = GTParticleToIndices.Find(GTPParticle))
462 {
463 if (Indices->TransformGroupIndex != INDEX_NONE)
464 {
465 return FGeometryCollectionItemIndex::CreateTransformItemIndex(Indices->TransformGroupIndex);
466 }
467 }
469 }
470
472
473 bool GetIsObjectDynamic() const { return IsObjectDynamic; }
474
476
481 CHAOS_API void SetAnchoredByIndex_External(int32 Index, bool bAnchored);
482 CHAOS_API void SetAnchoredByTransformedBox_External(const FBox& Box, const FTransform& Transform, bool bAnchored, int32 MaxLevel = INDEX_NONE);
490
492
494 CHAOS_API void SetNotifyBreakings_External(bool bNotify);
495 CHAOS_API void SetNotifyRemovals_External(bool bNotify);
497
501
503
504 FProxyInterpolationBase* GetInterpolationData() { return InterpolationData.Get(); }
505 const FProxyInterpolationBase* GetInterpolationData() const { return InterpolationData.Get(); }
506
508 {
509 Unknown,
510 Server,
511 Client,
512 };
513
514 void SetReplicationMode(EReplicationMode Mode) { ReplicationMode = Mode; }
515 EReplicationMode GetReplicationMode() const { return ReplicationMode; }
516
517 UE_DEPRECATED(5.7, "Use the overload that takes a FCombinedShapeFilterData instead") CHAOS_API void UpdateFilterData_External(const FCollisionFilterData& NewSimFilter, const FCollisionFilterData& NewQueryFilter);
518 CHAOS_API void UpdateFilterData_External(const Chaos::Filter::FCombinedShapeFilterData& NewShapeFilter);
519
521 {
522 int32 ParticleIndex = INDEX_NONE;
523 bool bIsValid = false;
524 bool bQueryEnabled = false;
525 bool bSimEnabled = false;
528 };
529
531
533 CHAOS_API void SetDamagePropagationData_External(bool bEnabled, float BreakDamagePropagationFactor, float ShockDamagePropagationFactor);
535 CHAOS_API void SetUseMaterialDamageModifiers_External(bool bUseMaterialDamageModifiers);
538 CHAOS_API void SetGravityGroupIndex_External(int32 GravityGroupIndex);
539 CHAOS_API void SetOneWayInteractionLevel_External(int32 OneWayInteractionLevel);
548
550 {
551 PostPhysicsSyncCallback = Callback;
552 }
553
555 {
556 PostParticlesCreatedCallback = Callback;
557 }
558
560
565
566 UE_DEPRECATED(5.4, "Use GetNumTransforms instead")
567 int32 GetNumParticles() const { return NumTransforms; }
568 int32 GetNumTransforms() const { return NumTransforms; }
569
570 // todo(chaos): Remove this and move to a cook time approach of the SM data based on the GC property
573
575
576 int32 GetFromParticleToTransformIndex(int32 Index) const { check(FromParticleToTransformIndex.IsValidIndex(Index)); return FromParticleToTransformIndex[Index]; }
577
578 bool GetSkipChildToParentUpdateWhenInClusterUnion() const { return bSkipChildToParentUpdateWhenInClusterUnion; };
579 void SetSkipChildToParentUpdateWhenInClusterUnion(bool bValue) { bSkipChildToParentUpdateWhenInClusterUnion = bValue; };
580
581protected:
582
584
586
595
597 CHAOS_API float AdjustMassForScale(float Mass) const;
598
601
603
616 const Chaos::FClusterCreationParameters & Parameters,
618
621
626 static CHAOS_API int32 CalculateHierarchyLevel(const FGeometryDynamicCollection& DynamicCollection, int32 TransformIndex);
627
629
631
633
635
637
639 CHAOS_API void ScaleClusterGeometry_Internal(const FVector& WorldScale);
640
642 UE_DEPRECATED(5.7, "Use the overload that takes a FCombinedShapeFilterData instead") CHAOS_API void SetFilterData_Internal(const FCollisionFilterData& NewSimFilter, const FCollisionFilterData& NewQueryFilter);
643 CHAOS_API void SetFilterData_Internal(const Chaos::Filter::FCombinedShapeFilterData& NewShapeFilter);
645 CHAOS_API void SetDamagePropagationData_Internal(bool bEnabled, float BreakDamagePropagationFactor, float ShockDamagePropagationFactor);
646 CHAOS_API void SetEnableGravity_Internal(bool bEnabled);
649 CHAOS_API void SetUseMaterialDamageModifiers_Internal(bool bUseMaterialDamageModifiers);
651 CHAOS_API void SetGravityGroupIndex_Internal(int32 GravityGroupIndex);
653 CHAOS_API void SetPhysicsMaterial_Internal(const Chaos::FMaterialHandle& MaterialHandle);
654
655private:
656
657 static TBitArray<> CalculateClustersToCreateFromChildren(const FGeometryDynamicCollection& DynamicCollection, int32 NumTransforms);
658 static int32 CalculateEffectiveParticles(const FGeometryDynamicCollection& DynamicCollection, int32 NumTransform, int32 MaxSimulatedLevel, bool bEnableClustering, const UObject* Owner, TBitArray<>& EffectiveParticles);
659
660 void CreateGTParticles(TManagedArray<Chaos::FImplicitObjectPtr>& Implicits, Chaos::FPBDRigidsEvolutionBase* Evolution, bool bInitializeRootOnly);
661 void CreateChildrenGeometry_External();
662 void SyncParticles_External();
663
675 bool PullNonInterpolatableDataFromSinglePhysicsState(const Chaos::FDirtyGeometryCollectionData& BufferData, bool bForcePullXRVW, const TBitArray<>* Seen);
676
677 FSimulationParameters Parameters;
678
679 TArray<Chaos::FPhysicsObjectUniquePtr> PhysicsObjects;
680
681 // todo : we should probably keep a simulation parameter copy on the game thread instead
682 FTransform WorldTransform_External;
683 FTransform PreviousWorldTransform_External;
684
685 //
686 // Proxy State Information
687 //
688 int32 NumTransforms;
689 int32 NumEffectiveParticles;
690 int32 BaseParticleIndex;
691 // Per object collision fraction.
692 float CollisionParticlesPerObjectFraction;
693
695 struct FFieldData
696 {
699
701 FFieldExecutionDatas ExecutionDatas;
702 };
703 // data is allocated on demand on the physics thread only ( see GetOrCreateFieldData_Internal )
704 TUniquePtr<FFieldData> FieldData_Internal;
705
706 FFieldData& GetOrCreateFieldData_Internal();
707
709
710 uint8 bIsGameThreadWorldTransformDirty : 1;
711 uint8 bHasBuiltGeometryOnPT : 1;
712 uint8 bHasBuiltGeometryOnGT : 1;
713 /* set to true once InitializeBodiesPT has been called*/
714 bool bIsInitializedOnPhysicsThread : 1 = false;
715 //
716 // Buffer Results State Information
717 //
718 bool IsObjectDynamic : 1; // Records current dynamic state
719 bool IsObjectLoading : 1; // Indicate when loaded
720 bool IsObjectDeleting : 1; // Indicate when pending deletion
721
723 bool bSkipChildToParentUpdateWhenInClusterUnion : 1;
724
725 TArray<FParticleHandle*> SolverClusterID;
726 TArray<FClusterHandle*> SolverClusterHandles; // make a TArray of the base clase with type
727 TArray<FClusterHandle*> SolverParticleHandles;// make a TArray of base class and join with above
728 TMap<FParticleHandle*, int32> HandleToTransformGroupIndex;
729 TMap<int32, FClusterHandle*> UniqueIdxToInternalClusterHandle;
730 TArray<Chaos::FUniqueIdx> UniqueIdxs;
731 TArray<int32> FromParticleToTransformIndex;
732 TArray<int32> FromTransformToParticleIndex;
733 TBitArray<> EffectiveParticles;
734
735 // Game thread particles
736 TArray<TUniquePtr<FParticle>> GTParticles;
737
738 struct FGTParticleIndices
739 {
741 int32 TransformGroupIndex = INDEX_NONE;
742
744 int32 InternalClusterUniqueId = INDEX_NONE;
745 };
746
747 TMap<FParticle*, FGTParticleIndices> GTParticleToIndices;
748 TMap<int32, TArray<int32>> InternalClusterUniqueIdxToChildrenTransformIndices;
749
750 // These are read on both threads and should not be changed
751 const FCollisionFilterData SimFilter;
752 const FCollisionFilterData QueryFilter;
753
754 // todo(chaos): Remove this and move to a cook time approach of the SM data based on the GC property
755 FCreateTraceCollisionGeometryCallback CreateTraceCollisionGeometryCallback;
756
757 // called after we sync the physics thread data ( called on the game thread )
758 TFunction<void()> PostPhysicsSyncCallback;
759 TFunction<void()> PostParticlesCreatedCallback;
760
761 // The Simulation data is copied between the game and physics thread. It is
762 // expected that the two data sets will diverge, based on how the simulation
763 // uses the data, but at the start of the simulation the PhysicsThreadCollection
764 // is a deep copy from the GameThreadCollection.
765 FGeometryDynamicCollection PhysicsThreadCollection;
766 FGeometryDynamicCollection& GameThreadCollection; // now initialize from the SharedRef passed in the constructor
767 const TSharedPtr<FGeometryDynamicCollection> GameThreadCollectionSharedPtr; // shoul dnever be null
768
769 // Currently this is using triple buffers for game-physics and
770 // physics-game thread communication, but not for any reason other than this
771 // is the only implementation we currently have of a guarded buffer - a buffer
772 // that tracks it's own state, rather than having other mechanisms determine
773 // whether or not the contents of the buffer have been updated. A double
774 // buffer would probably be fine, as that seems to be the assumption the logic
775 // currently managing the exchange is built upon. However, I believe that
776 // logic locks, and the triple buffer would enable a decoupled lock-free
777 // paradigm, at least for this component of the handshake.
779
780 TUniquePtr<FProxyInterpolationBase> InterpolationData;
781
782public:
784 template<typename ErrorDataType>
786 {
787 if (!InterpolationData.IsValid())
788 {
789 InterpolationData = MakeUnique<ErrorDataType>();
790 }
791 else if (InterpolationData.Get()->GetInterpolationType() != ErrorDataType::InterpolationType)
792 {
793 InterpolationData = MakeUnique<ErrorDataType>(InterpolationData.Get()->GetPullDataInterpIdx_External(), InterpolationData.Get()->GetInterpChannel_External());
794 }
795
796 return static_cast<ErrorDataType*>(InterpolationData.Get());
797 }
798
799private:
800#if WITH_EDITORONLY_DATA
801 // this is used as a unique ID when collecting data from runtime
803#endif
804};
805
811{
812public:
814 {
816 float MaxDamages = 0;
817 bool bIsBroken = false;
818 };
819
820 CHAOS_API void Reset(int32 NumTransforms);
821 int32 Num() const { return DamageData.Num(); }
822 const FDamageData& operator[](int32 TransformIndex) const
823 {
825 if (DamageData.IsValidIndex(TransformIndex))
826 return DamageData[TransformIndex];
827 return DefaultDamageData;
828 }
829 CHAOS_API void SampleDamage(int32 TransformIndex, float Damage, float DamageThreshold);
830
831private:
832 TArray<FDamageData> DamageData;
833};
834
836{
837public:
838 CHAOS_API void Clear();
840 CHAOS_API void RemoveCollector(const FGuid& Guid);
841
843
845
846private:
847 // collectors by geometry collection Guids
849};
850
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
EFieldObjectType
Definition FieldSystemTypes.h:103
EFieldResolutionType
Definition FieldSystemTypes.h:72
EFieldFilterType
Definition FieldSystemTypes.h:86
CHAOS_API void BuildSimulationData(Chaos::FErrorReporter &ErrorReporter, FGeometryCollection &GeometryCollection, const FSharedSimulationParameters &SharedParams)
Definition GeometryCollectionPhysicsProxy.cpp:5784
CHAOS_API TUniquePtr< Chaos::FTriangleMesh > CreateTriangleMesh(const int32 FaceStart, const int32 FaceCount, const TManagedArray< bool > &Visible, const TManagedArray< FIntVector > &Indices, bool bRotateWinding=true)
Definition GeometryCollectionPhysicsProxy.cpp:218
EDamageModelTypeEnum
Definition GeometryCollectionSimulationTypes.h:112
EPhysicsProxyType
Definition PhysicsProxyBase.h:11
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition BVHParticles.h:24
Definition ErrorReporter.h:9
Definition MultiBufferResource.h:153
const ResourceType * PeekConsumerBuffer() const
Definition MultiBufferResource.h:263
Definition PBDRigidsSOAs.h:269
Definition PBDRigidsSolver.h:84
Definition ParticleHandle.h:2724
void Reset()
Definition ParticleHandle.h:2730
Definition ArrayCollectionArray.h:15
Definition ParticleHandle.h:436
Definition ParticleHandle.h:1641
Definition ParticleHandle.h:987
Definition ParticleHandle.h:3386
Definition PBDRigidParticles.h:22
Definition Vector.h:407
Definition FieldSystem.h:522
Definition GeometryCollectionPhysicsProxy.h:143
CHAOS_API void BufferPhysicsResults_External(Chaos::FDirtyGeometryCollectionData &BufferData)
Definition GeometryCollectionPhysicsProxy.cpp:3845
CHAOS_API void OnRemoveFromScene()
Definition GeometryCollectionPhysicsProxy.cpp:3248
void EndFrameCallback(const float InDt)
Definition GeometryCollectionPhysicsProxy.h:289
CHAOS_API void RemoveAllAnchors_External()
Definition GeometryCollectionPhysicsProxy.cpp:2675
CHAOS_API void SetFilterData_Internal(const Chaos::Filter::FCombinedShapeFilterData &NewShapeFilter)
Definition GeometryCollectionPhysicsProxy.cpp:4711
bool IsGTCollectionDirty() const
Definition GeometryCollectionPhysicsProxy.h:295
CHAOS_API void SetUseMaterialDamageModifiers_External(bool bUseMaterialDamageModifiers)
Definition GeometryCollectionPhysicsProxy.cpp:3564
CHAOS_API Chaos::FPhysicsObjectHandle GetPhysicsObjectByIndex(int32 Index) const
Definition GeometryCollectionPhysicsProxy.cpp:6126
FParticle * GetInitialRootParticle_External()
Definition GeometryCollectionPhysicsProxy.h:367
CHAOS_API void UpdateDamageThreshold_Internal()
Definition GeometryCollectionPhysicsProxy.cpp:1189
const TArray< FClusterHandle * > GetParticles() const
Definition GeometryCollectionPhysicsProxy.h:307
CHAOS_API void OnUnregisteredFromSolver()
Definition GeometryCollectionPhysicsProxy.cpp:3184
TPhysicsProxy< FGeometryCollectionPhysicsProxy, FStubGeometryCollectionData, FGeometryCollectionProxyTimestamp > Base
Definition GeometryCollectionPhysicsProxy.h:145
void UpdateKinematicBodiesCallback(const FParticlesType &InParticles, const float InDt, const float InTime, FKinematicProxy &InKinematicProxy)
Definition GeometryCollectionPhysicsProxy.h:287
CHAOS_API void SetOneWayInteractionLevel_Internal(int32 InOneWayInteractionLevel)
Definition GeometryCollectionPhysicsProxy.cpp:3702
bool IsDirty()
Definition GeometryCollectionPhysicsProxy.h:240
CHAOS_API void SetNotifyGlobalBreakings_External(bool bNotify)
Definition GeometryCollectionPhysicsProxy.cpp:2975
CHAOS_API void SetDamageModel_External(EDamageModelTypeEnum DamageModel)
Definition GeometryCollectionPhysicsProxy.cpp:3547
CHAOS_API void SetClusteredParticleKinematicTarget_Internal(Chaos::FPBDRigidClusteredParticleHandle *Handle, const FTransform &WorldTransform)
Definition GeometryCollectionPhysicsProxy.cpp:3787
CHAOS_API void SetPhysicsMaterial_Internal(const Chaos::FMaterialHandle &MaterialHandle)
Definition GeometryCollectionPhysicsProxy.cpp:3738
void SetReplicationMode(EReplicationMode Mode)
Definition GeometryCollectionPhysicsProxy.h:514
bool GetIsObjectDynamic() const
Definition GeometryCollectionPhysicsProxy.h:473
const FParticleHandle * GetInitialRootParticle_Internal() const
Definition GeometryCollectionPhysicsProxy.h:371
int32 GetFromParticleToTransformIndex(int32 Index) const
Definition GeometryCollectionPhysicsProxy.h:576
CHAOS_API void SyncBeforeDestroy()
Definition GeometryCollectionPhysicsProxy.cpp:3278
CHAOS_API void FlipBuffer()
Definition GeometryCollectionPhysicsProxy.cpp:4109
CHAOS_API void BufferCommand(Chaos::FPBDRigidsSolver *RigidsSolver, const FFieldSystemCommand &Command)
Definition GeometryCollectionPhysicsProxy.cpp:5817
CHAOS_API void ApplyBreakingLinearVelocity_External(FGeometryCollectionItemIndex ItemIndex, const FVector &LinearVelocity)
Definition GeometryCollectionPhysicsProxy.cpp:2843
FSimulationParameters & GetSimParameters()
Definition GeometryCollectionPhysicsProxy.h:335
Chaos::TPBDRigidParticle< Chaos::FReal, 3 > FParticle
Definition GeometryCollectionPhysicsProxy.h:147
const FGeometryCollectionResults * GetConsumerResultsGT() const
Definition GeometryCollectionPhysicsProxy.h:268
UE_DEPRECATED(5.7, "Use the overload that takes a FCombinedShapeFilterData instead") CHAOS_API void UpdateFilterData_External(const FCollisionFilterData &NewSimFilter
void DisableCollisionsCallback(TSet< TTuple< int32, int32 > > &InPairs)
Definition GeometryCollectionPhysicsProxy.h:292
const FSimulationParameters & GetSimParameters() const
Definition GeometryCollectionPhysicsProxy.h:330
CHAOS_API void SetAnchoredByIndex_External(int32 Index, bool bAnchored)
Definition GeometryCollectionPhysicsProxy.cpp:2593
CHAOS_API void DirtyAllParticles(const Chaos::FPBDRigidsSolver &RigidsSolver)
Definition GeometryCollectionPhysicsProxy.cpp:1178
CHAOS_API void SetGravityGroupIndex_Internal(int32 GravityGroupIndex)
Definition GeometryCollectionPhysicsProxy.cpp:3669
void SetPostPhysicsSyncCallback(TFunction< void()> Callback)
Definition GeometryCollectionPhysicsProxy.h:549
CHAOS_API void ApplyImpulseAt_External(FVector Force, FVector WorldLocation)
Definition GeometryCollectionPhysicsProxy.cpp:2488
const FParticle * GetInitialRootParticle_External() const
Definition GeometryCollectionPhysicsProxy.h:368
CHAOS_API void SetWorldTransform_External(const FTransform &WorldTransform)
Definition GeometryCollectionPhysicsProxy.cpp:3324
FGeometryCollectionItemIndex GetItemIndexFromGTParticle_External(const FParticle *GTPParticle) const
Definition GeometryCollectionPhysicsProxy.h:441
CHAOS_API void SetPerParticleFilterData_Internal(const TArray< FParticleCollisionFilterData > &PerParticleData)
Definition GeometryCollectionPhysicsProxy.cpp:4771
CHAOS_API void ApplyBreakingAngularVelocity_External(FGeometryCollectionItemIndex ItemIndex, const FVector &AngularVelocity)
Definition GeometryCollectionPhysicsProxy.cpp:2867
CHAOS_API void BreakClusters_External(TArray< FGeometryCollectionItemIndex > &&ItemIndices)
Definition GeometryCollectionPhysicsProxy.cpp:2528
CHAOS_API void SetDamageModel_Internal(EDamageModelTypeEnum DamageModel)
Definition GeometryCollectionPhysicsProxy.cpp:3556
CHAOS_API void SetEnableGravity_External(bool EnableGravity_External)
Definition GeometryCollectionPhysicsProxy.cpp:3620
CHAOS_API void BufferGameState()
Definition GeometryCollectionPhysicsProxy.cpp:3316
CHAOS_API void SetUseStaticMeshCollisionForTraces_External(bool bInUseStaticMeshCollisionForTraces)
Definition GeometryCollectionPhysicsProxy.cpp:3467
const FProxyInterpolationBase * GetInterpolationData() const
Definition GeometryCollectionPhysicsProxy.h:505
void ClearAccumulatedData()
Definition GeometryCollectionPhysicsProxy.h:217
FClusterHandle * GetParticle_Internal(int32 Index) const
Definition GeometryCollectionPhysicsProxy.h:317
CHAOS_API FName GetTransformName_External(FGeometryCollectionItemIndex ItemIndex) const
Definition GeometryCollectionPhysicsProxy.cpp:2416
static CHAOS_API int32 CalculateHierarchyLevel(const FGeometryDynamicCollection &DynamicCollection, int32 TransformIndex)
Definition GeometryCollectionPhysicsProxy.cpp:3006
void GetTransformGroupIndicesFromHandles(const TArray< FParticleHandle * > Handles, TArray< int32 > &IndicesOut) const
Definition GeometryCollectionPhysicsProxy.h:402
CHAOS_API void BreakActiveClusters_External()
Definition GeometryCollectionPhysicsProxy.cpp:2549
void SetPostParticlesCreatedCallback(TFunction< void()> Callback)
Definition GeometryCollectionPhysicsProxy.h:554
TArray< TUniquePtr< FParticle > > & GetUnorderedParticles_External()
Definition GeometryCollectionPhysicsProxy.h:356
const TArray< int32 > * FindInternalClusterChildrenTransformIndices_External(FGeometryCollectionItemIndex ItemIndex) const
Definition GeometryCollectionPhysicsProxy.h:432
CHAOS_API void PushToPhysicsState()
Definition GeometryCollectionPhysicsProxy.cpp:3781
CHAOS_API TArray< Chaos::FPhysicsObjectHandle > GetAllPhysicsObjects() const
Definition GeometryCollectionPhysicsProxy.cpp:6091
TArray< FClusterHandle * > & GetSolverParticleHandles()
Definition GeometryCollectionPhysicsProxy.h:256
bool IsInitializedOnPhysicsThread() const
Definition GeometryCollectionPhysicsProxy.h:190
CHAOS_API void InitializeBodiesPT(Chaos::FPBDRigidsSolver *RigidsSolver, typename Chaos::FPBDRigidsSolver::FParticlesType &Particles)
Definition GeometryCollectionPhysicsProxy.cpp:1244
CHAOS_API float AdjustMassForScale(float Mass) const
Definition GeometryCollectionPhysicsProxy.cpp:1937
int32 GetNumParticles() const
Definition GeometryCollectionPhysicsProxy.h:567
CHAOS_API void ApplyAngularVelocity_External(FGeometryCollectionItemIndex ItemIndex, const FVector &AngularVelocity)
Definition GeometryCollectionPhysicsProxy.cpp:2911
CHAOS_API void SetNotifyGlobalRemovals_External(bool bNotify)
Definition GeometryCollectionPhysicsProxy.cpp:2989
FGeometryDynamicCollection & GetExternalCollection()
Definition GeometryCollectionPhysicsProxy.h:345
CHAOS_API void SetDamagePropagationData_Internal(bool bEnabled, float BreakDamagePropagationFactor, float ShockDamagePropagationFactor)
Definition GeometryCollectionPhysicsProxy.cpp:3540
Chaos::FParticleData * NewData()
Definition GeometryCollectionPhysicsProxy.h:213
ErrorDataType * GetOrCreateErrorInterpolationData()
Definition GeometryCollectionPhysicsProxy.h:785
CHAOS_API void SetGravityGroupIndex_External(int32 GravityGroupIndex)
Definition GeometryCollectionPhysicsProxy.cpp:3660
FProxyInterpolationBase * GetInterpolationData()
Definition GeometryCollectionPhysicsProxy.h:504
Chaos::TPBDRigidParticleHandle< Chaos::FReal, 3 > FParticleHandle
Definition GeometryCollectionPhysicsProxy.h:148
CHAOS_API void SetEnableGravity_Internal(bool bEnabled)
Definition GeometryCollectionPhysicsProxy.cpp:3637
int32 GetTransformGroupIndexFromHandle(const FParticleHandle *Handle) const
Definition GeometryCollectionPhysicsProxy.h:393
TArray< FClusterHandle * > & GetSolverClusterHandles()
Definition GeometryCollectionPhysicsProxy.h:253
CHAOS_API void SetPhysicsMaterial_External(const Chaos::FMaterialHandle &MaterialHandle)
Definition GeometryCollectionPhysicsProxy.cpp:3717
CHAOS_API void FieldParameterUpdateCallback(Chaos::FPBDRigidsSolver *RigidSolver, const bool bUpdateViews=true)
Definition GeometryCollectionPhysicsProxy.cpp:5829
FGeometryCollectionItemIndex GetInternalClusterParentItemIndex_External(int32 ChildTransformIndex) const
Definition GeometryCollectionPhysicsProxy.h:415
CHAOS_API void RebaseAllGameThreadCollectionTransformsOnNewWorldTransform_External()
Definition GeometryCollectionPhysicsProxy.cpp:6176
const FTransform & GetWorldTransform_External()
Definition GeometryCollectionPhysicsProxy.h:300
void CreateRigidBodyCallback(FParticlesType &InOutParticles)
Definition GeometryCollectionPhysicsProxy.h:291
FCollisionStructureManager::FSimplicial FSimplicial
Definition GeometryCollectionPhysicsProxy.h:146
void StartFrameCallback(const float InDt, const float InTime)
Definition GeometryCollectionPhysicsProxy.h:288
static CHAOS_API void InitializeSharedCollisionStructures(Chaos::FErrorReporter &ErrorReporter, FGeometryCollection &RestCollection, const FSharedSimulationParameters &SharedParams)
Definition GeometryCollectionPhysicsProxy.cpp:5176
CHAOS_API void ScaleClusterGeometry_Internal(const FVector &WorldScale)
Definition GeometryCollectionPhysicsProxy.cpp:3345
CHAOS_API void SetNotifyRemovals_External(bool bNotify)
Definition GeometryCollectionPhysicsProxy.cpp:2958
CHAOS_API void SetUseMaterialDamageModifiers_Internal(bool bUseMaterialDamageModifiers)
Definition GeometryCollectionPhysicsProxy.cpp:3573
static constexpr EPhysicsProxyType ConcreteType()
Definition GeometryCollectionPhysicsProxy.h:242
CHAOS_API void CreateChildrenGeometry_Internal()
Definition GeometryCollectionPhysicsProxy.cpp:1732
CHAOS_API void SetDamageThresholds_External(const TArray< float > &DamageThresholds)
Definition GeometryCollectionPhysicsProxy.cpp:3515
CHAOS_API void ApplyForceAt_External(FVector Force, FVector WorldLocation)
Definition GeometryCollectionPhysicsProxy.cpp:2450
void SetCollisionParticlesPerObjectFraction(float CollisionParticlesPerObjectFractionIn)
Definition GeometryCollectionPhysicsProxy.h:249
CHAOS_API Chaos::FVec3f AdjustInertiaForScale(const Chaos::FVec3f &Inertia) const
Definition GeometryCollectionPhysicsProxy.cpp:1945
CHAOS_API Chaos::FPBDRigidClusteredParticleHandle * FindClusteredParticleHandleByItemIndex_Internal(FGeometryCollectionItemIndex ItemIndex) const
Definition GeometryCollectionPhysicsProxy.cpp:1137
CHAOS_API FParticle * GetParticleByIndex_External(int32 Index)
Definition GeometryCollectionPhysicsProxy.cpp:6139
CHAOS_API void PushStateOnGameThread(Chaos::FPBDRigidsSolver *InSolver)
Definition GeometryCollectionPhysicsProxy.cpp:3775
CHAOS_API void CreateNonClusteredParticles(Chaos::FPBDRigidsSolver *RigidsSolver, const FGeometryCollection &RestCollection, const FGeometryDynamicCollection &DynamicCollection)
Definition GeometryCollectionPhysicsProxy.cpp:1070
CHAOS_API Chaos::TPBDGeometryCollectionParticleHandle< Chaos::FReal, 3 > * BuildNonClusters_Internal(const uint32 CollectionClusterIndex, Chaos::FPBDRigidsSolver *RigidsSolver, float Mass, Chaos::FVec3f Inertia, const Chaos::FUniqueIdx *ExistingIndex)
Definition GeometryCollectionPhysicsProxy.cpp:1952
void BindParticleCallbackMapping(Chaos::TArrayCollectionArray< PhysicsProxyWrapper > &PhysicsProxyReverseMap, Chaos::TArrayCollectionArray< int32 > &ParticleIDReverseMap)
Definition GeometryCollectionPhysicsProxy.h:290
CHAOS_API void SetDamageThresholds_Internal(const TArray< float > &DamageThresholds)
Definition GeometryCollectionPhysicsProxy.cpp:3524
static CHAOS_API bool NeedToInitializeSharedCollisionStructures(const FGeometryCollection &RestCollection)
Definition GeometryCollectionPhysicsProxy.cpp:5161
CHAOS_API void SetSleepingState(const Chaos::FPBDRigidsSolver &RigidsSolver)
Definition GeometryCollectionPhysicsProxy.cpp:1163
CHAOS_API void SetDamagePropagationData_External(bool bEnabled, float BreakDamagePropagationFactor, float ShockDamagePropagationFactor)
Definition GeometryCollectionPhysicsProxy.cpp:3531
FParticleHandle * GetInitialRootParticle_Internal()
Definition GeometryCollectionPhysicsProxy.h:370
static CHAOS_API int32 CalculateAndSetLevel(int32 TransformGroupIdx, const TManagedArray< int32 > &Parent, TManagedArray< int32 > &Levels)
Definition GeometryCollectionPhysicsProxy.cpp:3135
void SetCreateTraceCollisionGeometryCallback(FCreateTraceCollisionGeometryCallback InCreateGeometryCallback)
Definition GeometryCollectionPhysicsProxy.h:572
CHAOS_API bool PullFromPhysicsState(const Chaos::FDirtyGeometryCollectionData &BufferData, const int32 SolverSyncTimestamp, const Chaos::FDirtyGeometryCollectionData *NextPullData=nullptr, const Chaos::FRealSingle *Alpha=nullptr, const Chaos::FDirtyRigidParticleReplicationErrorData *Error=nullptr, const Chaos::FReal AsyncFixedTimeStep=0)
Definition GeometryCollectionPhysicsProxy.cpp:4422
const FTransform & GetPreviousWorldTransform_External() const
Definition GeometryCollectionPhysicsProxy.h:299
CHAOS_API void OnRemoveFromSolver(Chaos::FPBDRigidsSolver *RBDSolver)
Definition GeometryCollectionPhysicsProxy.cpp:3189
UE_DEPRECATED(5.7, "Use the overload that takes a FCombinedShapeFilterData instead") CHAOS_API void SetFilterData_Internal(const FCollisionFilterData &NewSimFilter
CHAOS_API void SetNotifyGlobalCrumblings_External(bool bNotify, bool bIncludeChildren)
Definition GeometryCollectionPhysicsProxy.cpp:2995
FClusterHandle * GetSolverClusterHandle_Internal(int32 Index) const
Definition GeometryCollectionPhysicsProxy.h:258
CHAOS_API FParticleHandle * GetParticleByIndex_Internal(int32 Index)
Definition GeometryCollectionPhysicsProxy.cpp:6157
CHAOS_API float ComputeUserDefinedDamageThreshold_Internal(int32 TransformIndex) const
Definition GeometryCollectionPhysicsProxy.cpp:1889
CHAOS_API void GetRelevantParticleHandles(TArray< Chaos::TGeometryParticleHandle< Chaos::FReal, 3 > * > &Handles, const Chaos::FPBDRigidsSolver *RigidSolver, EFieldResolutionType ResolutionType)
Definition GeometryCollectionPhysicsProxy.cpp:2291
CHAOS_API FClusterHandle * GetInitialRootHandle_Internal() const
Definition GeometryCollectionPhysicsProxy.cpp:6081
CHAOS_API void BufferFieldCommand_External(FFieldSystemCommand &&Command)
Definition GeometryCollectionPhysicsProxy.cpp:5803
CHAOS_API float ComputeMaterialBasedDamageThreshold_Internal(Chaos::FPBDRigidClusteredParticleHandle &ClusteredParticle) const
Definition GeometryCollectionPhysicsProxy.cpp:1845
CHAOS_API void SetMaterialOverrideMassScaleMultiplier_Internal(float InMultiplier)
Definition GeometryCollectionPhysicsProxy.cpp:3589
int32 GetNumTransforms() const
Definition GeometryCollectionPhysicsProxy.h:568
CHAOS_API void ApplyLinearVelocity_External(FGeometryCollectionItemIndex ItemIndex, const FVector &LinearVelocity)
Definition GeometryCollectionPhysicsProxy.cpp:2891
const TArray< FClusterHandle * > GetUnorderedParticles_Internal() const
Definition GeometryCollectionPhysicsProxy.h:312
bool IsSimulating() const
Definition GeometryCollectionPhysicsProxy.h:205
CHAOS_API void SetOneWayInteractionLevel_External(int32 OneWayInteractionLevel)
Definition GeometryCollectionPhysicsProxy.cpp:3682
void Reset()
Definition GeometryCollectionPhysicsProxy.h:188
const FCollisionFilterData & NewQueryFilter
Definition GeometryCollectionPhysicsProxy.h:517
EReplicationMode
Definition GeometryCollectionPhysicsProxy.h:508
CHAOS_API void BufferFieldCommand_Internal(Chaos::FPBDRigidsSolver *RigidsSolver, const FFieldSystemCommand &Command)
Definition GeometryCollectionPhysicsProxy.cpp:5822
FGeometryCollectionItemIndex GetItemIndexFromGTParticleNoInternalCluster_External(const FParticle *GTPParticle) const
Definition GeometryCollectionPhysicsProxy.h:459
bool RebaseParticleGameThreadCollectionTransformOnNewWorldTransform_External(int32 ParticleIndex, const TManagedArray< FTransform > &MassToLocal, bool bIsComponentTransformScaled, const FTransform &ComponentScaleTransform)
Definition GeometryCollectionPhysicsProxy.cpp:6199
CHAOS_API Chaos::FPBDRigidClusteredParticleHandle * BuildClusters_Internal(const uint32 CollectionClusterIndex, TArray< Chaos::FPBDRigidParticleHandle * > &ChildHandles, const TArray< int32 > &ChildTransformGroupIndices, const Chaos::FClusterCreationParameters &Parameters, const Chaos::FUniqueIdx *ExistingIndex)
Definition GeometryCollectionPhysicsProxy.cpp:2070
TFunction< void(const FTransform &InToLocal, TArray< Chaos::FImplicitObjectPtr > &OutGeoms, Chaos::FShapesArray &OutShapes)> FCreateTraceCollisionGeometryCallback
Definition GeometryCollectionPhysicsProxy.h:571
CHAOS_API void SetEnableDamageFromCollision_External(bool bEnable)
Definition GeometryCollectionPhysicsProxy.cpp:2940
FGeometryDynamicCollection & GetPhysicsCollection()
Definition GeometryCollectionPhysicsProxy.h:340
CHAOS_API void SetWorldTransform_Internal(const FTransform &WorldTransform, bool bInSkipChildToParentUpdateWhenInClusterUnion=false)
Definition GeometryCollectionPhysicsProxy.cpp:3368
CHAOS_API void DisableParticles_External(TArray< int32 > &&TransformGroupIndices)
Definition GeometryCollectionPhysicsProxy.cpp:2431
CHAOS_API void UpdateFilterData_External(const Chaos::Filter::FCombinedShapeFilterData &NewShapeFilter)
Definition GeometryCollectionPhysicsProxy.cpp:4677
CHAOS_API void SetNotifyCrumblings_External(bool bNotify, bool bIncludeChildren)
Definition GeometryCollectionPhysicsProxy.cpp:2964
virtual void * GetHandleUnsafe() const override
Definition GeometryCollectionPhysicsProxy.h:391
CHAOS_API void UpdatePerParticleFilterData_External(const TArray< FParticleCollisionFilterData > &Data)
Definition GeometryCollectionPhysicsProxy.cpp:4760
CHAOS_API void FieldForcesUpdateCallback(Chaos::FPBDRigidsSolver *RigidSolver)
Definition GeometryCollectionPhysicsProxy.cpp:6028
CHAOS_API void SetProxyDirty_External()
Definition GeometryCollectionPhysicsProxy.cpp:2931
CHAOS_API TArray< Chaos::FPhysicsObjectHandle > GetAllPhysicsObjectIncludingNulls() const
Definition GeometryCollectionPhysicsProxy.cpp:6106
void AddForceCallback(FParticlesType &InParticles, const float InDt, const int32 InIndex)
Definition GeometryCollectionPhysicsProxy.h:293
void SetSkipChildToParentUpdateWhenInClusterUnion(bool bValue)
Definition GeometryCollectionPhysicsProxy.h:579
CHAOS_API void ApplyInternalStrain_External(FGeometryCollectionItemIndex ItemIndex, const FVector &WorldLocation, float Radius, int32 PropagationDepth, float PropagationFactor, float StrainValue)
Definition GeometryCollectionPhysicsProxy.cpp:2783
Chaos::TPBDRigidClusteredParticleHandle< Chaos::FReal, 3 > FClusterHandle
Definition GeometryCollectionPhysicsProxy.h:149
CHAOS_API void ApplyExternalStrain_External(FGeometryCollectionItemIndex ItemIndex, const FVector &WorldLocation, float Radius, int32 PropagationDepth, float PropagationFactor, float StrainValue)
Definition GeometryCollectionPhysicsProxy.cpp:2760
CHAOS_API void PrepareBufferData(Chaos::FDirtyGeometryCollectionData &BufferData, const FGeometryDynamicCollection &ThreadCollection, Chaos::FReal SolverLastDt=0.0)
Definition GeometryCollectionPhysicsProxy.cpp:3831
CHAOS_API void BufferPhysicsResults_Internal(Chaos::FPBDRigidsSolver *CurrentSolver, Chaos::FDirtyGeometryCollectionData &BufferData)
Definition GeometryCollectionPhysicsProxy.cpp:3893
CHAOS_API void SetMaterialOverrideMassScaleMultiplier_External(float InMultiplier)
Definition GeometryCollectionPhysicsProxy.cpp:3580
CHAOS_API void GetFilteredParticleHandles(TArray< Chaos::TGeometryParticleHandle< Chaos::FReal, 3 > * > &Handles, const Chaos::FPBDRigidsSolver *RigidSolver, const EFieldFilterType FilterType, const EFieldObjectType ObjectType)
Definition GeometryCollectionPhysicsProxy.cpp:2216
TArray< TUniquePtr< FParticle > > & GetExternalParticles()
Definition GeometryCollectionPhysicsProxy.h:351
bool GetSkipChildToParentUpdateWhenInClusterUnion() const
Definition GeometryCollectionPhysicsProxy.h:578
EReplicationMode GetReplicationMode() const
Definition GeometryCollectionPhysicsProxy.h:515
CHAOS_API void SetAnchoredByTransformedBox_External(const FBox &Box, const FTransform &Transform, bool bAnchored, int32 MaxLevel=INDEX_NONE)
Definition GeometryCollectionPhysicsProxy.cpp:2614
CHAOS_API void SetNotifyBreakings_External(bool bNotify)
Definition GeometryCollectionPhysicsProxy.cpp:2949
static CHAOS_API void InitializeDynamicCollection(FGeometryDynamicCollection &DynamicCollection, const FGeometryCollection &RestCollection, const FSimulationParameters &Params)
Definition GeometryCollectionPhysicsProxy.cpp:1016
Definition GeometryCollectionProxyData.h:237
Definition GeometryCollection.h:32
Definition GeometryCollectionProxyData.h:90
Definition NameTypes.h:617
Definition GeometryCollectionPhysicsProxy.h:118
Chaos::FParticleData Base
Definition GeometryCollectionPhysicsProxy.h:120
void Reset()
Definition GeometryCollectionPhysicsProxy.h:127
const FGeometryCollectionResults * GetStateData() const
Definition GeometryCollectionPhysicsProxy.h:132
FStubGeometryCollectionData(const FGeometryCollectionResults *DataIn=nullptr)
Definition GeometryCollectionPhysicsProxy.h:122
UObject * Owner
Definition PhysicsProxyBase.h:190
SOLVER_TYPE * GetSolver() const
Definition PhysicsProxyBase.h:110
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
Definition BitArray.h:350
Definition AndroidPlatformMisc.h:14
Definition ManagedArray.h:1099
Definition UnrealString.h.inl:34
Definition PhysicsProxy.h:45
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
bool IsValid() const
Definition UniquePtr.h:280
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition Object.h:95
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
float FRealSingle
Definition Real.h:14
Definition CollectionBoundsFacade.cpp:13
U16 Index
Definition radfft.cpp:71
Definition ClusterCreationParameters.h:14
Definition PullPhysicsDataImp.h:68
Definition PullPhysicsDataImp.h:62
Definition PhysicalMaterials.h:24
Definition PhysicsObjectInternal.h:16
Definition GeometryParticlesfwd.h:87
Definition CollisionFilterData.h:46
Definition GeometryCollectionPhysicsProxy.h:814
float MaxDamages
Definition GeometryCollectionPhysicsProxy.h:816
bool bIsBroken
Definition GeometryCollectionPhysicsProxy.h:817
float DamageThreshold
Definition GeometryCollectionPhysicsProxy.h:815
Definition GeometryCollectionPhysicsProxy.h:811
const FDamageData & operator[](int32 TransformIndex) const
Definition GeometryCollectionPhysicsProxy.h:822
int32 Num() const
Definition GeometryCollectionPhysicsProxy.h:821
CHAOS_API void SampleDamage(int32 TransformIndex, float Damage, float DamageThreshold)
Definition GeometryCollectionPhysicsProxy.cpp:6240
Definition FieldSystem.h:76
Definition GeometryCollectionPhysicsProxy.h:41
int32 GetInternalClusterIndex() const
Definition GeometryCollectionPhysicsProxy.h:75
static FGeometryCollectionItemIndex CreateTransformItemIndex(int32 TransformIndex)
Definition GeometryCollectionPhysicsProxy.h:48
bool IsInternalCluster() const
Definition GeometryCollectionPhysicsProxy.h:70
FGeometryCollectionItemIndex(const FGeometryCollectionItemIndex &Other)
Definition GeometryCollectionPhysicsProxy.h:66
bool IsValid() const
Definition GeometryCollectionPhysicsProxy.h:87
int32 GetItemIndex() const
Definition GeometryCollectionPhysicsProxy.h:92
int32 GetTransformIndex() const
Definition GeometryCollectionPhysicsProxy.h:81
static FGeometryCollectionItemIndex CreateInternalClusterItemIndex(int32 ClusterUniqueIdx)
Definition GeometryCollectionPhysicsProxy.h:43
static FGeometryCollectionItemIndex CreateFromExistingItemIndex(int32 ItemIndex)
Definition GeometryCollectionPhysicsProxy.h:53
static FGeometryCollectionItemIndex CreateInvalidItemIndex()
Definition GeometryCollectionPhysicsProxy.h:60
bool operator==(const FGeometryCollectionItemIndex &Other) const
Definition GeometryCollectionPhysicsProxy.h:97
Definition GeometryCollectionPhysicsProxy.h:521
FCollisionFilterData SimFilter
Definition GeometryCollectionPhysicsProxy.h:527
FCollisionFilterData QueryFilter
Definition GeometryCollectionPhysicsProxy.h:526
Definition Guid.h:109
bool IsDirty() const
Definition ManagedArrayCollection.h:591
Definition PhysicsProxyBase.h:258
Definition GeometryCollectionPhysicsProxy.h:836
static CHAOS_API FRuntimeDataCollector & GetInstance()
Definition GeometryCollectionPhysicsProxy.cpp:6251
CHAOS_API void RemoveCollector(const FGuid &Guid)
Definition GeometryCollectionPhysicsProxy.cpp:6273
CHAOS_API void Clear()
Definition GeometryCollectionPhysicsProxy.cpp:6257
CHAOS_API void AddCollector(const FGuid &Guid, int32 TransformNum)
Definition GeometryCollectionPhysicsProxy.cpp:6267
Definition GeometryCollectionSimulationCoreTypes.h:92
Definition GeometryCollectionSimulationCoreTypes.h:171
int32 InitialRootIndex
Definition GeometryCollectionSimulationCoreTypes.h:356
bool Simulating
Definition GeometryCollectionSimulationCoreTypes.h:384
Definition NumericLimits.h:41
Definition Tuple.h:652