Add utility SetLinearVelocity and SetAngularVelocity for a whole ragdoll

This commit is contained in:
Wojtek Figat
2021-11-06 13:48:53 +01:00
parent 6f68f4e5b0
commit ddbc76cc7d
2 changed files with 32 additions and 0 deletions

View File

@@ -27,6 +27,28 @@ float Ragdoll::GetTotalMass() const
return result;
}
void Ragdoll::SetLinearVelocity(const Vector3& value) const
{
for (auto child : Children)
{
const auto rigidBody = Cast<RigidBody>(child);
if (!rigidBody || !rigidBody->IsActiveInHierarchy())
continue;
rigidBody->SetLinearVelocity(value);
}
}
void Ragdoll::SetAngularVelocity(const Vector3& value) const
{
for (auto child : Children)
{
const auto rigidBody = Cast<RigidBody>(child);
if (!rigidBody || !rigidBody->IsActiveInHierarchy())
continue;
rigidBody->SetAngularVelocity(value);
}
}
float Ragdoll::InitBone(RigidBody* rigidBody, int32& nodeIndex, Transform& localOffset)
{
// Bones with 0 weight are non-simulated (kinematic)