diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs index 5d2052464f..d41691a054 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs @@ -314,73 +314,76 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer } } - // XXX: This code was placed here to try and accomdate RLV which moves given folders named #RLV/~ - // to a folder called name in #RLV. However, this approach may not be ultimately correct - from analysis - // of Firestorm 4.2.2 on sending an InventoryOffered instead of TaskInventoryOffered (as was previously - // done), the viewer itself would appear to move and rename the folder, rather than the simulator doing it here. - else if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted) - { - UUID destinationFolderID = UUID.Zero; - - if (im.binaryBucket != null && im.binaryBucket.Length >= 16) - { - destinationFolderID = new UUID(im.binaryBucket, 0); - } - - if (destinationFolderID != UUID.Zero) - { - InventoryFolderBase destinationFolder = new InventoryFolderBase(destinationFolderID, client.AgentId); - if (destinationFolder == null) - { - m_log.WarnFormat( - "[INVENTORY TRANSFER]: TaskInventoryAccepted message from {0} in {1} specified folder {2} which does not exist", - client.Name, scene.Name, destinationFolderID); - - return; - } - - IInventoryService invService = scene.InventoryService; - - UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip - - InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId); - item = invService.GetItem(item); - InventoryFolderBase folder = null; - UUID? previousParentFolderID = null; - - if (item != null) // It's an item - { - previousParentFolderID = item.Folder; - item.Folder = destinationFolderID; - - invService.DeleteItems(item.Owner, new List() { item.ID }); - scene.AddInventoryItem(client, item); - } - else - { - folder = new InventoryFolderBase(inventoryID, client.AgentId); - folder = invService.GetFolder(folder); - - if (folder != null) // It's a folder - { - previousParentFolderID = folder.ParentID; - folder.ParentID = destinationFolderID; - invService.MoveFolder(folder); - } - } - - // Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code). - if (previousParentFolderID != null) - { - InventoryFolderBase previousParentFolder - = new InventoryFolderBase((UUID)previousParentFolderID, client.AgentId); - previousParentFolder = invService.GetFolder(previousParentFolder); - scene.SendInventoryUpdate(client, previousParentFolder, true, true); - - scene.SendInventoryUpdate(client, destinationFolder, true, true); - } - } - } + // Disabled for now as it looks like http://opensimulator.org/mantis/view.php?id=6311 was fixed by fixes + // to inventory folder versioning allowing the viewer to move the received folder itself as happens on the + // LL grid. Doing it again server-side then wrongly does a second create and move +// // XXX: This code was placed here to try and accomdate RLV which moves given folders named #RLV/~ +// // to a folder called name in #RLV. However, this approach may not be ultimately correct - from analysis +// // of Firestorm 4.2.2 on sending an InventoryOffered instead of TaskInventoryOffered (as was previously +// // done), the viewer itself would appear to move and rename the folder, rather than the simulator doing it here. +// else if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted) +// { +// UUID destinationFolderID = UUID.Zero; +// +// if (im.binaryBucket != null && im.binaryBucket.Length >= 16) +// { +// destinationFolderID = new UUID(im.binaryBucket, 0); +// } +// +// if (destinationFolderID != UUID.Zero) +// { +// InventoryFolderBase destinationFolder = new InventoryFolderBase(destinationFolderID, client.AgentId); +// if (destinationFolder == null) +// { +// m_log.WarnFormat( +// "[INVENTORY TRANSFER]: TaskInventoryAccepted message from {0} in {1} specified folder {2} which does not exist", +// client.Name, scene.Name, destinationFolderID); +// +// return; +// } +// +// IInventoryService invService = scene.InventoryService; +// +// UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip +// +// InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId); +// item = invService.GetItem(item); +// InventoryFolderBase folder = null; +// UUID? previousParentFolderID = null; +// +// if (item != null) // It's an item +// { +// previousParentFolderID = item.Folder; +// item.Folder = destinationFolderID; +// +// invService.DeleteItems(item.Owner, new List() { item.ID }); +// scene.AddInventoryItem(client, item); +// } +// else +// { +// folder = new InventoryFolderBase(inventoryID, client.AgentId); +// folder = invService.GetFolder(folder); +// +// if (folder != null) // It's a folder +// { +// previousParentFolderID = folder.ParentID; +// folder.ParentID = destinationFolderID; +// invService.MoveFolder(folder); +// } +// } +// +// // Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code). +// if (previousParentFolderID != null) +// { +// InventoryFolderBase previousParentFolder +// = new InventoryFolderBase((UUID)previousParentFolderID, client.AgentId); +// previousParentFolder = invService.GetFolder(previousParentFolder); +// scene.SendInventoryUpdate(client, previousParentFolder, true, true); +// +// scene.SendInventoryUpdate(client, destinationFolder, true, true); +// } +// } +// } else if ( im.dialog == (byte)InstantMessageDialog.InventoryDeclined || im.dialog == (byte)InstantMessageDialog.TaskInventoryDeclined) diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs b/OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs index 4f18b53311..ec94420288 100644 --- a/OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs +++ b/OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs @@ -31,6 +31,7 @@ using System.Reflection; using log4net; using Nini.Config; using OpenMetaverse; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Region.CoreModules.World.WorldMap; using OpenSim.Region.Framework.Interfaces; @@ -39,6 +40,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; namespace OpenSim.Region.CoreModules.Hypergrid { + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "HGWorldMapModule")] public class HGWorldMapModule : WorldMapModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml index fee1d5f0f5..e39358bb1c 100644 --- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml +++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml @@ -8,15 +8,6 @@ - - - - - - - - - @@ -33,8 +24,6 @@ - - @@ -84,9 +73,5 @@ - - - - diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs index abf3713671..1be6386971 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs @@ -32,6 +32,7 @@ using System.Reflection; using log4net; using NDesk.Options; using Nini.Config; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Framework.Console; using OpenSim.Region.Framework.Interfaces; @@ -42,6 +43,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver /// /// This module loads and saves OpenSimulator region archives /// + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "ArchiverModule")] public class ArchiverModule : INonSharedRegionModule, IRegionArchiverModule { private static readonly ILog m_log = diff --git a/OpenSim/Region/CoreModules/World/Land/DwellModule.cs b/OpenSim/Region/CoreModules/World/Land/DwellModule.cs index d1f05a714a..bd221550cc 100644 --- a/OpenSim/Region/CoreModules/World/Land/DwellModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/DwellModule.cs @@ -36,6 +36,7 @@ using Nini.Config; using OpenMetaverse; using OpenMetaverse.StructuredData; using OpenMetaverse.Messages.Linden; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Framework.Capabilities; using OpenSim.Framework.Console; @@ -51,6 +52,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; namespace OpenSim.Region.CoreModules.World.Land { + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "DwellModule")] public class DwellModule : IDwellModule, INonSharedRegionModule { private Scene m_scene; diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index b5e2bc3085..1193057cbd 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -36,6 +36,7 @@ using Nini.Config; using OpenMetaverse; using OpenMetaverse.StructuredData; using OpenMetaverse.Messages.Linden; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Framework.Capabilities; using OpenSim.Framework.Console; @@ -60,6 +61,7 @@ namespace OpenSim.Region.CoreModules.World.Land public byte RegionAccess; } + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LandManagementModule")] public class LandManagementModule : INonSharedRegionModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index cbb3abe460..55b822762a 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -34,6 +34,7 @@ using log4net; using Nini.Config; using OpenMetaverse; using OpenSim.Framework; +using Mono.Addins; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Services.Interfaces; @@ -49,6 +50,7 @@ namespace OpenSim.Region.CoreModules.World.Land public Dictionary Users = new Dictionary (); } + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "PrimCountModule")] public class PrimCountModule : IPrimCountModule, INonSharedRegionModule { // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs b/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs index 0e861a1509..e0247d94b3 100644 --- a/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs +++ b/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs @@ -32,6 +32,7 @@ using System.Reflection; using log4net; using Nini.Config; +using Mono.Addins; using OpenMetaverse; using OpenSim.Region.CoreModules.Framework.InterfaceCommander; @@ -41,6 +42,7 @@ using OpenSim.Region.Framework.Scenes.Serialization; namespace OpenSim.Region.CoreModules.World.Serialiser { + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SerialiserModule")] public class SerialiserModule : ISharedRegionModule, IRegionSerialiserModule { private static readonly ILog m_log = diff --git a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs index d99567cd4b..33aabe4705 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs @@ -33,6 +33,7 @@ using System.Net; using log4net; using Nini.Config; using OpenMetaverse; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Region.CoreModules.Framework.InterfaceCommander; using OpenSim.Region.CoreModules.World.Terrain.FileLoaders; @@ -43,6 +44,7 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.World.Terrain { + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "TerrainModule")] public class TerrainModule : INonSharedRegionModule, ICommandableModule, ITerrainModule { #region StandardTerrainEffects enum diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs index 31f8aecf0e..7ef44dbe2c 100644 --- a/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs @@ -35,6 +35,7 @@ using CSJ2K; using Nini.Config; using log4net; using Rednettle.Warp3D; +using Mono.Addins; using OpenMetaverse; using OpenMetaverse.Imaging; using OpenMetaverse.Rendering; @@ -49,6 +50,7 @@ using WarpRenderer = global::Warp3D.Warp3D; namespace OpenSim.Region.CoreModules.World.Warp3DMap { + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "Warp3DImageModule")] public class Warp3DImageModule : IMapImageGenerator, INonSharedRegionModule { private static readonly UUID TEXTURE_METADATA_MAGIC = new UUID("802dc0e0-f080-4931-8b57-d1be8611c4f3"); diff --git a/OpenSim/Region/CoreModules/World/Wind/Plugins/ConfigurableWind.cs b/OpenSim/Region/CoreModules/World/Wind/Plugins/ConfigurableWind.cs index 9d47e19439..6af40507f3 100644 --- a/OpenSim/Region/CoreModules/World/Wind/Plugins/ConfigurableWind.cs +++ b/OpenSim/Region/CoreModules/World/Wind/Plugins/ConfigurableWind.cs @@ -31,12 +31,14 @@ using System.Reflection; using log4net; using OpenMetaverse; +using Mono.Addins; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.CoreModules.World.Wind; namespace OpenSim.Region.CoreModules.World.Wind.Plugins { + [Extension(Path = "/OpenSim/WindModule", NodeName = "WindModel", Id = "ConfigurableWind")] class ConfigurableWind : Mono.Addins.TypeExtensionNode, IWindModelPlugin { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/Region/CoreModules/World/Wind/Plugins/SimpleRandomWind.cs b/OpenSim/Region/CoreModules/World/Wind/Plugins/SimpleRandomWind.cs index 071e20bb3b..fcb0c10e1b 100644 --- a/OpenSim/Region/CoreModules/World/Wind/Plugins/SimpleRandomWind.cs +++ b/OpenSim/Region/CoreModules/World/Wind/Plugins/SimpleRandomWind.cs @@ -29,11 +29,13 @@ using System; using System.Collections.Generic; using OpenMetaverse; +using Mono.Addins; using OpenSim.Region.Framework.Interfaces; namespace OpenSim.Region.CoreModules.World.Wind.Plugins { + [Extension(Path = "/OpenSim/WindModule", NodeName = "WindModel", Id = "SimpleRandomWind")] class SimpleRandomWind : Mono.Addins.TypeExtensionNode, IWindModelPlugin { private Vector2[] m_windSpeeds = new Vector2[16 * 16]; diff --git a/OpenSim/Region/CoreModules/World/Wind/WindModule.cs b/OpenSim/Region/CoreModules/World/Wind/WindModule.cs index 0186a41d01..fd8e2b4b02 100644 --- a/OpenSim/Region/CoreModules/World/Wind/WindModule.cs +++ b/OpenSim/Region/CoreModules/World/Wind/WindModule.cs @@ -40,6 +40,7 @@ using OpenSim.Region.CoreModules.World.Wind; namespace OpenSim.Region.CoreModules { + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "WindModule")] public class WindModule : IWindModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs index dc0c1109a4..0c2227979d 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs @@ -30,6 +30,7 @@ using System.Reflection; using log4net; using Nini.Config; using OpenMetaverse; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; @@ -38,6 +39,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; namespace OpenSim.Region.CoreModules.World.WorldMap { + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "MapSearchModule")] public class MapSearchModule : ISharedRegionModule { private static readonly ILog m_log = diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index 26b406e35a..2184a59343 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -40,6 +40,7 @@ using Nini.Config; using OpenMetaverse; using OpenMetaverse.Imaging; using OpenMetaverse.StructuredData; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Framework.Capabilities; using OpenSim.Framework.Monitoring; @@ -55,6 +56,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; namespace OpenSim.Region.CoreModules.World.WorldMap { + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "WorldMapModule")] public class WorldMapModule : INonSharedRegionModule, IWorldMapModule { private static readonly ILog m_log = diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs index 939fc33f70..ea3e3487f0 100644 --- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs +++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs @@ -350,6 +350,10 @@ namespace OpenSim.Tests.Common /// /// /// If called directly, then all the modules must be shared modules. + /// + /// We are emulating here the normal calls made to setup region modules + /// (Initialise(), PostInitialise(), AddRegion, RegionLoaded()). + /// TODO: Need to reuse normal runtime module code. /// /// ///