From 419fc9427ef14eea443ec6f57501c6915c2de3b9 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Mon, 18 Apr 2011 20:03:53 +0100
Subject: Provide a configuration setting to control whether multiple taken
objects are coalesced to inventory
This is the CoalesceMultipleObjectsToInventory setting in [Inventory] in OpenSimDefaults.ini
Default is true.
---
.../InventoryAccess/InventoryAccessModule.cs | 59 ++++++++++++++++------
1 file changed, 44 insertions(+), 15 deletions(-)
(limited to 'OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs')
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index a716326..e030ba1 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -64,7 +64,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
return m_UserManagement;
}
}
-
+
+ public bool CoalesceMultipleObjectsToInventory { get; set; }
#region INonSharedRegionModule
@@ -87,10 +88,28 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
if (name == Name)
{
m_Enabled = true;
- m_log.InfoFormat("[INVENTORY ACCESS MODULE]: {0} enabled.", Name);
+
+ InitialiseCommon(source);
+
+ m_log.InfoFormat("[INVENTORY ACCESS MODULE]: {0} enabled.", Name);
}
}
}
+
+ ///
+ /// Common module config for both this and descendant classes.
+ ///
+ ///
+ protected virtual void InitialiseCommon(IConfigSource source)
+ {
+ IConfig inventoryConfig = source.Configs["Inventory"];
+
+ if (inventoryConfig != null)
+ CoalesceMultipleObjectsToInventory
+ = inventoryConfig.GetBoolean("CoalesceMultipleObjectsToInventory", true);
+ else
+ CoalesceMultipleObjectsToInventory = true;
+ }
public virtual void PostInitialise()
{
@@ -206,20 +225,30 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID,
List objectGroups, IClientAPI remoteClient)
{
- UUID ret = UUID.Zero;
-
- // The following code groups the SOG's by owner. No objects
- // belonging to different people can be coalesced, for obvious
- // reasons.
- Dictionary> deletes =
- new Dictionary>();
-
- foreach (SceneObjectGroup g in objectGroups)
+ Dictionary> deletes = new Dictionary>();
+
+ if (CoalesceMultipleObjectsToInventory)
{
- if (!deletes.ContainsKey(g.OwnerID))
- deletes[g.OwnerID] = new List();
-
- deletes[g.OwnerID].Add(g);
+ // The following code groups the SOG's by owner. No objects
+ // belonging to different people can be coalesced, for obvious
+ // reasons.
+ foreach (SceneObjectGroup g in objectGroups)
+ {
+ if (!deletes.ContainsKey(g.OwnerID))
+ deletes[g.OwnerID] = new List();
+
+ deletes[g.OwnerID].Add(g);
+ }
+ }
+ else
+ {
+ // If we don't want to coalesce then put every object in its own bundle.
+ foreach (SceneObjectGroup g in objectGroups)
+ {
+ List bundle = new List();
+ bundle.Add(g);
+ deletes[g.UUID] = bundle;
+ }
}
// This is method scoped and will be returned. It will be the
--
cgit v1.1