From e5cdba1cb49346308fb0e9699c3a6386b487d97b Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Tue, 19 Aug 2008 15:09:35 +0000 Subject: Fix region crossings and access to inventory after changing regions within the same simulator --- .../Modules/Avatar/Inventory/InventoryModule.cs | 28 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/Environment/Modules') diff --git a/OpenSim/Region/Environment/Modules/Avatar/Inventory/InventoryModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Inventory/InventoryModule.cs index 03bbaf3..5f0d83d 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/Inventory/InventoryModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/Inventory/InventoryModule.cs @@ -49,6 +49,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Inventory private IDictionary m_pendingOffers = new Dictionary(); private List m_Scenelist = new List(); + private Dictionary m_AgentRegions = new Dictionary(); #region IRegionModule Members @@ -61,6 +62,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Inventory scene.RegisterModuleInterface(this); scene.EventManager.OnNewClient += OnNewClient; + scene.EventManager.OnClientClosed += ClientLoggedOut; } } @@ -223,8 +225,28 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Inventory } } -// public void TestFunction() -// { -// } + public void SetRootAgentScene(LLUUID agentID, Scene scene) + { + m_AgentRegions[agentID] = scene; + } + + public bool NeedSceneCacheClear(LLUUID agentID, Scene scene) + { + if (!m_AgentRegions.ContainsKey(agentID)) + return true; + + if(m_AgentRegions[agentID] == scene) + { + m_AgentRegions.Remove(agentID); + return true; + } + return false; + } + + public void ClientLoggedOut(LLUUID agentID) + { + if (m_AgentRegions.ContainsKey(agentID)) + m_AgentRegions.Remove(agentID); + } } } -- cgit v1.1