summaryrefslogtreecommitdiff
path: root/indra/llcharacter
diff options
context:
space:
mode:
authorJosh Bell <josh@lindenlab.com>2007-06-11 18:24:15 +0000
committerJosh Bell <josh@lindenlab.com>2007-06-11 18:24:15 +0000
commit28435a08988022f5dd1d0e931b6ad048b8950e11 (patch)
treed83112da5b9a3c0b9bf175e03c11aeda1d461382 /indra/llcharacter
parent309b56280bff46f1696aee73cbd25f2e61232bc7 (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.cpp9
-rw-r--r--indra/llcharacter/llcharacter.h3
-rw-r--r--indra/llcharacter/llmotioncontroller.cpp17
-rw-r--r--indra/llcharacter/llmotioncontroller.h3
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();