25class FPBDRigidsEvolutionGBF;
27struct FDirtyRigidParticleData;
54class FRigidBodyHandle_External;
55class FRigidBodyHandle_Internal;
176 template<
typename ErrorDataType>
179 if (!InterpolationData.
IsValid())
206template <
bool bExternal>
236 SetObjectStateHelper(*GetProxy(), *Dyn, EObjectStateType::Dynamic, true);
257 SetObjectStateHelper(*GetProxy(), *Dyn, EObjectStateType::Dynamic, true);
299 return Kinematic->GetV();
319 auto Dyn = Particle->CastToRigidParticle();
320 if (Dyn && Dyn->ObjectState() == EObjectStateType::Sleeping && !InV.IsNearlyZero())
322 SetObjectStateHelper(*GetProxy(), *Dyn, EObjectStateType::Dynamic, true);
334 return Read([](
auto* Particle)
336 if (
auto Kinematic = Particle->CastToKinematicParticle())
338 return Kinematic->GetW();
355 if (
auto Kinematic = Particle->CastToKinematicParticle())
359 auto Dyn = Particle->CastToRigidParticle();
360 if (Dyn && Dyn->ObjectState() == EObjectStateType::Sleeping && !InW.IsNearlyZero())
362 SetObjectStateHelper(*GetProxy(), *Dyn, EObjectStateType::Dynamic, true);
381 if (
auto Kinematic = Ptr->CastToKinematicParticle())
383 Kinematic->SetKinematicTarget(InKinematicTarget, bInvalidate);
392 return Read([](
auto* Particle)
394 if (
auto Rigid = Particle->CastToRigidParticle())
396 return Rigid->GravityEnabled();
407 if (
auto Rigid = Particle->CastToRigidParticle())
409 return Rigid->SetGravityEnabled(InGravityEnabled);
416 return Read([](
auto* Particle)
418 if (
auto Rigid = Particle->CastToRigidParticle())
420 return Rigid->GravityGroupIndex();
431 if (
auto Rigid = Particle->CastToRigidParticle())
433 return Rigid->SetGravityGroupIndex(InGravityGroupIndex);
440 return Read([](
auto* Particle)
442 if (
auto Rigid = Particle->CastToRigidParticle())
444 return Rigid->UpdateKinematicFromSimulation();
455 if (
auto Rigid = Particle->CastToRigidParticle())
457 return Rigid->SetUpdateKinematicFromSimulation(InUpdateKinematicFromSimulation);
464 return Read([](
auto* Particle)
466 if (
auto Rigid = Particle->CastToRigidParticle())
468 return Rigid->GyroscopicTorqueEnabled();
479 if (
auto Rigid = Particle->CastToRigidParticle())
481 return Rigid->SetGyroscopicTorqueEnabled(InGyroscopicTorqueEnabled);
488 return Read([](
auto* Particle)
490 if (
auto Rigid = Particle->CastToRigidParticle())
492 return Rigid->CCDEnabled();
503 if (
auto Rigid = Particle->CastToRigidParticle())
505 return Rigid->SetCCDEnabled(InCCDEnabled);
512 return Read([](
auto* Particle)
514 if (
auto Rigid = Particle->CastToRigidParticle())
516 return Rigid->MACDEnabled();
527 if (
auto Rigid = Particle->CastToRigidParticle())
529 return Rigid->SetMACDEnabled(InMACDEnabled);
536 return Read([](
auto* Particle)
538 if (
auto Rigid = Particle->CastToRigidParticle())
540 return Rigid->PartialIslandSleepAllowed();
551 if (
auto Rigid = Particle->CastToRigidParticle())
553 return Rigid->SetPartialIslandSleepAllowed(InPartialIslandSleepAllowed);
562 if (
auto Rigid = Particle->CastToRigidParticle())
564 return Rigid->SetPositionSolverIterations(PositionSolverIterationsIn);
573 if (
auto Rigid = Particle->CastToRigidParticle())
575 return Rigid->SetVelocitySolverIterations(VelocitySolverIterationsIn);
584 if (
auto Rigid = Particle->CastToRigidParticle())
586 return Rigid->SetProjectionSolverIterations(ProjectionSolverIterationsIn);
593 return Read([](
auto* Particle)
595 if (
auto Rigid = Particle->CastToRigidParticle())
597 return Rigid->OneWayInteraction();
608 if (
auto Rigid = Particle->CastToRigidParticle())
610 return Rigid->SetOneWayInteraction(bInOneWayInteraction);
617 return Read([](
auto* Particle)
619 if (
auto Rigid = Particle->CastToRigidParticle())
621 return Rigid->InertiaConditioningEnabled();
632 if (
auto Rigid = Particle->CastToRigidParticle())
634 return Rigid->SetInertiaConditioningEnabled(bInEnabled);
641 Write([ResimType](
auto* Particle)
643 if (
auto Rigid = Particle->CastToRigidParticle())
645 return Rigid->SetResimType(ResimType);
652 if (
auto Rigid = Particle->CastToRigidParticle())
654 return Rigid->ResimType();
657 return EResimType::FullResim;
662 return Read([](
auto* Particle)
664 if (
auto Rigid = Particle->CastToRigidParticle())
666 return Rigid->Acceleration();
677 if (
auto Rigid = Particle->CastToRigidParticle())
679 if (Rigid->ObjectState() == EObjectStateType::Sleeping || Rigid->ObjectState() == EObjectStateType::Dynamic)
683 SetObjectStateHelper(*GetProxy(), *Rigid, EObjectStateType::Dynamic, true);
686 Rigid->SetAcceleration(Acceleration);
696 if (
auto*
Rigid = Particle->CastToRigidParticle())
698 if (Rigid->ObjectState() == EObjectStateType::Sleeping || Rigid->ObjectState() == EObjectStateType::Dynamic)
702 SetObjectStateHelper(*GetProxy(), *Rigid, EObjectStateType::Dynamic, true);
705 Rigid->AddForce(InForce, bInvalidate);
715 if (
auto Rigid = Particle->CastToRigidParticle())
717 if (Rigid->ObjectState() == EObjectStateType::Sleeping || Rigid->ObjectState() == EObjectStateType::Dynamic)
721 SetObjectStateHelper(*GetProxy(), *Rigid, EObjectStateType::Dynamic, true);
724 Rigid->SetAngularAcceleration(AngularAcceleration);
732 return Read([](
auto* Particle)
734 if (
auto Rigid = Particle->CastToRigidParticle())
736 return Rigid->AngularAcceleration();
747 if (
auto*
Rigid = Particle->CastToRigidParticle())
749 if (Rigid->ObjectState() == EObjectStateType::Sleeping || Rigid->ObjectState() == EObjectStateType::Dynamic)
753 SetObjectStateHelper(*GetProxy(), *Rigid, EObjectStateType::Dynamic, true);
756 Rigid->AddTorque(InTorque, bInvalidate);
764 return Read([](
auto* Particle)
766 if (
auto Rigid = Particle->CastToRigidParticle())
768 return Rigid->LinearImpulseVelocity();
777 return Read([](
auto* Particle)
779 if (
auto Rigid = Particle->CastToRigidParticle())
781 return Rigid->LinearImpulseVelocity() * Rigid->M();
792 if (
auto Rigid = Particle->CastToRigidParticle())
794 if (Rigid->ObjectState() == EObjectStateType::Sleeping || Rigid->ObjectState() == EObjectStateType::Dynamic)
798 SetObjectStateHelper(*GetProxy(), *Rigid, EObjectStateType::Dynamic, true);
803 Rigid->SetLinearImpulseVelocity(InLinearImpulse, bInvalidate);
807 Rigid->SetLinearImpulseVelocity(InLinearImpulse * Rigid->InvM(), bInvalidate);
816 return Read([](
auto* Particle)
818 if (
auto Rigid = Particle->CastToRigidParticle())
820 return Rigid->AngularImpulseVelocity();
829 return Read([](
auto* Particle)
831 if (
auto Rigid = Particle->CastToRigidParticle())
833 const FMatrix33 WorldI = Utilities::ComputeWorldSpaceInertia(Rigid->GetR() * Rigid->RotationOfMass(), Rigid->I());
834 return WorldI * Rigid->AngularImpulseVelocity();
845 if (
auto Rigid = Particle->CastToRigidParticle())
847 if (Rigid->ObjectState() == EObjectStateType::Sleeping || Rigid->ObjectState() == EObjectStateType::Dynamic)
851 SetObjectStateHelper(*GetProxy(), *Rigid, EObjectStateType::Dynamic, true);
856 Rigid->SetAngularImpulseVelocity(InAngularImpulse, bInvalidate);
860 const FMatrix33 WorldInvI = Utilities::ComputeWorldSpaceInertia(Rigid->GetR() * Rigid->RotationOfMass(), Rigid->InvI());
861 Rigid->SetAngularImpulseVelocity(WorldInvI * InAngularImpulse, bInvalidate);
870 return Read([](
auto* Particle)
872 if (
auto Rigid = Particle->CastToRigidParticle())
885 if (
auto Rigid = Particle->CastToRigidParticle())
894 return Read([](
auto* Particle)
896 if (
auto Rigid = Particle->CastToRigidParticle())
898 return Rigid->InvI();
909 if (
auto Rigid = Particle->CastToRigidParticle())
911 Rigid->SetInvI(InInvI);
920 if (
auto Rigid = Particle->CastToRigidParticle())
933 if (
auto Rigid = Particle->CastToRigidParticle())
944 if (
auto Rigid = Particle->CastToRigidParticle())
946 return Rigid->InvM();
957 if (
auto Rigid = Particle->CastToRigidParticle())
959 Rigid->SetInvM(InInvM);
966 return Read([](
auto* Particle)
968 if (
auto Rigid = Particle->CastToRigidParticle())
970 return Rigid->CenterOfMass();
981 if (
auto Rigid = Particle->CastToRigidParticle())
983 Rigid->SetCenterOfMass(InCenterOfMass, bInvalidate);
990 return Read([](
auto* Particle)
992 if (
auto Rigid = Particle->CastToRigidParticle())
994 return Rigid->RotationOfMass();
997 return FRotation3::FromIdentity();
1005 if (
auto Rigid = Particle->CastToRigidParticle())
1007 Rigid->SetRotationOfMass(InRotationOfMass, bInvalidate);
1016 if (
auto Rigid = Particle->CastToRigidParticle())
1018 return Rigid->LinearEtherDrag();
1029 if (
auto Rigid = Particle->CastToRigidParticle())
1031 Rigid->SetLinearEtherDrag(InLinearEtherDrag);
1040 if (
auto Rigid = Particle->CastToRigidParticle())
1042 return Rigid->AngularEtherDrag();
1053 if (
auto Rigid = Particle->CastToRigidParticle())
1055 Rigid->SetAngularEtherDrag(InAngularEtherDrag);
1065 if (
auto Rigid = Ptr->CastToRigidParticle())
1067 SetObjectStateHelper(*this, *Rigid, InState, bAllowEvents, bInvalidate);
1077 if (
auto Rigid = Particle->CastToRigidParticle())
1079 return Rigid->SetSleepType(InSleepType);
1086 if (
auto Rigid = Particle->CastToRigidParticle())
1088 return Rigid->SleepType();
1091 return ESleepType::MaterialSleep;
1097#if PHYSICS_THREAD_CONTEXT
1104 if(GetSolverBase() !=
nullptr)
1118 template <
typename TLambda>
1119 auto Read(
const TLambda& Lambda)
const { VerifyContext();
return bExternal ? Lambda(GetParticle_LowLevel()) : Lambda(GetHandle_LowLevel()); }
1121 template <
typename TLambda>
1122 const auto& ReadRef(
const TLambda& Lambda)
const { VerifyContext();
return bExternal ? Lambda(GetParticle_LowLevel()) : Lambda(GetHandle_LowLevel()); }
1124 template <
typename TLambda>
1125 auto& ReadRef(
const TLambda& Lambda) { VerifyContext();
return bExternal ? Lambda(GetParticle_LowLevel()) : Lambda(GetHandle_LowLevel()); }
1127 template <
typename TLambda>
1133 Lambda(GetParticle_LowLevel());
1138 FPhysicsSolverBase*
SolverBase = GetSolverBase();
1139 if(FRewindData* RewindData =
SolverBase->GetRewindData())
1141 RewindData->MarkDirtyFromPT(*GetHandle_LowLevel());
1144 Lambda(GetHandle_LowLevel());
1149static_assert(
sizeof(TThreadedSingleParticlePhysicsProxyBase<true>) ==
sizeof(FSingleParticlePhysicsProxy),
"Derived types only used to constrain API, all data lives in base class ");
1150static_assert(
sizeof(TThreadedSingleParticlePhysicsProxyBase<false>) ==
sizeof(FSingleParticlePhysicsProxy),
"Derived types only used to constrain API, all data lives in base class ");
1159 using Base::VerifyContext;
1161 void SetIgnoreAnalyticCollisions(
bool bIgnoreAnalyticCollisions) { VerifyContext(); GetParticle_LowLevel()->SetIgnoreAnalyticCollisions(bIgnoreAnalyticCollisions); }
1175 GetParticle_LowLevel()->SetParticleID(ParticleID);
1183 SyncTS.OverWriteX.Set(GetSolverSyncTimestamp_External(),
InX);
1191 SyncTS.OverWriteR.Set(GetSolverSyncTimestamp_External(),
InR);
1205 SyncTS.OverWriteV.Set(GetSolverSyncTimestamp_External(),
InV);
1220 SyncTS.OverWriteW.Set(GetSolverSyncTimestamp_External(),
InW);
1226 if (
auto Rigid = GetParticle_LowLevel()->CastToRigidParticle())
1229 SyncTS.ObjectStateTimestamp = GetSolverSyncTimestamp_External();
1230 if (
InState != EObjectStateType::Dynamic &&
Rigid->ObjectState() == EObjectStateType::Dynamic)
1238 if (
InState == EObjectStateType::Kinematic &&
Rigid->ObjectState() != EObjectStateType::Kinematic)
1254 return Rigid->Island();
1274 Rigid->ClearEvents();
1283 return Rigid->GetWakeEvent();
1286 return EWakeEventEntry::None;
1308 void*
UserData()
const { VerifyContext();
return GetParticle_LowLevel()->UserData(); }
1317 UE_DEPRECATED(5.4,
"Use SetGeometry with FImplicitObjectPtr instead.")
1323 UE_DEPRECATED(5.4,
"Use SetGeometry with FImplicitObjectPtr instead.")
1335 UE_DEPRECATED(5.4,
"Please use MergeGeometry with FImplicitObjectPtr instead.")
1341 if (
auto Kinematic = GetParticle_LowLevel()->CastToKinematicParticle())
1343 return Kinematic->IsKinematicTargetDirty();
1351 if (
auto Kinematic = GetParticle_LowLevel()->CastToKinematicParticle())
1353 return Kinematic->ClearKinematicTarget();
1364 Rigid->AddCollisionConstraintFlag(ECollisionConstraintFlags::CCF_SmoothEdgeCollisions);
1368 Rigid->RemoveCollisionConstraintFlag(ECollisionConstraintFlags::CCF_SmoothEdgeCollisions);
1378 Rigid->SetCCDEnabled(bEnabled);
1387 return Rigid->CCDEnabled();
1398 Rigid->SetMACDEnabled(bEnabled);
1407 return Rigid->MACDEnabled();
1418 Rigid->SetPartialIslandSleepAllowed(bEnabled);
1427 return Rigid->PartialIslandSleepAllowed();
1438 return Rigid->IterationSettings();
1487 return Rigid->MaxLinearSpeedSq();
1507 return Rigid->MaxAngularSpeedSq();
1518 return Rigid->InitialOverlapDepenetrationVelocity();
1545 if (
auto Rigid = GetParticle_LowLevel()->CastToRigidParticle())
1554 if (
auto Rigid = GetParticle_LowLevel()->CastToRigidParticle())
1556 return Rigid->Disabled();
1563static_assert(
sizeof(FRigidBodyHandle_External) ==
sizeof(FSingleParticlePhysicsProxy),
"Derived types only used to constrain API, all data lives in base class ");
1576 if (
auto Rigid = GetHandle_LowLevel()->CastToRigidParticle())
1578 return Rigid->GetPreV();
1586 if (
auto Rigid = GetHandle_LowLevel()->CastToRigidParticle())
1588 return Rigid->GetPreW();
1597 if (
auto Rigid = GetHandle_LowLevel()->CastToRigidParticle())
1607 if (
auto Rigid = GetHandle_LowLevel()->CastToRigidParticle())
1632static_assert(
sizeof(FRigidBodyHandle_Internal) ==
sizeof(FSingleParticlePhysicsProxy),
"Derived types only used to constrain API, all data lives in base class ");
1636 ensure(Particle->GetProxy() ==
nullptr);
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
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Rigid
Definition HairStrandsInterface.h:200
ESPMode
Definition SharedPointerFwd.h:12
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ParticleDirtyFlags.h:1039
Definition ImplicitObject.h:111
Definition SingleParticlePhysicsProxy.h:30
FVector GetInertiaTensor() const
Definition SingleParticlePhysicsProxy.h:46
FInitialState(FReal MassIn, FReal InvMassIn, FVector InertiaTensorIn)
Definition SingleParticlePhysicsProxy.h:38
FReal GetMass() const
Definition SingleParticlePhysicsProxy.h:44
FReal GetInverseMass() const
Definition SingleParticlePhysicsProxy.h:45
FInitialState()
Definition SingleParticlePhysicsProxy.h:32
Definition KinematicTargets.h:34
Definition ShapeInstance.h:36
Definition SingleParticlePhysicsProxy.h:1154
bool IsKinematicTargetDirty() const
Definition SingleParticlePhysicsProxy.h:1338
void SetShapeSimData(int32 InShapeIndex, const FCollisionFilterData &SimData)
Definition SingleParticlePhysicsProxy.h:1170
void MergeGeometry(TArray< Chaos::FImplicitObjectPtr > &&Objects)
Definition SingleParticlePhysicsProxy.h:1333
bool Disabled() const
Definition SingleParticlePhysicsProxy.h:1551
int32 Island() const
Definition SingleParticlePhysicsProxy.h:1249
void UpdateShapeBounds()
Definition SingleParticlePhysicsProxy.h:1162
FReal GetMaxAngularSpeedSq()
Definition SingleParticlePhysicsProxy.h:1502
void ClearForces(bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1289
void SetShapeSimCollisionEnabled(int32 InShapeIndex, bool bInEnabled)
Definition SingleParticlePhysicsProxy.h:1168
FRealSingle GetInitialOverlapDepenetrationVelocity()
Definition SingleParticlePhysicsProxy.h:1513
void SetSleepThresholdMultiplier(FRealSingle Multiplier)
Definition SingleParticlePhysicsProxy.h:1533
Private::FIterationSettings IterationSettings() const
Definition SingleParticlePhysicsProxy.h:1433
void SetInitialOverlapDepenetrationVelocity(FRealSingle InNewSpeed)
Definition SingleParticlePhysicsProxy.h:1524
void ClearKinematicTarget()
Definition SingleParticlePhysicsProxy.h:1348
void ClearTorques(bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1299
bool CCDEnabled() const
Definition SingleParticlePhysicsProxy.h:1382
void SetGeometry(const Chaos::FImplicitObjectPtr &ImplicitGeometryPtr)
Definition SingleParticlePhysicsProxy.h:1311
void MergeShapesArray(FShapesArray &&OtherShapesArray)
Definition SingleParticlePhysicsProxy.h:1331
bool PartialIslandSleepAllowed() const
Definition SingleParticlePhysicsProxy.h:1422
void SetShapeCollisionTraceType(int32 InShapeIndex, EChaosCollisionTraceFlag TraceType)
Definition SingleParticlePhysicsProxy.h:1166
void SetSmoothEdgeCollisionsEnabled(bool bEnabled)
Definition SingleParticlePhysicsProxy.h:1357
void SetMACDEnabled(bool bEnabled)
Definition SingleParticlePhysicsProxy.h:1393
void SetV(const FVec3 &InV, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1194
void SetVelocitySolverIterationCount(int32 VelocitySolverIterationCountIn)
Definition SingleParticlePhysicsProxy.h:1454
FReal GetMaxLinearSpeedSq()
Definition SingleParticlePhysicsProxy.h:1482
void RemoveShape(FPerShapeData *InShape, bool bWakeTouching)
Definition SingleParticlePhysicsProxy.h:1329
void SetPartialIslandSleepAllowed(bool bEnabled)
Definition SingleParticlePhysicsProxy.h:1413
void SetProjectionSolverIterationCount(int32 ProjectionSolverIterationCountIn)
Definition SingleParticlePhysicsProxy.h:1464
EWakeEventEntry GetWakeEvent()
Definition SingleParticlePhysicsProxy.h:1278
void SetMaxAngularSpeedSq(FReal InNewSpeed)
Definition SingleParticlePhysicsProxy.h:1493
void SetObjectState(const EObjectStateType InState, bool bAllowEvents=false, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1223
void SetMaxLinearSpeedSq(FReal InNewSpeed)
Definition SingleParticlePhysicsProxy.h:1473
void SetIgnoreAnalyticCollisions(bool bIgnoreAnalyticCollisions)
Definition SingleParticlePhysicsProxy.h:1161
void ClearEvents()
Definition SingleParticlePhysicsProxy.h:1269
void SetIsland(const int32 InIsland)
Definition SingleParticlePhysicsProxy.h:1260
void SetPositionSolverIterationCount(int32 PositionSolverIterationCountIn)
Definition SingleParticlePhysicsProxy.h:1444
void SetW(const FVec3 &InW, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1208
void SetCCDEnabled(bool bEnabled)
Definition SingleParticlePhysicsProxy.h:1373
void SetX(const FVec3 &InX, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1178
void SetShapeQueryCollisionEnabled(int32 InShapeIndex, bool bInEnabled)
Definition SingleParticlePhysicsProxy.h:1169
void SetUserData(void *InUserData)
Definition SingleParticlePhysicsProxy.h:1309
void SetR(const FRotation3 &InR, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1186
void UpdateShapeBounds(const FTransform &Transform)
Definition SingleParticlePhysicsProxy.h:1164
bool MACDEnabled() const
Definition SingleParticlePhysicsProxy.h:1402
void SetParticleID(const FParticleID &ParticleID)
Definition SingleParticlePhysicsProxy.h:1172
void * UserData() const
Definition SingleParticlePhysicsProxy.h:1308
void SetDisabled(bool bDisable)
Definition SingleParticlePhysicsProxy.h:1542
Definition SingleParticlePhysicsProxy.h:1567
const FVec3 PreW() const
Definition SingleParticlePhysicsProxy.h:1583
void SetW(const FVec3 &InW, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1619
const FVec3 PreV() const
Definition SingleParticlePhysicsProxy.h:1573
void SetR(const FRotation3 &InR, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1603
void SetV(const FVec3 &InV, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1613
void SetObjectState(const EObjectStateType InState, bool bAllowEvents=false, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1625
void SetX(const FVec3 &InX, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1593
Definition ParticleDirtyFlags.h:1228
Definition SingleParticlePhysicsProxy.h:58
CHAOS_API void ClearAccumulatedData()
Definition SingleParticlePhysicsProxy.cpp:244
CHAOS_API EWakeEventEntry GetWakeEvent() const
Definition SingleParticlePhysicsProxy.cpp:533
FORCEINLINE FRigidBodyHandle_External & GetGameThreadAPI()
Definition SingleParticlePhysicsProxy.h:73
FProxyInterpolationBase * GetInterpolationData()
Definition SingleParticlePhysicsProxy.h:70
TUniquePtr< PARTICLE_TYPE > Particle
Definition SingleParticlePhysicsProxy.h:192
CHAOS_API void ClearEvents()
Definition SingleParticlePhysicsProxy.cpp:540
CHAOS_API bool IsDirty()
Definition SingleParticlePhysicsProxy.cpp:528
CHAOS_API void BufferPhysicsResults(FDirtyRigidParticleData &)
Definition SingleParticlePhysicsProxy.cpp:267
const FPhysicsObjectHandle GetPhysicsObject() const
Definition SingleParticlePhysicsProxy.h:170
CHAOS_API bool PullFromPhysicsState(const FDirtyRigidParticleData &PullData, int32 SolverSyncTimestamp, const FDirtyRigidParticleData *NextPullData=nullptr, const FRealSingle *Alpha=nullptr, const FDirtyRigidParticleReplicationErrorData *Error=nullptr, const Chaos::FReal AsyncFixedTimeStep=0)
Definition SingleParticlePhysicsProxy.cpp:305
ErrorDataType * GetOrCreateErrorInterpolationData()
Definition SingleParticlePhysicsProxy.h:177
PARTICLE_TYPE * GetParticle_LowLevel()
Definition SingleParticlePhysicsProxy.h:144
FParticleHandle * GetHandle_LowLevel()
Definition SingleParticlePhysicsProxy.h:96
FORCEINLINE FRigidBodyHandle_Internal * GetPhysicsThreadAPI()
Definition SingleParticlePhysicsProxy.h:84
FSingleParticlePhysicsProxy(FSingleParticlePhysicsProxy &&)=delete
FORCEINLINE const FRigidBodyHandle_External & GetGameThreadAPI() const
Definition SingleParticlePhysicsProxy.h:78
FParticleHandle * Handle
Definition SingleParticlePhysicsProxy.h:193
FPhysicsObjectUniquePtr Reference
Definition SingleParticlePhysicsProxy.h:194
void SetHandle(FParticleHandle *InHandle)
Definition SingleParticlePhysicsProxy.h:112
CHAOS_API void BufferPhysicsResults_External(FDirtyRigidParticleData &)
Definition SingleParticlePhysicsProxy.cpp:279
FPBDRigidParticle * GetRigidParticleUnsafe()
Definition SingleParticlePhysicsProxy.h:155
FPhysicsObjectHandle GetPhysicsObject()
Definition SingleParticlePhysicsProxy.h:165
int32 GravityGroupIndex
Definition SingleParticlePhysicsProxy.h:196
const PARTICLE_TYPE * GetParticle_LowLevel() const
Definition SingleParticlePhysicsProxy.h:150
FSingleParticlePhysicsProxy(const FSingleParticlePhysicsProxy &)=delete
FSingleParticlePhysicsProxy()=delete
CHAOS_API void PushToPhysicsState(const FDirtyPropertiesManager &Manager, int32 DataIdx, const FDirtyProxy &Dirty, FShapeDirtyData *ShapesData, FReal ExternalDt)
Definition SingleParticlePhysicsProxy.cpp:228
const FProxyInterpolationBase * GetInterpolationData() const
Definition SingleParticlePhysicsProxy.h:71
const FParticleHandle * GetHandle_LowLevel() const
Definition SingleParticlePhysicsProxy.h:102
virtual void * GetHandleUnsafe() const override
Definition SingleParticlePhysicsProxy.h:107
virtual CHAOS_API ~FSingleParticlePhysicsProxy()
Definition SingleParticlePhysicsProxy.cpp:54
FORCEINLINE const FRigidBodyHandle_Internal * GetPhysicsThreadAPI() const
Definition SingleParticlePhysicsProxy.h:90
const FPBDRigidParticle * GetRigidParticleUnsafe() const
Definition SingleParticlePhysicsProxy.h:160
Definition IterationSettings.h:19
Definition ParticleHandle.h:436
Definition ParticleHandle.h:2739
Definition Serializable.h:10
Definition SingleParticlePhysicsProxy.h:208
EParticleType ObjectType() const
Definition SingleParticlePhysicsProxy.h:287
FSpatialAccelerationIdx SpatialIdx() const
Definition SingleParticlePhysicsProxy.h:289
const Chaos::TVec3< FRealSingle > I() const
Definition SingleParticlePhysicsProxy.h:868
bool CanTreatAsRigid() const
Definition SingleParticlePhysicsProxy.h:219
void SetXBase(const FVec3 &InX, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:229
void SetInvM(const FReal InInvM)
Definition SingleParticlePhysicsProxy.h:953
void SetProjectionSolverIterations(const int32 ProjectionSolverIterationsIn)
Definition SingleParticlePhysicsProxy.h:580
void SetRBase(const FRotation3 &InR, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:250
bool CanTreatAsKinematic() const
Definition SingleParticlePhysicsProxy.h:214
const FReal AngularEtherDrag() const
Definition SingleParticlePhysicsProxy.h:1036
const FVec3 LinearImpulse() const
Definition SingleParticlePhysicsProxy.h:775
void SetSpatialIdx(FSpatialAccelerationIdx Idx)
Definition SingleParticlePhysicsProxy.h:290
void SetKinematicTarget(const FKinematicTarget &InKinematicTarget, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:377
bool GyroscopicTorqueEnabled() const
Definition SingleParticlePhysicsProxy.h:462
void SetM(const FReal InM)
Definition SingleParticlePhysicsProxy.h:929
void SetUniqueIdx(const FUniqueIdx UniqueIdx, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:244
const FImplicitObjectRef GetGeometry() const
Definition SingleParticlePhysicsProxy.h:278
void SetCenterOfMass(const FVec3 &InCenterOfMass, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:977
void SetKinematicTarget(const FRigidTransform3 &InTargetTransform, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:372
EResimType ResimType() const
Definition SingleParticlePhysicsProxy.h:650
const FReal InvM() const
Definition SingleParticlePhysicsProxy.h:940
TSerializablePtr< FImplicitObject > Geometry() const
Definition SingleParticlePhysicsProxy.h:281
const FVec3 & GetX() const
Definition SingleParticlePhysicsProxy.h:226
const FVec3 CenterOfMass() const
Definition SingleParticlePhysicsProxy.h:964
const FReal LinearEtherDrag() const
Definition SingleParticlePhysicsProxy.h:1012
const FVec3 AngularImpulse() const
Definition SingleParticlePhysicsProxy.h:827
void SetMACDEnabled(const bool InMACDEnabled)
Definition SingleParticlePhysicsProxy.h:523
void VerifyContext() const
Definition SingleParticlePhysicsProxy.h:1095
bool MACDEnabled() const
Definition SingleParticlePhysicsProxy.h:510
void SetUpdateKinematicFromSimulation(const bool InUpdateKinematicFromSimulation)
Definition SingleParticlePhysicsProxy.h:451
void SetOneWayInteraction(const bool bInOneWayInteraction)
Definition SingleParticlePhysicsProxy.h:604
const FVec3 Acceleration() const
Definition SingleParticlePhysicsProxy.h:660
const FVec3 W() const
Definition SingleParticlePhysicsProxy.h:332
void SetCCDEnabled(const bool InCCDEnabled)
Definition SingleParticlePhysicsProxy.h:499
const FShapesArray & ShapesArray() const
Definition SingleParticlePhysicsProxy.h:283
bool InertiaConditioningEnabled() const
Definition SingleParticlePhysicsProxy.h:615
void SetI(const Chaos::TVec3< FRealSingle > &InI)
Definition SingleParticlePhysicsProxy.h:881
FUniqueIdx UniqueIdx() const
Definition SingleParticlePhysicsProxy.h:243
bool OneWayInteraction() const
Definition SingleParticlePhysicsProxy.h:591
void SetLinearEtherDrag(const FReal InLinearEtherDrag)
Definition SingleParticlePhysicsProxy.h:1025
bool GravityEnabled() const
Definition SingleParticlePhysicsProxy.h:390
const Chaos::TVec3< FRealSingle > InvI() const
Definition SingleParticlePhysicsProxy.h:892
bool UpdateKinematicFromSimulation() const
Definition SingleParticlePhysicsProxy.h:438
const FVec3 GetV() const
Definition SingleParticlePhysicsProxy.h:305
bool PartialIslandSleepAllowed() const
Definition SingleParticlePhysicsProxy.h:534
const FVec3 LinearImpulseVelocity() const
Definition SingleParticlePhysicsProxy.h:762
int32 GravityGroupIndex() const
Definition SingleParticlePhysicsProxy.h:414
const FRotation3 RotationOfMass() const
Definition SingleParticlePhysicsProxy.h:988
const FVec3 AngularImpulseVelocity() const
Definition SingleParticlePhysicsProxy.h:814
FSingleParticlePhysicsProxy * GetProxy()
Definition SingleParticlePhysicsProxy.h:212
const FVec3 GetW() const
Definition SingleParticlePhysicsProxy.h:345
void SetGravityEnabled(const bool InGravityEnabled)
Definition SingleParticlePhysicsProxy.h:403
FRotation3 GetR() const
Definition SingleParticlePhysicsProxy.h:247
void SetVBase(const FVec3 &InV, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:311
void AddTorque(const FVec3 &InTorque, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:743
void SetAngularEtherDrag(const FReal InAngularEtherDrag)
Definition SingleParticlePhysicsProxy.h:1049
void SetSleepType(ESleepType InSleepType)
Definition SingleParticlePhysicsProxy.h:1073
void SetGyroscopicTorqueEnabled(const bool InGyroscopicTorqueEnabled)
Definition SingleParticlePhysicsProxy.h:475
void SetPositionSolverIterations(const int32 PositionSolverIterationsIn)
Definition SingleParticlePhysicsProxy.h:558
void SetPartialIslandSleepAllowed(const bool InPartialIslandSleepAllowed)
Definition SingleParticlePhysicsProxy.h:547
void SetWBase(const FVec3 &InW, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:351
bool CCDEnabled() const
Definition SingleParticlePhysicsProxy.h:486
void SetInertiaConditioningEnabled(const bool bInEnabled)
Definition SingleParticlePhysicsProxy.h:628
void SetAngularImpulse(const FVec3 &InAngularImpulse, bool bIsVelocity, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:841
void SetGravityGroupIndex(const uint32 InGravityGroupIndex)
Definition SingleParticlePhysicsProxy.h:427
void SetLinearImpulse(const FVec3 &InLinearImpulse, bool bIsVelocity, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:788
void SetRotationOfMass(const FRotation3 &InRotationOfMass, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1001
EObjectStateType ObjectState() const
Definition SingleParticlePhysicsProxy.h:285
const FVec3 AngularAcceleration() const
Definition SingleParticlePhysicsProxy.h:730
const FReal M() const
Definition SingleParticlePhysicsProxy.h:916
FRotation3 R() const
Definition SingleParticlePhysicsProxy.h:246
void SetInvI(const Chaos::TVec3< FRealSingle > &InInvI)
Definition SingleParticlePhysicsProxy.h:905
void AddForce(const FVec3 &InForce, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:692
ESleepType SleepType() const
Definition SingleParticlePhysicsProxy.h:1084
void SetAngularAcceleration(const FVec3 &AngularAcceleration, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:711
const FVec3 V() const
Definition SingleParticlePhysicsProxy.h:293
void SetObjectStateBase(const EObjectStateType InState, bool bAllowEvents=false, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:1061
void SetResimType(EResimType ResimType)
Definition SingleParticlePhysicsProxy.h:639
const TSharedPtr< FImplicitObject, ESPMode::ThreadSafe > & SharedGeometryLowLevel() const
Definition SingleParticlePhysicsProxy.h:265
const FVec3 & X() const
Definition SingleParticlePhysicsProxy.h:225
void SetAcceleration(const FVec3 &Acceleration, bool bInvalidate=true)
Definition SingleParticlePhysicsProxy.h:673
void SetVelocitySolverIterations(const int32 VelocitySolverIterationsIn)
Definition SingleParticlePhysicsProxy.h:569
Definition PhysicsProxyBase.h:97
Definition SharedPointer.h:692
Definition UniquePtr.h:107
bool IsValid() const
Definition UniquePtr.h:280
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition SkeletalMeshComponent.h:307
EParticleType
Definition GeometryParticlesfwd.h:11
EResimType
Definition GeometryParticles.h:143
FORCEINLINE void EnsureIsInPhysicsThreadContext()
Definition Threading.h:290
FORCEINLINE void EnsureIsInGameThreadContext()
Definition Threading.h:295
FRealDouble FReal
Definition Real.h:22
EObjectStateType
Definition ObjectState.h:10
EChaosCollisionTraceFlag
Definition Particles.h:231
float FRealSingle
Definition Real.h:14
TGeometryParticleHandle< FReal, 3 > FGeometryParticleHandle
Definition ParticleHandleFwd.h:24
ESleepType
Definition RigidParticles.h:23
EWakeEventEntry
Definition ParticleHandle.h:1730
TGeometryParticle< FReal, 3 > FGeometryParticle
Definition ParticleHandleFwd.h:113
Definition ChaosMarshallingManager.h:21
Definition PullPhysicsDataImp.h:53
Definition PullPhysicsDataImp.h:62
Definition ParticleDirtyFlags.h:37
Definition PhysicsObjectInternal.h:16
Definition GeometryParticlesfwd.h:59
Definition GeometryParticlesfwd.h:87
Definition CollisionFilterData.h:46
Definition PhysicsProxyBase.h:258
int32 GetInterpChannel_External() const
Definition PhysicsProxyBase.h:268
virtual const EProxyInterpolationType GetInterpolationType() const
Definition PhysicsProxyBase.h:282
int32 GetPullDataInterpIdx_External() const
Definition PhysicsProxyBase.h:265
Definition PhysicsProxyBase.h:74
Definition NumericLimits.h:41