UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PhysSubstepTasks.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreMinimal.h"
7#include "EngineDefines.h"
11
13
14void FinishSceneStat();
15
18{
21 BodyInstance(Body),
22 TargetTM(TM),
23 OriginalTM(Body->GetUnrealWorldTransform(true, true))
24 {
25 }
26
29
32
35};
36
39{
41 {
42 BodyInstance = Body;
43 TargetTM = TM;
44 OriginalTM = Body->GetUnrealWorldTransform_AssumesLocked(true, true);
45 }
46};
47
60
68
78
85
102
105{
106public:
109 void AddCustomPhysics_AssumesLocked(FBodyInstance* Body, const FCalculateCustomPhysics& CalculateCustomPhysics);
110 void AddForce_AssumesLocked(FBodyInstance* Body, const FVector& Force, bool bAccelChange);
111 void AddForceAtPosition_AssumesLocked(FBodyInstance* Body, const FVector& Force, const FVector& Position, bool bIsLocalForce);
112 void AddRadialForceToBody_AssumesLocked(FBodyInstance* Body, const FVector& Origin, const float Radius, const float Strength, const uint8 Falloff, const bool bAccelChange);
114 void AddTorque_AssumesLocked(FBodyInstance* Body, const FVector& Torque, bool bAccelChange);
116
119
120
121 void SwapBuffers();
122 float UpdateTime(float UseDelta);
123
126
127private:
128
130 void SubstepInterpolation(float Scale, float DeltaTime);
131 void ApplyCustomPhysics(const FPhysTarget& PhysTarget, FBodyInstance* BodyInstance, float DeltaTime);
132 void ApplyForces_AssumesLocked(const FPhysTarget& PhysTarget, FBodyInstance* BodyInstance);
133 void ApplyTorques_AssumesLocked(const FPhysTarget& PhysTarget, FBodyInstance* BodyInstance);
134 void ApplyRadialForces_AssumesLocked(const FPhysTarget& PhysTarget, FBodyInstance* BodyInstance);
135 void InterpolateKinematicActor_AssumesLocked(const FPhysTarget& PhysTarget, FBodyInstance* BodyInstance, float Alpha);
136
138 PhysTargetMap PhysTargetBuffers[2]; //need to double buffer between physics thread and game thread
139 uint32 NumSubsteps;
140 float SubTime;
141 float DeltaSeconds;
142 FThreadSafeBool External;
143 class PhysXCompletionTask * FullSimulationTask;
144 float Alpha;
145 float StepScale;
146 float TotalSubTime;
147 uint32 CurrentSubStep;
148 int32 SubstepCallbackGuard;
150
151 FGraphEventRef CompletionEvent;
152
153 FPhysScene* PhysScene;
154};
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
void FinishSceneStat()
Definition PhysInterface_Chaos.cpp:901
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition PhysScene_Chaos.h:116
Definition PhysSubstepTasks.h:105
void SubstepSimulationStart()
Definition PhysSubstepTasks.cpp:234
float UpdateTime(float UseDelta)
Definition PhysSubstepTasks.cpp:211
void ClearTorques_AssumesLocked(FBodyInstance *Body)
Definition PhysSubstepTasks.cpp:130
void AddTorque_AssumesLocked(FBodyInstance *Body, const FVector &Torque, bool bAccelChange)
Definition PhysSubstepTasks.cpp:115
void SwapBuffers()
Definition PhysSubstepTasks.cpp:27
void AddForce_AssumesLocked(FBodyInstance *Body, const FVector &Force, bool bAccelChange)
Definition PhysSubstepTasks.cpp:84
void ClearForces_AssumesLocked(FBodyInstance *Body)
Definition PhysSubstepTasks.cpp:158
void AddForceAtPosition_AssumesLocked(FBodyInstance *Body, const FVector &Force, const FVector &Position, bool bIsLocalForce)
Definition PhysSubstepTasks.cpp:100
bool GetKinematicTarget_AssumesLocked(const FBodyInstance *Body, FTransform &OutTM) const
Definition PhysSubstepTasks.cpp:52
void RemoveBodyInstance_AssumesLocked(FBodyInstance *Body)
Definition PhysSubstepTasks.cpp:32
void SubstepSimulationEnd(ENamedThreads::Type CurrentThread, const FGraphEventRef &MyCompletionGraphEvent)
Definition PhysSubstepTasks.cpp:240
void AddCustomPhysics_AssumesLocked(FBodyInstance *Body, const FCalculateCustomPhysics &CalculateCustomPhysics)
Definition PhysSubstepTasks.cpp:66
void AddRadialForceToBody_AssumesLocked(FBodyInstance *Body, const FVector &Origin, const float Radius, const float Strength, const uint8 Falloff, const bool bAccelChange)
Definition PhysSubstepTasks.cpp:140
void SetKinematicTarget_AssumesLocked(FBodyInstance *Body, const FTransform &TM)
Definition PhysSubstepTasks.cpp:38
Definition ThreadSafeBool.h:17
Definition Array.h:670
Definition UnrealString.h.inl:34
Type
Definition TaskGraphInterfaces.h:57
@ false
Definition radaudio_common.h:23
Definition BodyInstance.h:320
Definition PhysSubstepTasks.h:80
FCustomTarget(const FCalculateCustomPhysics &GivenCalculateCustomPhysics)
Definition PhysSubstepTasks.h:82
const FCalculateCustomPhysics * CalculateCustomPhysics
Definition PhysSubstepTasks.h:83
FCustomTarget()
Definition PhysSubstepTasks.h:81
Definition PhysSubstepTasks.h:50
FVector Force
Definition PhysSubstepTasks.h:54
FVector Position
Definition PhysSubstepTasks.h:55
bool bIsLocalForce
Definition PhysSubstepTasks.h:58
bool bPosition
Definition PhysSubstepTasks.h:56
FForceTarget(const FVector &GivenForce)
Definition PhysSubstepTasks.h:52
FForceTarget(const FVector &GivenForce, const FVector &GivenPosition)
Definition PhysSubstepTasks.h:53
FForceTarget()
Definition PhysSubstepTasks.h:51
bool bAccelChange
Definition PhysSubstepTasks.h:57
Definition PhysSubstepTasks.h:39
FKinematicTarget_AssumesLocked(FBodyInstance *Body, const FTransform &TM)
Definition PhysSubstepTasks.h:40
Definition PhysSubstepTasks.h:18
FKinematicTarget()
Definition PhysSubstepTasks.h:19
FBodyInstance * BodyInstance
Definition PhysSubstepTasks.h:28
FKinematicTarget(FBodyInstance *Body, const FTransform &TM)
Definition PhysSubstepTasks.h:20
FTransform OriginalTM
Definition PhysSubstepTasks.h:34
FTransform TargetTM
Definition PhysSubstepTasks.h:31
Definition PhysSubstepTasks.h:88
TArray< FForceTarget > Forces
Definition PhysSubstepTasks.h:91
TArray< FRadialForceTarget > RadialForces
Definition PhysSubstepTasks.h:93
TArray< FCustomTarget > CustomPhysics
Definition PhysSubstepTasks.h:94
TArray< FTorqueTarget > Torques
Definition PhysSubstepTasks.h:92
FPhysTarget()
Definition PhysSubstepTasks.h:89
bool bKinematicTarget
Definition PhysSubstepTasks.h:98
FKinematicTarget KinematicTarget
Definition PhysSubstepTasks.h:95
Definition PhysSubstepTasks.h:70
uint8 Falloff
Definition PhysSubstepTasks.h:75
float Radius
Definition PhysSubstepTasks.h:73
FVector Origin
Definition PhysSubstepTasks.h:72
FRadialForceTarget()
Definition PhysSubstepTasks.h:71
float Strength
Definition PhysSubstepTasks.h:74
bool bAccelChange
Definition PhysSubstepTasks.h:76
Definition PhysSubstepTasks.cpp:7
Definition PhysSubstepTasks.h:62
FVector Torque
Definition PhysSubstepTasks.h:65
FTorqueTarget()
Definition PhysSubstepTasks.h:63
FTorqueTarget(const FVector &GivenTorque)
Definition PhysSubstepTasks.h:64
bool bAccelChange
Definition PhysSubstepTasks.h:66