summaryrefslogtreecommitdiff
path: root/indra/llcharacter/llkeyframewalkmotion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llcharacter/llkeyframewalkmotion.cpp')
-rw-r--r--indra/llcharacter/llkeyframewalkmotion.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp
index f6c43effdf..3cf4d695dd 100644
--- a/indra/llcharacter/llkeyframewalkmotion.cpp
+++ b/indra/llcharacter/llkeyframewalkmotion.cpp
@@ -50,7 +50,8 @@ const F32 MIN_WALK_SPEED = 0.1f; // minimum speed at which we use velocity for d
const F32 MAX_TIME_DELTA = 2.f; //max two seconds a frame for calculating interpolation
F32 SPEED_ADJUST_MAX = 2.5f; // maximum adjustment of walk animation playback speed
F32 SPEED_ADJUST_MAX_SEC = 3.f; // maximum adjustment to walk animation playback speed for a second
-F32 ANIM_SPEED_MAX = 5.0f; // absolute limit on animation speed
+F32 ANIM_SPEED_MAX = 10.0f; // absolute upper limit on animation speed
+F32 ANIM_SPEED_MIN = 0.0f; // absolute lower limit on animation speed
const F32 DRIFT_COMP_MAX_TOTAL = 0.07f;//0.55f; // maximum drift compensation overall, in any direction
const F32 DRIFT_COMP_MAX_SPEED = 4.f; // speed at which drift compensation total maxes out
const F32 MAX_ROLL = 0.6f;
@@ -320,7 +321,14 @@ BOOL LLWalkAdjustMotion::onUpdate(F32 time, U8* joint_mask)
}
mAnimSpeed = (mAvgSpeed + mSpeedAdjust) * mRelativeDir;
- mAnimSpeed = llclamp(mAnimSpeed, -ANIM_SPEED_MAX, ANIM_SPEED_MAX);
+ if (mAnimSpeed>0)
+ {
+ mAnimSpeed = llclamp(mAnimSpeed, ANIM_SPEED_MIN, ANIM_SPEED_MAX);
+ }
+ else
+ {
+ mAnimSpeed = llclamp(mAnimSpeed, -ANIM_SPEED_MAX, -ANIM_SPEED_MIN);
+ }
char debug_text[64];
sprintf(debug_text, "Foot slip vel: %.2f", footSlipVelocity);
mCharacter->addDebugText(debug_text);
@@ -331,6 +339,20 @@ BOOL LLWalkAdjustMotion::onUpdate(F32 time, U8* joint_mask)
sprintf(debug_text, "Animation Playback Speed: %.2f", mAnimSpeed);
mCharacter->addDebugText(debug_text);
mCharacter->setAnimationData("Walk Speed", &mAnimSpeed);
+ if (mCharacter->getMotionController().mIsSelf)
+ {
+ F32 elapsed = mCharacter->getMotionController().getFrameTimer().getElapsedTimeF32();
+ llinfos << "PLOT elapsed: " << elapsed
+// << " footSlipVelocity: " << footSlipVelocity
+// << " speed: " << speed
+// << " mAvgCorrection: " << mAvgCorrection
+ << " mAvgSpeed: " << mAvgSpeed
+// << " mSpeedAdjust: " << mSpeedAdjust
+ << " mAnimSpeed: " << mAnimSpeed
+ << " ANIM_SPEED_MAX: " << ANIM_SPEED_MAX
+ << " ANIM_SPEED_MIN: " << ANIM_SPEED_MIN
+ << llendl;
+ }
// clamp pelvis offset to a 90 degree arc behind the nominal position
F32 drift_comp_max = llclamp(speed, 0.f, DRIFT_COMP_MAX_SPEED) / DRIFT_COMP_MAX_SPEED;