diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index a609b778f9..77b94408d8 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -268,6 +268,7 @@ namespace OpenSim m_console.Commands.AddCommand("Archiving", false, "load oar", "load oar [--merge] [--skip-assets]" + " [--force-terrain] [--force-parcels]" + + " [--no-objects]" + " [--rotation degrees] [--rotation-center \"\"]" + " [--displacement \"\"]" + " []", @@ -279,6 +280,7 @@ namespace OpenSim + "--force-parcels forces the loading of parcels from the oar (undoes suppression done by --merge)" + Environment.NewLine + "--rotation specified rotation to be applied to the oar. Specified in degrees." + Environment.NewLine + "--rotation-center Location (relative to original OAR) to apply rotation. Default is <128,128,0>" + Environment.NewLine + + "--no-objects suppresses the addition of any objects (good for loading only the terrain)" + Environment.NewLine + "The path can be either a filesystem location or a URI." + " If this is not given then the command looks for an OAR named region.oar in the current directory.", LoadOar); diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs index 23008a0d23..0c4b79b948 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs @@ -130,6 +130,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver /// protected Vector3 m_rotationCenter = new Vector3(Constants.RegionSize / 2f, Constants.RegionSize / 2f, 0f); + protected bool m_noObjects = false; + /// /// Used to cache lookups for valid uuids. /// @@ -179,6 +181,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver m_merge = options.ContainsKey("merge"); m_forceTerrain = options.ContainsKey("force-terrain"); m_forceParcels = options.ContainsKey("force-parcels"); + m_noObjects = options.ContainsKey("no-objects"); m_skipAssets = options.ContainsKey("skipAssets"); m_requestId = requestId; m_displacement = options.ContainsKey("displacement") ? (Vector3)options["displacement"] : Vector3.Zero; @@ -261,7 +264,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver // Process the file - if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH)) + if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH) && !m_noObjects) { sceneContext.SerialisedSceneObjects.Add(Encoding.UTF8.GetString(data)); } diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs index a89fe1c860..2b2da6f2de 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs @@ -106,6 +106,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver bool skipAssets = false; bool forceTerrain = false; bool forceParcels = false; + bool noObjects = false; Vector3 displacement = new Vector3(0f, 0f, 0f); float rotation = 0f; Vector3 rotationCenter = new Vector3(Constants.RegionSize / 2f, Constants.RegionSize / 2f, 0); @@ -117,6 +118,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver options.Add("forceterrain", delegate (string v) { forceTerrain = (v != null); }); // downward compatibility options.Add("force-parcels", delegate (string v) { forceParcels = (v != null); }); options.Add("forceparcels", delegate (string v) { forceParcels = (v != null); }); // downward compatibility + options.Add("no-objects", delegate (string v) { noObjects = (v != null); }); options.Add("displacement=", delegate (string v) { try { @@ -178,6 +180,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver if (skipAssets) archiveOptions.Add("skipAssets", null); if (forceTerrain) archiveOptions.Add("force-terrain", null); if (forceParcels) archiveOptions.Add("force-parcels", null); + if (noObjects) archiveOptions.Add("no-objects", null); archiveOptions.Add("displacement", displacement); archiveOptions.Add("rotation", rotation); archiveOptions.Add("rotation-center", rotationCenter);