diff options
Diffstat (limited to 'OpenSim/Framework/ChildAgentDataUpdate.cs')
-rw-r--r-- | OpenSim/Framework/ChildAgentDataUpdate.cs | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index a714d86..2fce155 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs | |||
@@ -61,7 +61,7 @@ namespace OpenSim.Framework | |||
61 | { | 61 | { |
62 | UUID AgentID { get; set; } | 62 | UUID AgentID { get; set; } |
63 | 63 | ||
64 | OSDMap Pack(); | 64 | OSDMap Pack(Object parms = null); |
65 | void Unpack(OSDMap map, IScene scene); | 65 | void Unpack(OSDMap map, IScene scene); |
66 | } | 66 | } |
67 | 67 | ||
@@ -96,7 +96,7 @@ namespace OpenSim.Framework | |||
96 | 96 | ||
97 | public Dictionary<ulong, string> ChildrenCapSeeds = null; | 97 | public Dictionary<ulong, string> ChildrenCapSeeds = null; |
98 | 98 | ||
99 | public OSDMap Pack() | 99 | public OSDMap Pack(Object parms = null) |
100 | { | 100 | { |
101 | OSDMap args = new OSDMap(); | 101 | OSDMap args = new OSDMap(); |
102 | args["message_type"] = OSD.FromString("AgentPosition"); | 102 | args["message_type"] = OSD.FromString("AgentPosition"); |
@@ -391,8 +391,18 @@ namespace OpenSim.Framework | |||
391 | 391 | ||
392 | public Dictionary<string, UUID> MovementAnimationOverRides = new Dictionary<string, UUID>(); | 392 | public Dictionary<string, UUID> MovementAnimationOverRides = new Dictionary<string, UUID>(); |
393 | 393 | ||
394 | public virtual OSDMap Pack() | 394 | public virtual OSDMap Pack(Object parms = null) |
395 | { | 395 | { |
396 | int wearablesCount = -1; | ||
397 | |||
398 | if (parms != null) | ||
399 | { | ||
400 | Hashtable p = (Hashtable)parms; | ||
401 | |||
402 | if (p.ContainsKey("wearablesCount")) | ||
403 | wearablesCount = (int)p["wearablesCount"]; | ||
404 | } | ||
405 | |||
396 | // m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Pack data"); | 406 | // m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Pack data"); |
397 | 407 | ||
398 | OSDMap args = new OSDMap(); | 408 | OSDMap args = new OSDMap(); |
@@ -493,7 +503,7 @@ namespace OpenSim.Framework | |||
493 | } | 503 | } |
494 | 504 | ||
495 | if (Appearance != null) | 505 | if (Appearance != null) |
496 | args["packed_appearance"] = Appearance.Pack(); | 506 | args["packed_appearance"] = Appearance.Pack(wearablesCount); |
497 | 507 | ||
498 | //if ((AgentTextures != null) && (AgentTextures.Length > 0)) | 508 | //if ((AgentTextures != null) && (AgentTextures.Length > 0)) |
499 | //{ | 509 | //{ |
@@ -800,11 +810,7 @@ namespace OpenSim.Framework | |||
800 | { | 810 | { |
801 | OSDArray wears = (OSDArray)(args["wearables"]); | 811 | OSDArray wears = (OSDArray)(args["wearables"]); |
802 | 812 | ||
803 | int count = wears.Count; | 813 | for (int i = 0; i < wears.Count / 2; i++) |
804 | if (count > AvatarWearable.MAX_WEARABLES) | ||
805 | count = AvatarWearable.MAX_WEARABLES; | ||
806 | |||
807 | for (int i = 0; i < count / 2; i++) | ||
808 | { | 814 | { |
809 | AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]); | 815 | AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]); |
810 | Appearance.SetWearable(i, awear); | 816 | Appearance.SetWearable(i, awear); |
@@ -897,9 +903,9 @@ namespace OpenSim.Framework | |||
897 | 903 | ||
898 | public class CompleteAgentData : AgentData | 904 | public class CompleteAgentData : AgentData |
899 | { | 905 | { |
900 | public override OSDMap Pack() | 906 | public override OSDMap Pack(object parms = null) |
901 | { | 907 | { |
902 | return base.Pack(); | 908 | return base.Pack(parms); |
903 | } | 909 | } |
904 | 910 | ||
905 | public override void Unpack(OSDMap map, IScene scene) | 911 | public override void Unpack(OSDMap map, IScene scene) |