mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 23:16:20 +02:00
use Ragdoll::_accumulatedMovement to move MyAvatar
This commit is contained in:
parent
7e7978de1a
commit
aa1a7307cc
1 changed files with 10 additions and 1 deletions
|
@ -206,12 +206,21 @@ void MyAvatar::simulate(float deltaTime) {
|
||||||
|
|
||||||
{
|
{
|
||||||
PerformanceTimer perfTimer("ragdoll");
|
PerformanceTimer perfTimer("ragdoll");
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::CollideAsRagdoll)) {
|
Ragdoll* ragdoll = _skeletonModel.getRagdoll();
|
||||||
|
if (ragdoll && Menu::getInstance()->isOptionChecked(MenuOption::CollideAsRagdoll)) {
|
||||||
const float minError = 0.00001f;
|
const float minError = 0.00001f;
|
||||||
const float maxIterations = 3;
|
const float maxIterations = 3;
|
||||||
const quint64 maxUsec = 4000;
|
const quint64 maxUsec = 4000;
|
||||||
_physicsSimulation.setTranslation(_position);
|
_physicsSimulation.setTranslation(_position);
|
||||||
_physicsSimulation.stepForward(deltaTime, minError, maxIterations, maxUsec);
|
_physicsSimulation.stepForward(deltaTime, minError, maxIterations, maxUsec);
|
||||||
|
|
||||||
|
// harvest any displacement of the Ragdoll that is a result of collisions
|
||||||
|
glm::vec3 ragdollDisplacement = ragdoll->getAndClearAccumulatedMovement();
|
||||||
|
const float MAX_RAGDOLL_DISPLACEMENT_2 = 1.0f;
|
||||||
|
float length2 = glm::length2(ragdollDisplacement);
|
||||||
|
if (length2 > EPSILON && length2 < MAX_RAGDOLL_DISPLACEMENT_2) {
|
||||||
|
setPosition(getPosition() + ragdollDisplacement);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
_skeletonModel.moveShapesTowardJoints(1.0f);
|
_skeletonModel.moveShapesTowardJoints(1.0f);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue