summaryrefslogtreecommitdiff
path: root/indra/llcharacter
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llcharacter')
-rw-r--r--indra/llcharacter/llkeyframewalkmotion.cpp26
-rw-r--r--indra/llcharacter/llmotioncontroller.cpp2
-rw-r--r--indra/llcharacter/llmotioncontroller.h4
3 files changed, 28 insertions, 4 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;
diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp
index ca10f5f572..51a9120cbb 100644
--- a/indra/llcharacter/llmotioncontroller.cpp
+++ b/indra/llcharacter/llmotioncontroller.cpp
@@ -567,7 +567,7 @@ void breakWalkIf(LLMotion *motionp, BOOL flag)
{
if (flag)
{
- llinfos << "break here" << llendl;
+// llinfos << "break here" << llendl;
}
}
}
diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h
index 30ab0cbdc9..f8bf5ac289 100644
--- a/indra/llcharacter/llmotioncontroller.h
+++ b/indra/llcharacter/llmotioncontroller.h
@@ -171,7 +171,9 @@ public:
LLMotion *findMotion( const LLUUID& id ) const;
void dumpMotions();
-
+
+ const LLFrameTimer& getFrameTimer() { return mTimer; }
+
protected:
// internal operations act on motion instances directly
// as there can be duplicate motions per id during blending overlap