aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-09-03 01:11:16 +0100
committerJustin Clark-Casey (justincc)2011-09-03 01:11:16 +0100
commit5c1fa968ab954bec9860023dffc8f68baf3c0620 (patch)
treef5be7264076e9e2815cd05f6a7ba8bac2831330a /OpenSim/Region/Framework
parentComment out Scene.CleanDroppedAttachments() and calls. (diff)
downloadopensim-SC_OLD-5c1fa968ab954bec9860023dffc8f68baf3c0620.zip
opensim-SC_OLD-5c1fa968ab954bec9860023dffc8f68baf3c0620.tar.gz
opensim-SC_OLD-5c1fa968ab954bec9860023dffc8f68baf3c0620.tar.bz2
opensim-SC_OLD-5c1fa968ab954bec9860023dffc8f68baf3c0620.tar.xz
Stop NPCs losing attachments when the source avatar takes them off.
This was happening because we were using the source avatar's item IDs in the clone appearance. Switch to using the asset IDs of attachments instead for NPCs. The InventoryAccessModule and AttachmentModule had to be changed to allow rezzing of an object without an associated inventory item. Hopefully goes some way towards resolving http://opensimulator.org/mantis/view.php?id=5653
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs56
-rw-r--r--OpenSim/Region/Framework/Interfaces/IScenePresence.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs3
3 files changed, 57 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
index da11e61..1904011 100644
--- a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
@@ -54,10 +54,58 @@ namespace OpenSim.Region.Framework.Interfaces
54 /// FIXME: This is not very useful. It would be far more useful to return a list of items instead. 54 /// FIXME: This is not very useful. It would be far more useful to return a list of items instead.
55 /// </returns> 55 /// </returns>
56 UUID CopyToInventory(DeRezAction action, UUID folderID, List<SceneObjectGroup> objectGroups, IClientAPI remoteClient); 56 UUID CopyToInventory(DeRezAction action, UUID folderID, List<SceneObjectGroup> objectGroups, IClientAPI remoteClient);
57 57
58 SceneObjectGroup RezObject(IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart, 58 /// <summary>
59 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, 59 /// Rez an object into the scene from the user's inventory
60 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment); 60 /// </summary>
61 /// <remarks>
62 /// FIXME: It would be really nice if inventory access modules didn't also actually do the work of rezzing
63 /// things to the scene. The caller should be doing that, I think.
64 /// </remarks>
65 /// <param name="remoteClient"></param>
66 /// <param name="itemID"></param>
67 /// <param name="RayEnd"></param>
68 /// <param name="RayStart"></param>
69 /// <param name="RayTargetID"></param>
70 /// <param name="BypassRayCast"></param>
71 /// <param name="RayEndIsIntersection"></param>
72 /// <param name="RezSelected"></param>
73 /// <param name="RemoveItem"></param>
74 /// <param name="fromTaskID"></param>
75 /// <param name="attachment"></param>
76 /// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful.</returns>
77 SceneObjectGroup RezObject(
78 IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart,
79 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
80 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment);
81
82 /// <summary>
83 /// Rez an object into the scene from the user's inventory
84 /// </summary>
85 /// <remarks>
86 /// FIXME: It would be really nice if inventory access modules didn't also actually do the work of rezzing
87 /// things to the scene. The caller should be doing that, I think.
88 /// </remarks>
89 /// <param name="remoteClient"></param>
90 /// <param name="item">
91 /// The item from which the object asset came. Can be null, in which case pre and post rez item adjustment and checks are not performed.
92 /// </param>
93 /// <param name="assetID">The asset id for the object to rez.</param>
94 /// <param name="RayEnd"></param>
95 /// <param name="RayStart"></param>
96 /// <param name="RayTargetID"></param>
97 /// <param name="BypassRayCast"></param>
98 /// <param name="RayEndIsIntersection"></param>
99 /// <param name="RezSelected"></param>
100 /// <param name="RemoveItem"></param>
101 /// <param name="fromTaskID"></param>
102 /// <param name="attachment"></param>
103 /// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful.</returns>
104 SceneObjectGroup RezObject(
105 IClientAPI remoteClient, InventoryItemBase item, UUID assetID, Vector3 RayEnd, Vector3 RayStart,
106 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
107 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment);
108
61 void TransferInventoryAssets(InventoryItemBase item, UUID sender, UUID receiver); 109 void TransferInventoryAssets(InventoryItemBase item, UUID sender, UUID receiver);
62 110
63 /// <summary> 111 /// <summary>
diff --git a/OpenSim/Region/Framework/Interfaces/IScenePresence.cs b/OpenSim/Region/Framework/Interfaces/IScenePresence.cs
index 91e4bf2..8913133 100644
--- a/OpenSim/Region/Framework/Interfaces/IScenePresence.cs
+++ b/OpenSim/Region/Framework/Interfaces/IScenePresence.cs
@@ -46,6 +46,11 @@ namespace OpenSim.Region.Framework.Interfaces
46 IClientAPI ControllingClient { get; } 46 IClientAPI ControllingClient { get; }
47 47
48 /// <summary> 48 /// <summary>
49 /// What type of presence is this? User, NPC, etc.
50 /// </summary>
51 PresenceType PresenceType { get; }
52
53 /// <summary>
49 /// Avatar appearance data. 54 /// Avatar appearance data.
50 /// </summary> 55 /// </summary>
51 /// <remarks> 56 /// <remarks>
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 0d284a5..1c283c7 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -75,9 +75,6 @@ namespace OpenSim.Region.Framework.Scenes
75 75
76 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 76 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
77 77
78 /// <summary>
79 /// What type of presence is this? User, NPC, etc.
80 /// </summary>
81 public PresenceType PresenceType { get; private set; } 78 public PresenceType PresenceType { get; private set; }
82 79
83// private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes(); 80// private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes();