From cf040ab9ad7ff20b491b505b099a4dd9d92e36ba Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 26 Aug 2020 15:18:33 +0100 Subject: [PATCH] replace the use of a dead end client api. We need one, but never one based on massive dictionary searchs of find basic functions (enought what c# does) and def not based on reflection --- .../HGInventoryAccessModule.cs | 79 ++++++++----------- 1 file changed, 31 insertions(+), 48 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index b57e17705f..ee67ddc618 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs @@ -460,28 +460,20 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess private void ProcessInventoryForComingHome(IClientAPI client) { + if(!client.IsActive) + return; m_log.DebugFormat("[HG INVENTORY ACCESS MODULE]: Restoring root folder for local user {0}", client.Name); - if (client is IClientCore) + InventoryFolderBase root = m_Scene.InventoryService.GetRootFolder(client.AgentId); + InventoryCollection content = m_Scene.InventoryService.GetFolderContent(client.AgentId, root.ID); + + List keep = new List(); + + foreach (InventoryFolderBase f in content.Folders) { - IClientCore core = (IClientCore)client; - IClientInventory inv; - - if (core.TryGet(out inv)) - { - InventoryFolderBase root = m_Scene.InventoryService.GetRootFolder(client.AgentId); - InventoryCollection content = m_Scene.InventoryService.GetFolderContent(client.AgentId, root.ID); - - List keep = new List(); - - foreach (InventoryFolderBase f in content.Folders) - { - if (f.Name != "My Suitcase" && f.Name != "Current Outfit") - keep.Add(f); - } - - inv.SendBulkUpdateInventory(keep.ToArray(), content.Items.ToArray()); - } + if (f.Name != "My Suitcase" && f.Name != "Current Outfit") + keep.Add(f); } + client.SendBulkUpdateInventory(keep.ToArray(), content.Items.ToArray()); } private void ProcessInventoryForArriving(IClientAPI client) @@ -495,39 +487,32 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess private void ProcessInventoryForHypergriding(IClientAPI client) { - if (client is IClientCore) + if(!client.IsActive) + return; + + InventoryFolderBase root = m_Scene.InventoryService.GetRootFolder(client.AgentId); + if (root != null) { - IClientCore core = (IClientCore)client; - IClientInventory inv; + m_log.DebugFormat("[HG INVENTORY ACCESS MODULE]: Changing root inventory for user {0}", client.Name); + InventoryCollection content = m_Scene.InventoryService.GetFolderContent(client.AgentId, root.ID); - if (core.TryGet(out inv)) + List keep = new List(); + + foreach (InventoryFolderBase f in content.Folders) { - InventoryFolderBase root = m_Scene.InventoryService.GetRootFolder(client.AgentId); - if (root != null) + if (f.Name != "My Suitcase" && f.Name != "Current Outfit") { - m_log.DebugFormat("[HG INVENTORY ACCESS MODULE]: Changing root inventory for user {0}", client.Name); - InventoryCollection content = m_Scene.InventoryService.GetFolderContent(client.AgentId, root.ID); - - List keep = new List(); - - foreach (InventoryFolderBase f in content.Folders) - { - if (f.Name != "My Suitcase" && f.Name != "Current Outfit") - { - f.Name = f.Name + " (Unavailable)"; - keep.Add(f); - } - } - - // items directly under the root folder - foreach (InventoryItemBase it in content.Items) - it.Name = it.Name + " (Unavailable)"; ; - - // Send the new names - inv.SendBulkUpdateInventory(keep.ToArray(), content.Items.ToArray()); - + f.Name = f.Name + " (Unavailable)"; + keep.Add(f); } } + + // items directly under the root folder + foreach (InventoryItemBase it in content.Items) + it.Name = it.Name + " (Unavailable)"; ; + + // Send the new names + client.SendBulkUpdateInventory(keep.ToArray(), content.Items.ToArray()); } } @@ -566,8 +551,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess return true; } - - #endregion } }