aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/Animation/MovementAnimationOverrides.cs17
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs6
2 files changed, 22 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Animation/MovementAnimationOverrides.cs b/OpenSim/Region/Framework/Scenes/Animation/MovementAnimationOverrides.cs
index db4003e..31fdb2c 100644
--- a/OpenSim/Region/Framework/Scenes/Animation/MovementAnimationOverrides.cs
+++ b/OpenSim/Region/Framework/Scenes/Animation/MovementAnimationOverrides.cs
@@ -80,5 +80,22 @@ namespace OpenSim.Region.Framework.Scenes
80 80
81 return UUID.Zero; 81 return UUID.Zero;
82 } 82 }
83
84 public Dictionary<string, UUID> CloneAOPairs()
85 {
86 lock (m_overrides)
87 {
88 return new Dictionary<string, UUID>(m_overrides);
89 }
90 }
91
92 public void CopyAOPairsFrom(Dictionary<string, UUID> src)
93 {
94 lock (m_overrides)
95 {
96 m_overrides.Clear();
97 m_overrides = new Dictionary<string, UUID>(src);
98 }
99 }
83 } 100 }
84} 101}
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index b6eb4e4..7c515d5 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -4212,6 +4212,8 @@ namespace OpenSim.Region.Framework.Scenes
4212 cAgent.DefaultAnim = Animator.Animations.DefaultAnimation; 4212 cAgent.DefaultAnim = Animator.Animations.DefaultAnimation;
4213 cAgent.AnimState = Animator.Animations.ImplicitDefaultAnimation; 4213 cAgent.AnimState = Animator.Animations.ImplicitDefaultAnimation;
4214 4214
4215 cAgent.MovementAnimationOverRides = Overrides.CloneAOPairs();
4216
4215 if (Scene.AttachmentsModule != null) 4217 if (Scene.AttachmentsModule != null)
4216 Scene.AttachmentsModule.CopyAttachments(this, cAgent); 4218 Scene.AttachmentsModule.CopyAttachments(this, cAgent);
4217 } 4219 }
@@ -4282,7 +4284,9 @@ namespace OpenSim.Region.Framework.Scenes
4282 catch { } 4284 catch { }
4283 4285
4284 Animator.ResetAnimations(); 4286 Animator.ResetAnimations();
4285 4287
4288 Overrides.CopyAOPairsFrom(cAgent.MovementAnimationOverRides);
4289
4286 // FIXME: Why is this null check necessary? Where are the cases where we get a null Anims object? 4290 // FIXME: Why is this null check necessary? Where are the cases where we get a null Anims object?
4287 if (cAgent.DefaultAnim != null) 4291 if (cAgent.DefaultAnim != null)
4288 Animator.Animations.SetDefaultAnimation(cAgent.DefaultAnim.AnimID, cAgent.DefaultAnim.SequenceNum, UUID.Zero); 4292 Animator.Animations.SetDefaultAnimation(cAgent.DefaultAnim.AnimID, cAgent.DefaultAnim.SequenceNum, UUID.Zero);