diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/ChildAgentDataUpdate.cs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index 91df64d..538e1b5 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs | |||
@@ -349,6 +349,8 @@ namespace OpenSim.Framework | |||
349 | public List<ISceneObject> AttachmentObjects; | 349 | public List<ISceneObject> AttachmentObjects; |
350 | public List<string> AttachmentObjectStates; | 350 | public List<string> AttachmentObjectStates; |
351 | 351 | ||
352 | public Dictionary<string, UUID> MovementAnimationOverRides = new Dictionary<string, UUID>(); | ||
353 | |||
352 | public virtual OSDMap Pack() | 354 | public virtual OSDMap Pack() |
353 | { | 355 | { |
354 | // m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Pack data"); | 356 | // m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Pack data"); |
@@ -417,6 +419,21 @@ namespace OpenSim.Framework | |||
417 | args["animation_state"] = AnimState.PackUpdateMessage(); | 419 | args["animation_state"] = AnimState.PackUpdateMessage(); |
418 | } | 420 | } |
419 | 421 | ||
422 | if (MovementAnimationOverRides.Count > 0) | ||
423 | { | ||
424 | OSDArray AOs = new OSDArray(MovementAnimationOverRides.Count); | ||
425 | { | ||
426 | foreach (KeyValuePair<string, UUID> kvp in MovementAnimationOverRides) | ||
427 | { | ||
428 | OSDMap ao = new OSDMap(2); | ||
429 | ao["state"] = OSD.FromString(kvp.Key); | ||
430 | ao["uuid"] = OSD.FromUUID(kvp.Value); | ||
431 | AOs.Add(ao); | ||
432 | } | ||
433 | } | ||
434 | args["movementAO"] = AOs; | ||
435 | } | ||
436 | |||
420 | if (Appearance != null) | 437 | if (Appearance != null) |
421 | args["packed_appearance"] = Appearance.Pack(); | 438 | args["packed_appearance"] = Appearance.Pack(); |
422 | 439 | ||
@@ -640,6 +657,25 @@ namespace OpenSim.Framework | |||
640 | } | 657 | } |
641 | } | 658 | } |
642 | 659 | ||
660 | MovementAnimationOverRides.Clear(); | ||
661 | |||
662 | if (args["movementAO"] != null && args["movementAO"].Type == OSDType.Array) | ||
663 | { | ||
664 | OSDArray AOs = (OSDArray)(args["movementAO"]); | ||
665 | int count = AOs.Count; | ||
666 | |||
667 | for (int i = 0; i < count; i++) | ||
668 | { | ||
669 | OSDMap ao = (OSDMap)AOs[i]; | ||
670 | if (ao["state"] != null && ao["uuid"] != null) | ||
671 | { | ||
672 | string state = ao["state"].AsString(); | ||
673 | UUID id = ao["uuid"].AsUUID(); | ||
674 | MovementAnimationOverRides[state] = id; | ||
675 | } | ||
676 | } | ||
677 | } | ||
678 | |||
643 | //if ((args["agent_textures"] != null) && (args["agent_textures"]).Type == OSDType.Array) | 679 | //if ((args["agent_textures"] != null) && (args["agent_textures"]).Type == OSDType.Array) |
644 | //{ | 680 | //{ |
645 | // OSDArray textures = (OSDArray)(args["agent_textures"]); | 681 | // OSDArray textures = (OSDArray)(args["agent_textures"]); |