diff options
author | Josh Bell <josh@lindenlab.com> | 2007-06-11 18:24:15 +0000 |
---|---|---|
committer | Josh Bell <josh@lindenlab.com> | 2007-06-11 18:24:15 +0000 |
commit | 28435a08988022f5dd1d0e931b6ad048b8950e11 (patch) | |
tree | d83112da5b9a3c0b9bf175e03c11aeda1d461382 /indra/llcharacter | |
parent | 309b56280bff46f1696aee73cbd25f2e61232bc7 (diff) |
NOTE: Partial merges of the maintenance branch up. The bulk of maintenance 62831:63347 is awaiting final QA and merging, post 1.17.0
svn merge -r 63182:63183 svn+ssh://svn.lindenlab.com/svn/linden/branches/maintenance --> release
svn merge -r 63341:63342 svn+ssh://svn.lindenlab.com/svn/linden/branches/maintenance --> release
svn merge -r 63420:63421 svn+ssh://svn.lindenlab.com/svn/linden/branches/maintenance --> release
Rush in the following fixes:
* SL-27250 "Stop All Animations" doesn't work when stuck in a pose after teleporting
* SL-44718 VWR-1040: crash when opening several gestures quickly
* SL-44326 recurring error message in agni nightly #1
Diffstat (limited to 'indra/llcharacter')
-rw-r--r-- | indra/llcharacter/llcharacter.cpp | 9 | ||||
-rw-r--r-- | indra/llcharacter/llcharacter.h | 3 | ||||
-rw-r--r-- | indra/llcharacter/llmotioncontroller.cpp | 17 | ||||
-rw-r--r-- | indra/llcharacter/llmotioncontroller.h | 3 |
4 files changed, 32 insertions, 0 deletions
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp index 583f01cf91..c6ed3e6b5d 100644 --- a/indra/llcharacter/llcharacter.cpp +++ b/indra/llcharacter/llcharacter.cpp @@ -170,6 +170,15 @@ void LLCharacter::updateMotion(BOOL force_update) //----------------------------------------------------------------------------- +// deactivateAllMotions() +//----------------------------------------------------------------------------- +void LLCharacter::deactivateAllMotions() +{ + mMotionController.deactivateAllMotions(); +} + + +//----------------------------------------------------------------------------- // flushAllMotions() //----------------------------------------------------------------------------- void LLCharacter::flushAllMotions() diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h index 44fb6d0833..8f720d3b84 100644 --- a/indra/llcharacter/llcharacter.h +++ b/indra/llcharacter/llcharacter.h @@ -150,6 +150,9 @@ public: // no cached references to character joint data. This is // useful if a character wants to rebuild it's skeleton. virtual void flushAllMotions(); + + // Flush only wipes active animations. + virtual void deactivateAllMotions(); // dumps information for debugging virtual void dumpCharacter( LLJoint *joint = NULL ); diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp index 71bbdfb932..fad69fc6e9 100644 --- a/indra/llcharacter/llmotioncontroller.cpp +++ b/indra/llcharacter/llmotioncontroller.cpp @@ -835,6 +835,23 @@ LLMotion *LLMotionController::findMotion(const LLUUID& id) return mAllMotions[id]; } +//----------------------------------------------------------------------------- +// deactivateAllMotions() +//----------------------------------------------------------------------------- +void LLMotionController::deactivateAllMotions() +{ + //They must all die, precious. + for (std::map<LLUUID, LLMotion*>::iterator iter = mAllMotions.begin(); + iter != mAllMotions.end(); iter++) + { + LLMotion* motionp = iter->second; + if (motionp) motionp->deactivate(); + } + + // delete all motion instances + deleteAllMotions(); +} + //----------------------------------------------------------------------------- // flushAllMotions() diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h index a19e704643..15791b6318 100644 --- a/indra/llcharacter/llmotioncontroller.h +++ b/indra/llcharacter/llmotioncontroller.h @@ -138,6 +138,9 @@ public: // releases all motion instances void flushAllMotions(); + //Flush is a liar. + void deactivateAllMotions(); + // pause and continue all motions void pause(); void unpause(); |