diff options
Diffstat (limited to 'OpenSim/Services')
-rw-r--r-- | OpenSim/Services/Interfaces/IAvatarService.cs | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index c0130f1..3663a7a 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs | |||
@@ -180,11 +180,18 @@ namespace OpenSim.Services.Interfaces | |||
180 | 180 | ||
181 | // Attachments | 181 | // Attachments |
182 | List<AvatarAttachment> attachments = appearance.GetAttachments(); | 182 | List<AvatarAttachment> attachments = appearance.GetAttachments(); |
183 | Dictionary<int, List<string>> atts = new Dictionary<int, List<string>>(); | ||
183 | foreach (AvatarAttachment attach in attachments) | 184 | foreach (AvatarAttachment attach in attachments) |
184 | { | 185 | { |
185 | if (attach.ItemID != UUID.Zero) | 186 | if (attach.ItemID != UUID.Zero) |
186 | Data["_ap_" + attach.AttachPoint] = attach.ItemID.ToString(); | 187 | { |
188 | if (!atts.ContainsKey(attach.AttachPoint)) | ||
189 | atts[attach.AttachPoint] = new List<string>(); | ||
190 | atts[attach.AttachPoint].Add(attach.ItemID.ToString()); | ||
191 | } | ||
187 | } | 192 | } |
193 | foreach (KeyValuePair<int, List<string>> kvp in atts) | ||
194 | Data["_ap_" + kvp.Key] = string.Join(",", kvp.Value.ToArray()); | ||
188 | } | 195 | } |
189 | 196 | ||
190 | public AvatarAppearance ToAvatarAppearance() | 197 | public AvatarAppearance ToAvatarAppearance() |
@@ -320,10 +327,16 @@ namespace OpenSim.Services.Interfaces | |||
320 | if (!Int32.TryParse(pointStr, out point)) | 327 | if (!Int32.TryParse(pointStr, out point)) |
321 | continue; | 328 | continue; |
322 | 329 | ||
323 | UUID uuid = UUID.Zero; | 330 | List<string> idList = new List<string>(_kvp.Value.Split(new char[] {','})); |
324 | UUID.TryParse(_kvp.Value, out uuid); | ||
325 | 331 | ||
326 | appearance.SetAttachment(point, uuid, UUID.Zero); | 332 | appearance.SetAttachment(point, UUID.Zero, UUID.Zero); |
333 | foreach (string id in idList) | ||
334 | { | ||
335 | UUID uuid = UUID.Zero; | ||
336 | UUID.TryParse(id, out uuid); | ||
337 | |||
338 | appearance.SetAttachment(point | 0x80, uuid, UUID.Zero); | ||
339 | } | ||
327 | } | 340 | } |
328 | 341 | ||
329 | if (appearance.Wearables[AvatarWearable.BODY].Count == 0) | 342 | if (appearance.Wearables[AvatarWearable.BODY].Count == 0) |