aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs30
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs12
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs30
3 files changed, 43 insertions, 29 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 103a813..0ea1f63 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -137,5 +137,35 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
137 137
138 return true; 138 return true;
139 } 139 }
140
141 /// <summary>
142 /// Update the user inventory to reflect an attachment
143 /// </summary>
144 /// <param name="att"></param>
145 /// <param name="remoteClient"></param>
146 /// <param name="itemID"></param>
147 /// <param name="AttachmentPt"></param>
148 /// <returns></returns>
149 public UUID SetAttachmentInventoryStatus(
150 SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
151 {
152 m_log.DebugFormat(
153 "[USER INVENTORY]: Updating inventory of {0} to show attachment of {1} (item ID {2})",
154 remoteClient.Name, att.Name, itemID);
155
156 if (!att.IsDeleted)
157 AttachmentPt = att.RootPart.AttachmentPoint;
158
159 ScenePresence presence;
160 if (m_scene.TryGetAvatar(remoteClient.AgentId, out presence))
161 {
162 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
163 item = m_scene.InventoryService.GetItem(item);
164
165 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/);
166 }
167
168 return att.UUID;
169 }
140 } 170 }
141} \ No newline at end of file 171} \ No newline at end of file
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index c965bcf..5e5df4b 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -28,6 +28,7 @@
28using System; 28using System;
29using OpenMetaverse; 29using OpenMetaverse;
30using OpenSim.Framework; 30using OpenSim.Framework;
31using OpenSim.Region.Framework.Scenes;
31 32
32namespace OpenSim.Region.Framework.Interfaces 33namespace OpenSim.Region.Framework.Interfaces
33{ 34{
@@ -45,5 +46,16 @@ namespace OpenSim.Region.Framework.Interfaces
45 /// <returns>true if the object was successfully attached, false otherwise</returns> 46 /// <returns>true if the object was successfully attached, false otherwise</returns>
46 bool AttachObject( 47 bool AttachObject(
47 IClientAPI controllingClient, uint localID, uint attachPoint, Quaternion rot, Vector3 pos, bool silent); 48 IClientAPI controllingClient, uint localID, uint attachPoint, Quaternion rot, Vector3 pos, bool silent);
49
50 /// <summary>
51 /// Update the user inventory to the attachment of an item
52 /// </summary>
53 /// <param name="att"></param>
54 /// <param name="remoteClient"></param>
55 /// <param name="itemID"></param>
56 /// <param name="AttachmentPt"></param>
57 /// <returns></returns>
58 UUID SetAttachmentInventoryStatus(
59 SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
48 } 60 }
49} \ No newline at end of file 61} \ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 474fba9..6a5dc56 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1862,35 +1862,7 @@ namespace OpenSim.Region.Framework.Scenes
1862 return UUID.Zero; 1862 return UUID.Zero;
1863 } 1863 }
1864 1864
1865 return RezSingleAttachment(att, remoteClient, itemID, AttachmentPt); 1865 return AttachmentsModule.SetAttachmentInventoryStatus(att, remoteClient, itemID, AttachmentPt);
1866 }
1867
1868 /// <summary>
1869 /// Update the user inventory to reflect an attachment
1870 /// </summary>
1871 /// <param name="att"></param>
1872 /// <param name="remoteClient"></param>
1873 /// <param name="itemID"></param>
1874 /// <param name="AttachmentPt"></param>
1875 /// <returns></returns>
1876 public UUID RezSingleAttachment(SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
1877 {
1878 m_log.DebugFormat(
1879 "[USER INVENTORY]: Updating inventory of {0} to show attachment of {1} (item ID {2})",
1880 remoteClient.Name, att.Name, itemID);
1881
1882 if (!att.IsDeleted)
1883 AttachmentPt = att.RootPart.AttachmentPoint;
1884
1885 ScenePresence presence;
1886 if (TryGetAvatar(remoteClient.AgentId, out presence))
1887 {
1888 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
1889 item = InventoryService.GetItem(item);
1890
1891 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/);
1892 }
1893 return att.UUID;
1894 } 1866 }
1895 1867
1896 public void RezMultipleAttachments(IClientAPI remoteClient, RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header, 1868 public void RezMultipleAttachments(IClientAPI remoteClient, RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,