diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index 65c279e..eb70eee 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | |||
@@ -93,7 +93,9 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
93 | GetAnimName(animID), animID, m_scenePresence.Name); | 93 | GetAnimName(animID), animID, m_scenePresence.Name); |
94 | 94 | ||
95 | if (m_animations.Add(animID, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, objectID)) | 95 | if (m_animations.Add(animID, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, objectID)) |
96 | { | ||
96 | SendAnimPack(); | 97 | SendAnimPack(); |
98 | } | ||
97 | } | 99 | } |
98 | 100 | ||
99 | // Called from scripts | 101 | // Called from scripts |
@@ -132,7 +134,9 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
132 | GetAnimName(animID), animID, m_scenePresence.Name); | 134 | GetAnimName(animID), animID, m_scenePresence.Name); |
133 | 135 | ||
134 | if (m_animations.Remove(animID, allowNoDefault)) | 136 | if (m_animations.Remove(animID, allowNoDefault)) |
137 | { | ||
135 | SendAnimPack(); | 138 | SendAnimPack(); |
139 | } | ||
136 | } | 140 | } |
137 | 141 | ||
138 | public void avnChangeAnim(UUID animID, bool addRemove, bool sendPack) | 142 | public void avnChangeAnim(UUID animID, bool addRemove, bool sendPack) |
@@ -180,8 +184,10 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
180 | /// The movement animation is reserved for "main" animations | 184 | /// The movement animation is reserved for "main" animations |
181 | /// that are mutually exclusive, e.g. flying and sitting. | 185 | /// that are mutually exclusive, e.g. flying and sitting. |
182 | /// </summary> | 186 | /// </summary> |
183 | public void TrySetMovementAnimation(string anim) | 187 | /// <returns>'true' if the animation was updated</returns> |
188 | public bool TrySetMovementAnimation(string anim) | ||
184 | { | 189 | { |
190 | bool ret = false; | ||
185 | if (!m_scenePresence.IsChildAgent) | 191 | if (!m_scenePresence.IsChildAgent) |
186 | { | 192 | { |
187 | // m_log.DebugFormat( | 193 | // m_log.DebugFormat( |
@@ -198,6 +204,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
198 | // 16384 is CHANGED_ANIMATION | 204 | // 16384 is CHANGED_ANIMATION |
199 | m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { (int)Changed.ANIMATION}); | 205 | m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { (int)Changed.ANIMATION}); |
200 | SendAnimPack(); | 206 | SendAnimPack(); |
207 | ret = true; | ||
201 | } | 208 | } |
202 | } | 209 | } |
203 | else | 210 | else |
@@ -206,6 +213,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
206 | "[SCENE PRESENCE ANIMATOR]: Tried to set movement animation {0} on child presence {1}", | 213 | "[SCENE PRESENCE ANIMATOR]: Tried to set movement animation {0} on child presence {1}", |
207 | anim, m_scenePresence.Name); | 214 | anim, m_scenePresence.Name); |
208 | } | 215 | } |
216 | return ret; | ||
209 | } | 217 | } |
210 | 218 | ||
211 | /// <summary> | 219 | /// <summary> |
@@ -439,8 +447,10 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
439 | /// <summary> | 447 | /// <summary> |
440 | /// Update the movement animation of this avatar according to its current state | 448 | /// Update the movement animation of this avatar according to its current state |
441 | /// </summary> | 449 | /// </summary> |
442 | public void UpdateMovementAnimations() | 450 | /// <returns>'true' if the animation was changed</returns> |
451 | public bool UpdateMovementAnimations() | ||
443 | { | 452 | { |
453 | bool ret = false; | ||
444 | lock (m_animations) | 454 | lock (m_animations) |
445 | { | 455 | { |
446 | string newMovementAnimation = DetermineMovementAnimation(); | 456 | string newMovementAnimation = DetermineMovementAnimation(); |
@@ -454,9 +464,10 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
454 | 464 | ||
455 | // Only set it if it's actually changed, give a script | 465 | // Only set it if it's actually changed, give a script |
456 | // a chance to stop a default animation | 466 | // a chance to stop a default animation |
457 | TrySetMovementAnimation(CurrentMovementAnimation); | 467 | ret = TrySetMovementAnimation(CurrentMovementAnimation); |
458 | } | 468 | } |
459 | } | 469 | } |
470 | return ret; | ||
460 | } | 471 | } |
461 | 472 | ||
462 | public UUID[] GetAnimationArray() | 473 | public UUID[] GetAnimationArray() |