diff --git a/Source/Engine/Level/Actors/Ragdoll.cpp b/Source/Engine/Level/Actors/Ragdoll.cpp index f31be0ac9..c0d61de2a 100644 --- a/Source/Engine/Level/Actors/Ragdoll.cpp +++ b/Source/Engine/Level/Actors/Ragdoll.cpp @@ -42,6 +42,7 @@ float Ragdoll::InitBone(RigidBody* rigidBody, int32& nodeIndex, Transform& local // Initialize body rigidBody->SetSolverIterationCounts(PositionSolverIterations, VelocitySolverIterations); + rigidBody->SetMaxDepenetrationVelocity(MaxDepenetrationVelocity); } return weight; } diff --git a/Source/Engine/Level/Actors/Ragdoll.h b/Source/Engine/Level/Actors/Ragdoll.h index 29f84a02f..2a8f1a0c3 100644 --- a/Source/Engine/Level/Actors/Ragdoll.h +++ b/Source/Engine/Level/Actors/Ragdoll.h @@ -42,9 +42,16 @@ public: /// The minimum number of velocity iterations the physics solver should perform for bodies in this ragdoll. Higher values improve stability but affect performance. /// /// - API_FIELD(Attributes="EditorOrder(100), EditorDisplay(\"Ragdoll\"), Limit(1, 255)") + API_FIELD(Attributes="EditorOrder(110), EditorDisplay(\"Ragdoll\"), Limit(1, 255)") uint8 VelocitySolverIterations = 2; + /// + /// The maximum depenetration velocity when ragdoll's rigidbody moving out of penetrating state. Using this property can smooth objects moving out of colliding state and prevent unstable motion. + /// + /// + API_FIELD(Attributes="EditorOrder(120), EditorDisplay(\"Ragdoll\"), Limit(0)") + float MaxDepenetrationVelocity = MAX_float; + public: ///