UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimNode_RigidBody.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10#include "Tasks/Task.h"
11#include "AnimNode_RigidBody.generated.h"
12
13struct FBodyInstance;
15class FEvent;
16
21
23UENUM()
33
35UENUM()
45
51template <> struct TIsPODType<FSimSpaceSettings> { enum { Value = true }; };
52
53USTRUCT(BlueprintType)
55{
57
59
60 // Disable deprecation errors by providing defaults wrapped with pragma disable
62 ~FSimSpaceSettings() = default;
66
67 // Global multipler on the effects of simulation space movement. Must be in range [0, 1]. If WorldAlpha = 0.0, the system is disabled and the simulation will
68 // be fully local (i.e., world-space actor movement and rotation does not affect the simulation). When WorldAlpha = 1.0 the simulation effectively acts as a
69 // world-space sim, but with the ability to apply limits using the other parameters.
70 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings, meta = (ClampMin = "0.0", ClampMax = "1.0"))
71 float WorldAlpha;
72
73#if WITH_EDITORONLY_DATA
74 UE_DEPRECATED(5.1, "This property has been deprecated. Please, use WorldAlpha.")
75 float MasterAlpha = 0.f;
76#endif // WITH_EDITORONLY_DATA
77
78 // Multiplier on the Z-component of velocity and acceleration that is passed to the simulation. Usually from 0.0 to 1.0 to
79 // reduce the effects of jumping and crouching on the simulation, but it can be higher than 1.0 if you need to exaggerate this motion for some reason.
80 // Should probably have been called "WorldAlphaScaleZ".
81 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings, meta = (ClampMin = "0.0"))
82 float VelocityScaleZ;
83
84 // A muliplier to control how much of the simulation space movement is used to calculate the drag forces from Linear/Angular Damping in the Physics Asset.
85 // When DampingAlpha=1.0, Damping drag forces are equivalent to a world-space simulation. This is similar to air resistance.
86 // When DampingAlpha=0.0, Damping drag forces depend only on local-space body velocity and not on the simulation space velocity.
87 // It can be useful to set this to zero so that the Linear/Angular Damping settings on the BodyInstances do not contribute to air resistance.
88 // Air resistance can be re-added in a controlled way using the ExternalLinearDrag setting below.
89 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings, meta = (ClampMin = "0.0"))
90 float DampingAlpha;
91
92 // A clamp on the effective world-space velocity that is passed to the simulation. Units are cm/s. The default value effectively means "unlimited". It is not usually required to
93 // change this but you would reduce this to limit the effects of drag on the bodies in the simulation (if you have bodies that have LinearDrag set to non-zero in the physics asset).
94 // Expected values in this case would be somewhat less than the usual velocities of your object which is commonly a few hundred for a character.
95 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings, meta = (ClampMin = "0.0"))
96 float MaxLinearVelocity;
97
98 // A clamp on the effective world-space angular velocity that is passed to the simulation. Units are radian/s, so a value of about 6.0 is one rotation per second.
99 // The default value effectively means "unlimited". You would reduce this (and MaxAngularAcceleration) to limit how much bodies "fly out" when the actor spins on the spot.
100 // This is especially useful if you have characters than can rotate very quickly and you would probably want values around or less than 10 in this case.
101 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings, meta = (ClampMin = "0.0"))
102 float MaxAngularVelocity;
103
104 // A clamp on the effective world-space acceleration that is passed to the simulation. Units are cm/s/s. The default value effectively means "unlimited".
105 // This property is used to stop the bodies of the simulation flying out when suddenly changing linear speed. It is useful when you have characters than can
106 // changes from stationary to running very quickly such as in an FPS. A common value for a character might be in the few hundreds.
107 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings, meta = (ClampMin = "0.0"))
108 float MaxLinearAcceleration;
109
110 // A clamp on the effective world-space angular accleration that is passed to the simulation. Units are radian/s/s. The default value effectively means "unlimited".
111 // This has a similar effect to MaxAngularVelocity, except that it is related to the flying out of bodies when the rotation speed suddenly changes. Typical limist for
112 // a character might be around 100.
113 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings, meta = (ClampMin = "0.0"))
114 float MaxAngularAcceleration;
115
116#if WITH_EDITORONLY_DATA
117 UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "ExternalLinearDrag is deprecated. Please use ExternalLinearDragV instead."))
119#endif
120
121 // Additional linear drag applied to each body based on total body velocity. This is in addition to per-body linear damping in the physics asset (but see DampingAlpha to control that).
122 // (NOTE: The "V" suffix is to differentiate from the deprecated float property of the same name. It means "Vector" and not "Velocity").
123 //
124 // NOTE: ExternalLinearDragV is in simulation space, so if the RB AnimNode is set to Bone Space the ExternalLinearDragV.Z will be the drag in the
125 // Up direction of the selected bone.
126 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings)
127 FVector ExternalLinearDragV;
128
129 // Additional velocity that is added to the component velocity so the simulation acts as if the actor is moving at speed, even when stationary.
130 // Vector is in world space. Units are cm/s. Could be used for a wind effects etc. Typical values are similar to the velocity of the object or effect,
131 // and usually around or less than 1000 for characters/wind.
132 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings)
133 FVector ExternalLinearVelocity;
134
135 // Additional angular velocity that is added to the component angular velocity. This can be used to make the simulation act as if the actor is rotating
136 // even when it is not. E.g., to apply physics to a character on a podium as the camera rotates around it, to emulate the podium itself rotating.
137 // Vector is in world space. Units are rad/s.
138 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings)
139 FVector ExternalAngularVelocity;
140
141 ANIMGRAPHRUNTIME_API void PostSerialize(const FArchive& Ar);
142};
143
144#if WITH_EDITORONLY_DATA
145template<>
146struct TStructOpsTypeTraits<FSimSpaceSettings> : public TStructOpsTypeTraitsBase2<FSimSpaceSettings>
147{
148 enum
149 {
150 WithPostSerialize = true
151 };
152};
153#endif
154
155
159USTRUCT()
161{
163
166
167 // FAnimNode_Base interface
168 ANIMGRAPHRUNTIME_API virtual void GatherDebugData(FNodeDebugData& DebugData) override;
169 ANIMGRAPHRUNTIME_API virtual void Initialize_AnyThread(const FAnimationInitializeContext& Context) override;
170 // End of FAnimNode_Base interface
171
172 // FAnimNode_SkeletalControlBase interface
173 ANIMGRAPHRUNTIME_API virtual void UpdateComponentPose_AnyThread(const FAnimationUpdateContext& Context) override;
174 ANIMGRAPHRUNTIME_API virtual void EvaluateComponentPose_AnyThread(FComponentSpacePoseContext& Output) override;
175 ANIMGRAPHRUNTIME_API virtual void EvaluateSkeletalControl_AnyThread(FComponentSpacePoseContext& Output, TArray<FBoneTransform>& OutBoneTransforms) override;
176 ANIMGRAPHRUNTIME_API virtual void OnInitializeAnimInstance(const FAnimInstanceProxy* InProxy, const UAnimInstance* InAnimInstance) override;
177 virtual bool NeedsOnInitializeAnimInstance() const override { return true; }
178 ANIMGRAPHRUNTIME_API virtual void PreUpdate(const UAnimInstance* InAnimInstance) override;
179 ANIMGRAPHRUNTIME_API virtual void UpdateInternal(const FAnimationUpdateContext& Context) override;
180 virtual bool HasPreUpdate() const override { return true; }
181 ANIMGRAPHRUNTIME_API virtual bool IsValidToEvaluate(const USkeleton* Skeleton, const FBoneContainer& RequiredBones) override;
182 ANIMGRAPHRUNTIME_API virtual bool NeedsDynamicReset() const override;
183 ANIMGRAPHRUNTIME_API virtual void ResetDynamics(ETeleportType InTeleportType) override;
184 ANIMGRAPHRUNTIME_API virtual int32 GetLODThreshold() const override;
185 // End of FAnimNode_SkeletalControlBase interface
186
187 ANIMGRAPHRUNTIME_API virtual void AddImpulseAtLocation(FVector Impulse, FVector Location, FName BoneName = NAME_None);
188
189 // TEMP: Exposed for use in PhAt as a quick way to get drag handles working with Chaos
190 virtual ImmediatePhysics::FSimulation* GetSimulation() { return PhysicsSimulation; }
191
196 void SetOverridePhysicsAsset(UPhysicsAsset* PhysicsAsset);
197
198 UPhysicsAsset* GetPhysicsAsset() const { return UsePhysicsAsset; }
199
200public:
202 UPROPERTY(EditAnywhere, Category = Settings)
203 TObjectPtr<UPhysicsAsset> OverridePhysicsAsset;
204
206 UPROPERTY(EditAnywhere, Category = Settings)
207 bool bDefaultToSkeletalMeshPhysicsAsset = true;
208
210 UPROPERTY(EditAnywhere, Category = Settings)
211 bool bUseDefaultAsSimulated = false;
212
213private:
215 UPhysicsAsset* GetPhysicsAssetToBeUsed(const UAnimInstance* InAnimInstance) const;
216
217 FTransform PreviousCompWorldSpaceTM;
218 FTransform CurrentTransform;
219 FTransform PreviousTransform;
220
221 UPhysicsAsset* UsePhysicsAsset;
222
223public:
225 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Performance, meta = (PinHiddenByDefault))
226 bool bUseLocalLODThresholdOnly = false;
227
229 UPROPERTY(EditAnywhere, Category = Settings, meta = (PinHiddenByDefault, editcondition = "bOverrideWorldGravity"))
230 FVector OverrideWorldGravity;
231
233 UPROPERTY(EditAnywhere, Category = Settings, meta = (PinShownByDefault))
234 FVector ExternalForce;
235
237 UPROPERTY(EditAnywhere, Category = Settings, meta = (PinHiddenByDefault))
238 FVector ComponentLinearAccScale;
239
241 UPROPERTY(EditAnywhere, Category = Settings, meta = (PinHiddenByDefault))
242 FVector ComponentLinearVelScale;
243
245 UPROPERTY(EditAnywhere, Category = Settings)
246 FVector ComponentAppliedLinearAccClamp;
247
258 UPROPERTY(EditAnywhere, Category = Settings, meta = (PinHiddenByDefault))
259 FSimSpaceSettings SimSpaceSettings;
260
261
267 UPROPERTY(EditAnywhere, Category = Settings, meta = (ClampMin="1.0", ClampMax="2.0"))
268 float CachedBoundsScale;
269
271 UPROPERTY(EditAnywhere, Category = Settings)
272 FBoneReference BaseBoneRef;
273
275 UPROPERTY(EditAnywhere, Category = Settings, meta = (editcondition = "bEnableWorldGeometry"))
277
279 UPROPERTY(EditAnywhere, Category = Settings)
280 ESimulationSpace SimulationSpace;
281
283 UPROPERTY(EditAnywhere, Category = Settings)
284 bool bForceDisableCollisionBetweenConstraintBodies;
285
287 UPROPERTY(EditAnywhere, Category = Settings)
288 bool bUseExternalClothCollision;
289
290private:
291 ETeleportType ResetSimulatedTeleportType;
292
293public:
294 UPROPERTY(EditAnywhere, Category = Settings, meta = (InlineEditConditionToggle))
295 uint8 bEnableWorldGeometry : 1;
296
297 UPROPERTY(EditAnywhere, Category = Settings, meta = (InlineEditConditionToggle))
298 uint8 bOverrideWorldGravity : 1;
299
304 UPROPERTY(EditAnywhere, Category = Settings, meta=(PinHiddenByDefault))
305 uint8 bTransferBoneVelocities : 1;
306
312 UPROPERTY(EditAnywhere, Category = Settings)
313 uint8 bFreezeIncomingPoseOnStart : 1;
314
319 UPROPERTY(EditAnywhere, Category = Settings)
320 uint8 bClampLinearTranslationLimitToRefPose : 1;
321
325 UPROPERTY(EditAnywhere, Category = Settings)
326 float WorldSpaceMinimumScale;
327
332 UPROPERTY(EditAnywhere, Category = Settings)
333 float EvaluationResetTime;
334
335private:
336 uint8 bEnabled : 1;
337 uint8 bSimulationStarted : 1;
338 uint8 bCheckForBodyTransformInit : 1;
339
340public:
341 ANIMGRAPHRUNTIME_API void PostSerialize(const FArchive& Ar);
342
343private:
344
345#if WITH_EDITORONLY_DATA
346 UPROPERTY()
347 bool bComponentSpaceSimulation_DEPRECATED; //use SimulationSpace
348#endif
349
350 // FAnimNode_SkeletalControlBase interface
351 ANIMGRAPHRUNTIME_API virtual void InitializeBoneReferences(const FBoneContainer& RequiredBones) override;
352 // End of FAnimNode_SkeletalControlBase interface
353
354 ANIMGRAPHRUNTIME_API void InitPhysics(const UAnimInstance* InAnimInstance);
355 ANIMGRAPHRUNTIME_API void UpdateWorldGeometry(const UWorld& World, const USkeletalMeshComponent& SKC);
356 ANIMGRAPHRUNTIME_API void UpdateWorldForces(const FTransform& ComponentToWorld, const FTransform& RootBoneTM, const float DeltaSeconds);
357
358 ANIMGRAPHRUNTIME_API void InitializeNewBodyTransformsDuringSimulation(FComponentSpacePoseContext& Output, const FTransform& ComponentTransform, const FTransform& BaseBoneTM);
359
360 ANIMGRAPHRUNTIME_API void InitSimulationSpace(
361 const FTransform& ComponentToWorld,
363
364 // Calculate simulation space transform, velocity etc to pass into the solver
365 ANIMGRAPHRUNTIME_API void CalculateSimulationSpaceMotion(
366 ESimulationSpace Space,
368 const FTransform& ComponentToWorld,
369 const float Dt,
370 const FSimSpaceSettings& Settings,
375
376 // Gather cloth collision sources from the supplied Skeltal Mesh and add a kinematic actor representing each one of them to the sim.
377 ANIMGRAPHRUNTIME_API void CollectClothColliderObjects(const USkeletalMeshComponent* SkeletalMeshComp);
378
379 // Remove all cloth collider objects from the sim.
380 ANIMGRAPHRUNTIME_API void RemoveClothColliderObjects();
381
382 // Update the sim-space transforms of all cloth collider objects.
383 ANIMGRAPHRUNTIME_API void UpdateClothColliderObjects(const FTransform& SpaceTransform);
384
385 // Gather nearby world objects and add them to the sim
386 ANIMGRAPHRUNTIME_API void CollectWorldObjects();
387
388 // Flag invalid world objects to be removed from the sim
389 ANIMGRAPHRUNTIME_API void ExpireWorldObjects();
390
391 // Remove simulation objects that are flagged as expired
392 ANIMGRAPHRUNTIME_API void PurgeExpiredWorldObjects();
393
394 // Update sim-space transforms of world objects
395 ANIMGRAPHRUNTIME_API void UpdateWorldObjects(const FTransform& SpaceTransform);
396
397 // Advances the simulation by a given timestep
398 ANIMGRAPHRUNTIME_API void RunPhysicsSimulation(float DeltaSeconds, const FVector& SimSpaceGravity);
399
400 // Waits for the deferred simulation task to complete if it's not already finished
401 ANIMGRAPHRUNTIME_API void FlushDeferredSimulationTask();
402
403 // Destroy the simulation and free related structures
404 ANIMGRAPHRUNTIME_API void DestroyPhysicsSimulation();
405
406public:
407
408 /* Whether the physics simulation runs synchronously with the node's evaluation or is run in the background until the next frame. */
409 UPROPERTY(EditAnywhere, Category=Settings, AdvancedDisplay)
410 ESimulationTiming SimulationTiming;
411
412private:
413
414 double WorldTimeSeconds;
415 double LastEvalTimeSeconds;
416
417 float AccumulatedDeltaTime;
418 float AnimPhysicsMinDeltaTime;
419 bool bSimulateAnimPhysicsAfterReset;
421 TWeakObjectPtr<USkeletalMeshComponent> SkelMeshCompWeakPtr;
422
423 ImmediatePhysics::FSimulation* PhysicsSimulation;
424 FPhysicsAssetSolverSettings SolverSettings;
425 FSolverIterations SolverIterations; // to be deprecated
426
427 friend class FRigidBodyNodeSimulationTask;
428 UE::Tasks::FTask SimulationTask;
429
430 struct FOutputBoneData
431 {
432 FOutputBoneData()
433 : CompactPoseBoneIndex(INDEX_NONE)
434 {}
435
436 TArray<FCompactPoseBoneIndex> BoneIndicesToParentBody;
437 FCompactPoseBoneIndex CompactPoseBoneIndex;
438 int32 BodyIndex;
439 int32 ParentBodyIndex;
440 };
441
442 struct FBodyAnimData
443 {
444 FBodyAnimData()
445 : TransferedBoneAngularVelocity(ForceInit)
446 , TransferedBoneLinearVelocity(ForceInitToZero)
447 , LinearXMotion(ELinearConstraintMotion::LCM_Locked)
448 , LinearYMotion(ELinearConstraintMotion::LCM_Locked)
449 , LinearZMotion(ELinearConstraintMotion::LCM_Locked)
450 , LinearLimit(0.0f)
451 , RefPoseLength (0.f)
452 , bIsSimulated(false)
453 , bBodyTransformInitialized(false)
454 {}
455
456 FQuat TransferedBoneAngularVelocity;
457 FVector TransferedBoneLinearVelocity;
458
459 ELinearConstraintMotion LinearXMotion;
460 ELinearConstraintMotion LinearYMotion;
461 ELinearConstraintMotion LinearZMotion;
462 float LinearLimit;
463 // we don't use linear limit but use default length to limit the bodies
464 // linear limits are defined per constraint - it can be any two joints that can limit
465 // this is just default length of the local space from parent, and we use that info to limit
466 // the translation
467 float RefPoseLength;
468
469 bool bIsSimulated : 1;
470 bool bBodyTransformInitialized : 1;
471 };
472
473 struct FWorldObject
474 {
475 FWorldObject() : ActorHandle(nullptr), LastSeenTick(0), bExpired(false), bNew(true) {}
476 FWorldObject(ImmediatePhysics::FActorHandle* InActorHandle, int32 InLastSeenTick) : ActorHandle(InActorHandle), LastSeenTick(InLastSeenTick), bExpired(false), bNew(true) {}
477
479 int32 LastSeenTick;
480 uint8 bExpired : 1;
481 uint8 bNew : 1;
482 };
483
484 TArray<FOutputBoneData> OutputBoneData;
486 TArray<int32> SkeletonBoneIndexToBodyIndex;
487 TArray<FBodyAnimData> BodyAnimData;
488
491
492 FPerSolverFieldSystem PerSolverField;
493
494 // Information required to identify and update a kinematic object representing a cloth collision source in the sim.
495 struct FClothCollider
496 {
497 FClothCollider(ImmediatePhysics::FActorHandle* const InActorHandle, const USkeletalMeshComponent* const InSkeletalMeshComponent, const uint32 InBoneIndex)
498 : ActorHandle(InActorHandle)
499 , SkeletalMeshComponent(InSkeletalMeshComponent)
500 , BoneIndex(InBoneIndex)
501 {}
502
503 ImmediatePhysics::FActorHandle* ActorHandle; // Identifies the physics actor in the sim.
504 const USkeletalMeshComponent* SkeletalMeshComponent; // Parent skeleton.
505 uint32 BoneIndex; // Bone within parent skeleton that drives physics actors transform.
506 };
507
508 // List of actors in the sim that represent objects collected from other parts of this character.
509 TArray<FClothCollider> ClothColliders;
510
512 int32 ComponentsInSimTick;
513
514 FVector WorldSpaceGravity;
515
516 double TotalMass;
517
518 // Bounds used to gather world objects copied into the simulation
519 FSphere CachedBounds;
520
521 FCollisionQueryParams QueryParams;
522
524
525 // Used by CollectWorldObjects and UpdateWorldGeometry in Task Thread
526 // Typically, World should never be accessed off the Game Thread.
527 // However, since we're just doing overlaps this should be OK.
528 const UWorld* UnsafeWorld;
529
530 // Used by CollectWorldObjects and UpdateWorldGeometry in Task Thread
531 // Only used for a pointer comparison.
532 const AActor* UnsafeOwner;
533
534 FBoneContainer CapturedBoneVelocityBoneContainer;
535 FCSPose<FCompactHeapPose> CapturedBoneVelocityPose;
536 FCSPose<FCompactHeapPose> CapturedFrozenPose;
537 FBlendedHeapCurve CapturedFrozenCurves;
538
539 FVector PreviousComponentLinearVelocity;
540
541 // Used by the world-space to simulation-space motion transfer system in Component- or Bone-Space sims
542 FTransform PreviousSimulationSpaceTransform;
543 FTransform PreviousPreviousSimulationSpaceTransform;
544 float PreviousDt;
545
546#if ENABLE_LOW_LEVEL_MEM_TRACKER
549#endif
550};
551
552#if WITH_EDITORONLY_DATA
553template<>
554struct TStructOpsTypeTraits<FAnimNode_RigidBody> : public TStructOpsTypeTraitsBase2<FAnimNode_RigidBody>
555{
556 enum
557 {
558 WithPostSerialize = true,
559 };
560};
561#endif
562
564 ESimulationSpace Space, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
565{
566 switch (Space)
567 {
568 case ESimulationSpace::ComponentSpace: return ComponentToWorld;
570 case ESimulationSpace::BaseBoneSpace: return BaseBoneTM * ComponentToWorld;
571 default: return FTransform::Identity;
572 }
573}
574
576 ESimulationSpace Space, const FVector& WorldDir, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
577{
578 switch (Space)
579 {
583 return BaseBoneTM.InverseTransformVectorNoScale(ComponentToWorld.InverseTransformVectorNoScale(WorldDir));
584 default: return FVector::ZeroVector;
585 }
586}
587
589 ESimulationSpace Space, const FVector& WorldPoint, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
590{
591 switch (Space)
592 {
596 return BaseBoneTM.InverseTransformPosition(ComponentToWorld.InverseTransformPosition(WorldPoint));
597 default: return FVector::ZeroVector;
598 }
599}
600
602 ESimulationSpace Space, const FTransform& InCSTransform, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
603{
604 switch (Space)
605 {
607 case ESimulationSpace::WorldSpace: return InCSTransform * ComponentToWorld;
609 default: ensureMsgf(false, TEXT("Unsupported Simulation Space")); return InCSTransform;
610 }
611}
ANIMGRAPHRUNTIME_API bool bEnableRigidBodyNode
Definition AnimNode_RigidBody.cpp:61
ESimulationSpace
Definition AnimNode_RigidBody.h:25
FTransform ConvertCSTransformToSimSpace(ESimulationSpace Space, const FTransform &InCSTransform, const FTransform &ComponentToWorld, const FTransform &BaseBoneTM)
Definition AnimNode_RigidBody.h:601
ANIMGRAPHRUNTIME_API FAutoConsoleVariableRef CVarEnableRigidBodyNode
ANIMGRAPHRUNTIME_API TAutoConsoleVariable< int32 > CVarEnableRigidBodyNodeSimulation
ESimulationTiming
Definition AnimNode_RigidBody.h:37
ANIMGRAPHRUNTIME_API TAutoConsoleVariable< int32 > CVarRigidBodyLODThreshold
FVector WorldVectorToSpaceNoScale(ESimulationSpace Space, const FVector &WorldDir, const FTransform &ComponentToWorld, const FTransform &BaseBoneTM)
Definition AnimNode_RigidBody.h:575
FVector WorldPositionToSpace(ESimulationSpace Space, const FVector &WorldPoint, const FTransform &ComponentToWorld, const FTransform &BaseBoneTM)
Definition AnimNode_RigidBody.h:588
FTransform SpaceToWorldTransform(ESimulationSpace Space, const FTransform &ComponentToWorld, const FTransform &BaseBoneTM)
Definition AnimNode_RigidBody.h:563
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
ELinearConstraintMotion
Definition ChaosEngineInterface.h:187
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInitToZero
Definition CoreMiscDefines.h:156
@ ForceInit
Definition CoreMiscDefines.h:155
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
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
ETeleportType
Definition EngineTypes.h:2401
ECollisionChannel
Definition EngineTypes.h:1088
return true
Definition ExternalRpcRegistry.cpp:601
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Constraints.Build.cs:6
Definition Archive.h:1208
Definition IConsoleManager.h:1580
Definition Event.h:21
Definition NameTypes.h:617
Definition PerSolverFieldSystem.h:11
Definition PhysScene_Chaos.h:116
Definition Array.h:670
Definition IConsoleManager.h:1792
Definition EnumAsByte.h:22
Definition UnrealString.h.inl:34
Definition AnimInstance.h:353
Definition PhysicsAsset.h:172
Definition Skeleton.h:295
Definition World.h:918
@ PhysScene
Definition PhysxUserData.h:27
Definition ImmediatePhysicsAdapters.cpp:29
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
Definition AnimInstanceProxy.h:144
Definition AnimNode_RigidBody.h:161
UPhysicsAsset * GetPhysicsAsset() const
Definition AnimNode_RigidBody.h:198
virtual ImmediatePhysics::FSimulation * GetSimulation()
Definition AnimNode_RigidBody.h:190
virtual bool HasPreUpdate() const override
Definition AnimNode_RigidBody.h:180
virtual bool NeedsOnInitializeAnimInstance() const override
Definition AnimNode_RigidBody.h:177
Definition AnimNode_SkeletalControlBase.h:22
Definition AnimNodeBase.h:324
Definition AnimNodeBase.h:354
Definition AnimCurveTypes.h:1049
Definition BodyInstance.h:320
Definition BoneContainer.h:192
Definition BoneReference.h:14
Definition BonePose.h:408
Definition CollisionQueryParams.h:43
Definition BoneIndices.h:63
Definition AnimNodeBase.h:600
Definition ConstraintInstance.h:255
Definition AnimNodeBase.h:642
Definition PhysicsAsset.h:31
Definition AnimNode_RigidBody.h:55
PRAGMA_DISABLE_DEPRECATION_WARNINGS ~FSimSpaceSettings()=default
FSimSpaceSettings(FSimSpaceSettings const &)=default
FSimSpaceSettings & operator=(const FSimSpaceSettings &)=default
Definition PhysicsAsset.h:107
Definition ImmediatePhysicsActorHandle_Chaos.h:46
Definition ImmediatePhysicsSimulation_Chaos.h:27
Definition IsPODType.h:12
@ Value
Definition IsPODType.h:13
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithPostSerialize
Definition StructOpsTypeTraits.h:25
Definition StructOpsTypeTraits.h:46
Definition WeakObjectPtrTemplates.h:25
TVector< T > InverseTransformVectorNoScale(const TVector< T > &V) const
Definition TransformNonVectorized.h:1483
CORE_API TTransform< T > GetRelativeTransform(const TTransform< T > &Other) const
Definition Transform.cpp:169
static CORE_API const TTransform< double > Identity
Definition TransformNonVectorized.h:58
TVector< T > InverseTransformPosition(const TVector< T > &V) const
Definition TransformNonVectorized.h:1456
static CORE_API const TVector< double > ZeroVector
Definition Vector.h:79