aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie Thielker2010-04-24 16:45:25 +0200
committerMelanie Thielker2010-04-24 16:45:25 +0200
commit71f42f185a48ef96391b39fa0197c1a8b793e969 (patch)
treeddd8def5eed77423b4541201f06aa2b4be4b6eaa
parentAdd an additional serialization call do the detach procedure. This call is (diff)
downloadopensim-SC_OLD-71f42f185a48ef96391b39fa0197c1a8b793e969.zip
opensim-SC_OLD-71f42f185a48ef96391b39fa0197c1a8b793e969.tar.gz
opensim-SC_OLD-71f42f185a48ef96391b39fa0197c1a8b793e969.tar.bz2
opensim-SC_OLD-71f42f185a48ef96391b39fa0197c1a8b793e969.tar.xz
Plumb a data path to initialize an attachment from an alternate source
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs20
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs1
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs7
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs2
-rw-r--r--OpenSim/Services/Interfaces/IAttachmentsService.cs31
5 files changed, 57 insertions, 4 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 8307467..1992bd4 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -27,6 +27,7 @@
27 27
28using System.Collections.Generic; 28using System.Collections.Generic;
29using System.Reflection; 29using System.Reflection;
30using System.Xml;
30using log4net; 31using log4net;
31using Nini.Config; 32using Nini.Config;
32using OpenMetaverse; 33using OpenMetaverse;
@@ -191,8 +192,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
191 192
192 public UUID RezSingleAttachmentFromInventory( 193 public UUID RezSingleAttachmentFromInventory(
193 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus) 194 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus)
195 {
196 return RezSingleAttachmentFromInventory(remoteClient, itemID, AttachmentPt, true, null);
197 }
198
199 public UUID RezSingleAttachmentFromInventory(
200 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus, XmlDocument doc)
194 { 201 {
195 SceneObjectGroup att = RezSingleAttachmentFromInventoryInternal(remoteClient, itemID, AttachmentPt); 202 SceneObjectGroup att = RezSingleAttachmentFromInventoryInternal(remoteClient, itemID, AttachmentPt, doc);
196 203
197 if (updateInventoryStatus) 204 if (updateInventoryStatus)
198 { 205 {
@@ -211,7 +218,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
211 } 218 }
212 219
213 protected SceneObjectGroup RezSingleAttachmentFromInventoryInternal( 220 protected SceneObjectGroup RezSingleAttachmentFromInventoryInternal(
214 IClientAPI remoteClient, UUID itemID, uint AttachmentPt) 221 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, XmlDocument doc)
215 { 222 {
216 IInventoryAccessModule invAccess = m_scene.RequestModuleInterface<IInventoryAccessModule>(); 223 IInventoryAccessModule invAccess = m_scene.RequestModuleInterface<IInventoryAccessModule>();
217 if (invAccess != null) 224 if (invAccess != null)
@@ -237,6 +244,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
237 if (tainted) 244 if (tainted)
238 objatt.HasGroupChanged = true; 245 objatt.HasGroupChanged = true;
239 246
247 if (doc != null)
248 objatt.LoadScriptState(doc);
249
240 // Fire after attach, so we don't get messy perms dialogs 250 // Fire after attach, so we don't get messy perms dialogs
241 // 3 == AttachedRez 251 // 3 == AttachedRez
242 objatt.CreateScriptInstances(0, true, m_scene.DefaultScriptEngine, 3); 252 objatt.CreateScriptInstances(0, true, m_scene.DefaultScriptEngine, 3);
@@ -318,6 +328,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
318 { 328 {
319 // XXYY!! 329 // XXYY!!
320 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); 330 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
331 if (item == null)
332 m_log.Error("[ATTACHMENT]: item == null");
333 if (m_scene == null)
334 m_log.Error("[ATTACHMENT]: m_scene == null");
335 if (m_scene.InventoryService == null)
336 m_log.Error("[ATTACHMENT]: m_scene.InventoryService == null");
321 item = m_scene.InventoryService.GetItem(item); 337 item = m_scene.InventoryService.GetItem(item);
322 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /* att.UUID */); 338 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /* att.UUID */);
323 339
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 2352ced..c50abb8 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -524,6 +524,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
524 } 524 }
525 else 525 else
526 { 526 {
527 throw new Exception("AttachTracer");
527 group.SetFromItemID(itemID); 528 group.SetFromItemID(itemID);
528 } 529 }
529 530
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index f8af367..958847b 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -26,6 +26,7 @@
26 */ 26 */
27 27
28using System; 28using System;
29using System.Xml;
29using OpenMetaverse; 30using OpenMetaverse;
30using OpenMetaverse.Packets; 31using OpenMetaverse.Packets;
31using OpenSim.Framework; 32using OpenSim.Framework;
@@ -82,6 +83,10 @@ namespace OpenSim.Region.Framework.Interfaces
82 UUID RezSingleAttachmentFromInventory( 83 UUID RezSingleAttachmentFromInventory(
83 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus); 84 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus);
84 85
86 // Same as above, but also load script states from a separate doc
87 UUID RezSingleAttachmentFromInventory(
88 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus, XmlDocument doc);
89
85 /// <summary> 90 /// <summary>
86 /// Rez multiple attachments from a user's inventory 91 /// Rez multiple attachments from a user's inventory
87 /// </summary> 92 /// </summary>
@@ -132,4 +137,4 @@ namespace OpenSim.Region.Framework.Interfaces
132 /// </param> 137 /// </param>
133 void ShowDetachInUserInventory(UUID itemID, IClientAPI remoteClient); 138 void ShowDetachInUserInventory(UUID itemID, IClientAPI remoteClient);
134 } 139 }
135} \ No newline at end of file 140}
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index c220bf0..a5c0b0d 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -3984,7 +3984,7 @@ Console.WriteLine("Scripted Sit ofset {0}", m_pos);
3984 { 3984 {
3985 // Rez from inventory 3985 // Rez from inventory
3986 UUID asset 3986 UUID asset
3987 = m_scene.AttachmentsModule.RezSingleAttachmentFromInventory(ControllingClient, itemID, (uint)p); 3987 = m_scene.AttachmentsModule.RezSingleAttachmentFromInventory(ControllingClient, itemID, (uint)p, true, null);
3988 3988
3989 m_log.InfoFormat( 3989 m_log.InfoFormat(
3990 "[ATTACHMENT]: Rezzed attachment in point {0} from item {1} and asset {2} ({3})", 3990 "[ATTACHMENT]: Rezzed attachment in point {0} from item {1} and asset {2} ({3})",
diff --git a/OpenSim/Services/Interfaces/IAttachmentsService.cs b/OpenSim/Services/Interfaces/IAttachmentsService.cs
new file mode 100644
index 0000000..3b9f2f2
--- /dev/null
+++ b/OpenSim/Services/Interfaces/IAttachmentsService.cs
@@ -0,0 +1,31 @@
1////////////////////////////////////////////////////////////////
2//
3// (c) 2009, 2010 Careminster Limited and Melanie Thielker
4//
5// All rights reserved
6//
7using System;
8using System.Diagnostics;
9using System.Collections.Generic;
10using System.IO;
11using System.Text;
12using System.Threading;
13using System.Reflection;
14using OpenSim.Framework;
15using OpenSim.Framework.Console;
16using OpenSim.Server.Base;
17using OpenSim.Services.Base;
18using OpenSim.Services.Interfaces;
19using Nini.Config;
20using log4net;
21using Careminster;
22using OpenMetaverse;
23
24namespace Careminster
25{
26 public interface IAttachmentsService
27 {
28 string Get(string id);
29 void Store(string id, string data);
30 }
31}