aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs39
1 files changed, 21 insertions, 18 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index ae35cb9..f291022 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -3274,26 +3274,29 @@ namespace OpenSim.Region.Framework.Scenes
3274 { 3274 {
3275 m_eventManager.TriggerOnRemovePresence(agentID); 3275 m_eventManager.TriggerOnRemovePresence(agentID);
3276 3276
3277 if (AttachmentsModule != null && !isChildAgent && avatar.PresenceType != PresenceType.Npc) 3277 if (!isChildAgent)
3278 { 3278 {
3279 IUserManagement uMan = RequestModuleInterface<IUserManagement>(); 3279 if (AttachmentsModule != null && avatar.PresenceType != PresenceType.Npc)
3280 // Don't save attachments for HG visitors, it
3281 // messes up their inventory. When a HG visitor logs
3282 // out on a foreign grid, their attachments will be
3283 // reloaded in the state they were in when they left
3284 // the home grid. This is best anyway as the visited
3285 // grid may use an incompatible script engine.
3286 if (uMan == null || uMan.IsLocalGridUser(avatar.UUID))
3287 AttachmentsModule.SaveChangedAttachments(avatar, false);
3288 }
3289
3290 ForEachClient(
3291 delegate(IClientAPI client)
3292 { 3280 {
3293 //We can safely ignore null reference exceptions. It means the avatar is dead and cleaned up anyway 3281 IUserManagement uMan = RequestModuleInterface<IUserManagement>();
3294 try { client.SendKillObject(avatar.RegionHandle, new List<uint> { avatar.LocalId }); } 3282 // Don't save attachments for HG visitors, it
3295 catch (NullReferenceException) { } 3283 // messes up their inventory. When a HG visitor logs
3296 }); 3284 // out on a foreign grid, their attachments will be
3285 // reloaded in the state they were in when they left
3286 // the home grid. This is best anyway as the visited
3287 // grid may use an incompatible script engine.
3288 if (uMan == null || uMan.IsLocalGridUser(avatar.UUID))
3289 AttachmentsModule.SaveChangedAttachments(avatar, false);
3290 }
3291
3292 ForEachClient(
3293 delegate(IClientAPI client)
3294 {
3295 //We can safely ignore null reference exceptions. It means the avatar is dead and cleaned up anyway
3296 try { client.SendKillObject(avatar.RegionHandle, new List<uint> { avatar.LocalId }); }
3297 catch (NullReferenceException) { }
3298 });
3299 }
3297 3300
3298 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>(); 3301 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
3299 if (agentTransactions != null) 3302 if (agentTransactions != null)