From f9807884a425c2d91e8f2035993a0ca5e210eb43 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 25 Nov 2009 15:28:43 +0000
Subject: Add MIT/X11 licensed NDesk.Options (http://www.ndesk.org/Options) DLL
to aid command line parsing
---
OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Region/CoreModules/World')
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
index 181f4c6..98fdec3 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
@@ -26,9 +26,11 @@
*/
using System;
+using System.Collections.Generic;
using System.IO;
using System.Reflection;
using log4net;
+using NDesk.Options;
using Nini.Config;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
@@ -91,7 +93,13 @@ namespace OpenSim.Region.CoreModules.World.Archiver
///
public void HandleLoadOarConsoleCommand(string module, string[] cmdparams)
{
- if (cmdparams.Length > 2)
+ OptionSet options = new OptionSet() {};
+ List mainParams = options.Parse(cmdparams);
+
+ foreach (string param in mainParams)
+ m_log.DebugFormat("Found param [{0}]", param);
+
+ if (mainParams.Count > 2)
{
DearchiveRegion(cmdparams[2]);
}
--
cgit v1.1
From c18422ad3a09cfabd86eb86403a77a6c720980f0 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 25 Nov 2009 16:02:47 +0000
Subject: Implement oar merging An oar can now be merged with existing region
contents by using the --merge option For example, load oar --merge my.oar
Existing terrain, region settings and parcel data is left in place when an
oar is merged. See http://opensimulator.org/wiki/OpenSim_Archives#Usage for
more information
---
.../Region/CoreModules/World/Archiver/ArchiverModule.cs | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
(limited to 'OpenSim/Region/CoreModules/World')
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
index 98fdec3..27763bb 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
@@ -93,19 +93,23 @@ namespace OpenSim.Region.CoreModules.World.Archiver
///
public void HandleLoadOarConsoleCommand(string module, string[] cmdparams)
{
- OptionSet options = new OptionSet() {};
+ bool mergeOar = false;
+
+ OptionSet options = new OptionSet().Add("m|merge", delegate (string v) { mergeOar = v != null; });
List mainParams = options.Parse(cmdparams);
-
- foreach (string param in mainParams)
- m_log.DebugFormat("Found param [{0}]", param);
+
+// m_log.DebugFormat("MERGE OAR IS [{0}]", mergeOar);
+//
+// foreach (string param in mainParams)
+// m_log.DebugFormat("GOT PARAM [{0}]", param);
if (mainParams.Count > 2)
{
- DearchiveRegion(cmdparams[2]);
+ DearchiveRegion(mainParams[2], mergeOar, Guid.Empty);
}
else
{
- DearchiveRegion(DEFAULT_OAR_BACKUP_FILENAME);
+ DearchiveRegion(DEFAULT_OAR_BACKUP_FILENAME, mergeOar, Guid.Empty);
}
}
--
cgit v1.1
From 59caa68e08691d8fac221e2bd42c712d5bcf69aa Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 25 Nov 2009 17:49:38 +0000
Subject: minor: add doc to a few parcel methods
---
.../World/Archiver/ArchiveWriteRequestPreparation.cs | 10 ++++++++++
OpenSim/Region/CoreModules/World/Land/LandChannel.cs | 3 ++-
.../Region/CoreModules/World/Land/LandManagementModule.cs | 12 +++++++++++-
3 files changed, 23 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Region/CoreModules/World')
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
index f08d8ec..71bfe57 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
@@ -93,6 +93,16 @@ namespace OpenSim.Region.CoreModules.World.Archiver
List entities = m_scene.GetEntities();
List sceneObjects = new List();
+ /*
+ foreach (ILandObject lo in m_scene.LandChannel.AllParcels())
+ {
+ if (name == lo.LandData.Name)
+ {
+ // This is the parcel we want
+ }
+ }
+ */
+
// Filter entities so that we only have scene objects.
// FIXME: Would be nicer to have this as a proper list in SceneGraph, since lots of methods
// end up having to do this
diff --git a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
index 4ed23bb..81024db 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
@@ -105,7 +105,7 @@ namespace OpenSim.Region.CoreModules.World.Land
ILandObject obj = new LandObject(UUID.Zero, false, m_scene);
obj.LandData.Name = "NO LAND";
return obj;
- }
+ }
public List AllParcels()
{
@@ -154,6 +154,7 @@ namespace OpenSim.Region.CoreModules.World.Land
m_landManagementModule.UpdateLandObject(localID, data);
}
}
+
public void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient)
{
if (m_landManagementModule != null)
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 968f46a..9a2ef50 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -67,7 +67,14 @@ namespace OpenSim.Region.CoreModules.World.Land
private const int landArrayMax = ((int)((int)Constants.RegionSize / 4) >= 64) ? (int)((int)Constants.RegionSize / 4) : 64;
#pragma warning restore 0429
+ ///
+ /// Local land ids at specified region co-ordinates (region size / 4)
+ ///
private readonly int[,] m_landIDList = new int[landArrayMax, landArrayMax];
+
+ ///
+ /// Land objects keyed by local id
+ ///
private readonly Dictionary m_landList = new Dictionary();
private bool m_landPrimCountTainted;
@@ -570,6 +577,7 @@ namespace OpenSim.Region.CoreModules.World.Land
if (x_float > Constants.RegionSize || x_float <= 0 || y_float > Constants.RegionSize || y_float <= 0)
return null;
+
try
{
x = Convert.ToInt32(Math.Floor(Convert.ToDouble(x_float) / 4.0));
@@ -584,6 +592,7 @@ namespace OpenSim.Region.CoreModules.World.Land
{
return null;
}
+
lock (m_landList)
{
// Corner case. If an autoreturn happens during sim startup
@@ -603,6 +612,7 @@ namespace OpenSim.Region.CoreModules.World.Land
// they happen every time at border crossings
throw new Exception("Error: Parcel not found at point " + x + ", " + y);
}
+
lock (m_landIDList)
{
try
@@ -617,7 +627,7 @@ namespace OpenSim.Region.CoreModules.World.Land
return null;
}
}
- }
+ }
#endregion
--
cgit v1.1