mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 12:54:30 +02:00
if delta-time is more than 1/30th of a second, clamp it to avoid crazy ik induced orbits when main thread is blocked
This commit is contained in:
parent
9e3a13795a
commit
b3b053ce18
1 changed files with 6 additions and 0 deletions
|
@ -18,6 +18,8 @@
|
||||||
#include "SwingTwistConstraint.h"
|
#include "SwingTwistConstraint.h"
|
||||||
#include "AnimationLogging.h"
|
#include "AnimationLogging.h"
|
||||||
|
|
||||||
|
float MAX_OVERLAY_DT = 1.0f / 30.0f; // what to clamp delta-time to in AnimInverseKinematics::overlay
|
||||||
|
|
||||||
AnimInverseKinematics::AnimInverseKinematics(const QString& id) : AnimNode(AnimNode::Type::InverseKinematics, id) {
|
AnimInverseKinematics::AnimInverseKinematics(const QString& id) : AnimNode(AnimNode::Type::InverseKinematics, id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,6 +369,10 @@ const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVar
|
||||||
|
|
||||||
//virtual
|
//virtual
|
||||||
const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) {
|
const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) {
|
||||||
|
if (dt > MAX_OVERLAY_DT) {
|
||||||
|
dt = MAX_OVERLAY_DT;
|
||||||
|
}
|
||||||
|
|
||||||
if (_relativePoses.size() != underPoses.size()) {
|
if (_relativePoses.size() != underPoses.size()) {
|
||||||
loadPoses(underPoses);
|
loadPoses(underPoses);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue