aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services')
-rw-r--r--OpenSim/Services/Interfaces/IAvatarService.cs21
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)