Add options for position/velocity solver iterations config for ragdolls

This commit is contained in:
Wojtek Figat
2021-11-03 19:26:05 +01:00
parent 67f0056121
commit 837747fea2
2 changed files with 17 additions and 0 deletions

View File

@@ -39,6 +39,9 @@ float Ragdoll::InitBone(RigidBody* rigidBody, int32& nodeIndex, Transform& local
node.Decompose(nodeT);
localOffset = nodeT.WorldToLocal(rigidBody->GetLocalTransform());
_bonesOffsets[rigidBody] = localOffset;
// Initialize body
rigidBody->SetSolverIterationCounts(PositionSolverIterations, VelocitySolverIterations);
}
return weight;
}

View File

@@ -31,6 +31,20 @@ public:
API_FIELD(Attributes="EditorOrder(20), EditorDisplay(\"Ragdoll\")")
Dictionary<String, float> BonesWeights;
/// <summary>
/// The minimum number of position iterations the physics solver should perform for bodies in this ragdoll. Higher values improve stability but affect performance.
/// </summary>
/// <seealso cref="RigidBody.SetSolverIterationCounts"/>
API_FIELD(Attributes="EditorOrder(100), EditorDisplay(\"Ragdoll\"), Limit(1, 255)")
uint8 PositionSolverIterations = 8;
/// <summary>
/// The minimum number of velocity iterations the physics solver should perform for bodies in this ragdoll. Higher values improve stability but affect performance.
/// </summary>
/// <seealso cref="RigidBody.SetSolverIterationCounts"/>
API_FIELD(Attributes="EditorOrder(100), EditorDisplay(\"Ragdoll\"), Limit(1, 255)")
uint8 VelocitySolverIterations = 2;
public:
/// <summary>