aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs9
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandChannel.cs6
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs71
-rw-r--r--OpenSim/Region/Framework/Interfaces/ILandChannel.cs8
-rw-r--r--OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs5
-rw-r--r--OpenSim/Tests/Common/Mock/TestLandChannel.cs5
6 files changed, 83 insertions, 21 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index d948b82..29d0713 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -228,8 +228,17 @@ namespace OpenSim.Region.CoreModules.World.Archiver
228 LandData parcel = LandDataSerializer.Deserialize(serialisedParcel); 228 LandData parcel = LandDataSerializer.Deserialize(serialisedParcel);
229 if (!ResolveUserUuid(parcel.OwnerID)) 229 if (!ResolveUserUuid(parcel.OwnerID))
230 parcel.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; 230 parcel.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
231
232// m_log.DebugFormat(
233// "[ARCHIVER]: Adding parcel {0}, local id {1}, area {2}",
234// parcel.Name, parcel.LocalID, parcel.Area);
235
231 landData.Add(parcel); 236 landData.Add(parcel);
232 } 237 }
238
239 if (!m_merge)
240 m_scene.LandChannel.Clear(false);
241
233 m_scene.EventManager.TriggerIncomingLandDataFromStorage(landData); 242 m_scene.EventManager.TriggerIncomingLandDataFromStorage(landData);
234 m_log.InfoFormat("[ARCHIVER]: Restored {0} parcels.", landData.Count); 243 m_log.InfoFormat("[ARCHIVER]: Restored {0} parcels.", landData.Count);
235 244
diff --git a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
index 9e27ef0..7d990c2 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
@@ -116,6 +116,12 @@ namespace OpenSim.Region.CoreModules.World.Land
116 116
117 return new List<ILandObject>(); 117 return new List<ILandObject>();
118 } 118 }
119
120 public void Clear(bool setupDefaultParcel)
121 {
122 if (m_landManagementModule != null)
123 m_landManagementModule.Clear(setupDefaultParcel);
124 }
119 125
120 public List<ILandObject> ParcelsNearPoint(Vector3 position) 126 public List<ILandObject> ParcelsNearPoint(Vector3 position)
121 { 127 {
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index cb8c5de..a4e85d6 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -306,13 +306,19 @@ namespace OpenSim.Region.CoreModules.World.Land
306 m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1; 306 m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1;
307 m_landIDList.Initialize(); 307 m_landIDList.Initialize();
308 } 308 }
309 309 }
310
311 /// <summary>
312 /// Create a default parcel that spans the entire region and is owned by the estate owner.
313 /// </summary>
314 /// <returns>The parcel created.</returns>
315 protected ILandObject CreateDefaultParcel()
316 {
310 ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); 317 ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene);
311
312 fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); 318 fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize));
313 fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; 319 fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
314 fullSimParcel.LandData.ClaimDate = Util.UnixTimeSinceEpoch(); 320 fullSimParcel.LandData.ClaimDate = Util.UnixTimeSinceEpoch();
315 AddLandObject(fullSimParcel); 321 return AddLandObject(fullSimParcel);
316 } 322 }
317 323
318 public List<ILandObject> AllParcels() 324 public List<ILandObject> AllParcels()
@@ -586,15 +592,6 @@ namespace OpenSim.Region.CoreModules.World.Land
586 } 592 }
587 593
588 /// <summary> 594 /// <summary>
589 /// Creates a basic Parcel object without an owner (a zeroed key)
590 /// </summary>
591 /// <returns></returns>
592 public ILandObject CreateBaseLand()
593 {
594 return new LandObject(UUID.Zero, false, m_scene);
595 }
596
597 /// <summary>
598 /// Adds a land object to the stored list and adds them to the landIDList to what they own 595 /// Adds a land object to the stored list and adds them to the landIDList to what they own
599 /// </summary> 596 /// </summary>
600 /// <param name="new_land">The land object being added</param> 597 /// <param name="new_land">The land object being added</param>
@@ -653,6 +650,28 @@ namespace OpenSim.Region.CoreModules.World.Land
653 m_landList.Remove(local_id); 650 m_landList.Remove(local_id);
654 } 651 }
655 } 652 }
653
654 /// <summary>
655 /// Clear the scene of all parcels
656 /// </summary>
657 public void Clear(bool setupDefaultParcel)
658 {
659 lock (m_landList)
660 {
661 foreach (ILandObject lo in m_landList.Values)
662 {
663 //m_scene.SimulationDataService.RemoveLandObject(lo.LandData.GlobalID);
664 m_scene.EventManager.TriggerLandObjectRemoved(lo.LandData.GlobalID);
665 }
666
667 m_landList.Clear();
668 }
669
670 ResetSimLandObjects();
671
672 if (setupDefaultParcel)
673 CreateDefaultParcel();
674 }
656 675
657 private void performFinalLandJoin(ILandObject master, ILandObject slave) 676 private void performFinalLandJoin(ILandObject master, ILandObject slave)
658 { 677 {
@@ -1323,7 +1342,6 @@ namespace OpenSim.Region.CoreModules.World.Land
1323 } 1342 }
1324 } 1343 }
1325 1344
1326
1327 void ClientOnParcelDeedToGroup(int parcelLocalID, UUID groupID, IClientAPI remote_client) 1345 void ClientOnParcelDeedToGroup(int parcelLocalID, UUID groupID, IClientAPI remote_client)
1328 { 1346 {
1329 ILandObject land; 1347 ILandObject land;
@@ -1342,7 +1360,6 @@ namespace OpenSim.Region.CoreModules.World.Land
1342 EventManagerOnParcelPrimCountTainted(); 1360 EventManagerOnParcelPrimCountTainted();
1343 } 1361 }
1344 1362
1345
1346 #region Land Object From Storage Functions 1363 #region Land Object From Storage Functions
1347 1364
1348 public void EventManagerOnIncomingLandDataFromStorage(List<LandData> data) 1365 public void EventManagerOnIncomingLandDataFromStorage(List<LandData> data)
@@ -1390,6 +1407,7 @@ namespace OpenSim.Region.CoreModules.World.Land
1390 public void EventManagerOnNoLandDataFromStorage() 1407 public void EventManagerOnNoLandDataFromStorage()
1391 { 1408 {
1392 ResetSimLandObjects(); 1409 ResetSimLandObjects();
1410 CreateDefaultParcel();
1393 } 1411 }
1394 1412
1395 #endregion 1413 #endregion
@@ -1963,14 +1981,24 @@ namespace OpenSim.Region.CoreModules.World.Land
1963 1981
1964 protected void InstallInterfaces() 1982 protected void InstallInterfaces()
1965 { 1983 {
1966 Command showCommand = 1984 Command clearCommand
1967 new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowParcelsCommand, "Shows all parcels on the current region."); 1985 = new Command("clear", CommandIntentions.COMMAND_HAZARDOUS, ClearCommand, "Clears all the parcels from the region.");
1986 Command showCommand
1987 = new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowParcelsCommand, "Shows all parcels on the region.");
1968 1988
1989 m_commander.RegisterCommand("clear", clearCommand);
1969 m_commander.RegisterCommand("show", showCommand); 1990 m_commander.RegisterCommand("show", showCommand);
1970 1991
1971 // Add this to our scene so scripts can call these functions 1992 // Add this to our scene so scripts can call these functions
1972 m_scene.RegisterModuleCommander(m_commander); 1993 m_scene.RegisterModuleCommander(m_commander);
1973 } 1994 }
1995
1996 protected void ClearCommand(Object[] args)
1997 {
1998 Clear(true);
1999
2000 MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.RegionInfo.RegionName);
2001 }
1974 2002
1975 protected void ShowParcelsCommand(Object[] args) 2003 protected void ShowParcelsCommand(Object[] args)
1976 { 2004 {
@@ -1978,8 +2006,9 @@ namespace OpenSim.Region.CoreModules.World.Land
1978 2006
1979 report.AppendFormat("Land information for {0}\n", m_scene.RegionInfo.RegionName); 2007 report.AppendFormat("Land information for {0}\n", m_scene.RegionInfo.RegionName);
1980 report.AppendFormat( 2008 report.AppendFormat(
1981 "{0,-20} {1,-9} {2,-18} {3,-18} {4,-20}\n", 2009 "{0,-20} {1,-10} {2,-9} {3,-18} {4,-18} {5,-20}\n",
1982 "Parcel Name", 2010 "Parcel Name",
2011 "Local ID",
1983 "Area", 2012 "Area",
1984 "Starts", 2013 "Starts",
1985 "Ends", 2014 "Ends",
@@ -1992,12 +2021,12 @@ namespace OpenSim.Region.CoreModules.World.Land
1992 LandData ld = lo.LandData; 2021 LandData ld = lo.LandData;
1993 2022
1994 report.AppendFormat( 2023 report.AppendFormat(
1995 "{0,-20} {1,-9} {2,-18} {3,-18} {4,-20}\n", 2024 "{0,-20} {1,-10} {2,-9} {3,-18} {4,-18} {5,-20}\n",
1996 ld.Name, ld.Area, lo.StartPoint, lo.EndPoint, m_userManager.GetUserName(ld.OwnerID)); 2025 ld.Name, ld.LocalID, ld.Area, lo.StartPoint, lo.EndPoint, m_userManager.GetUserName(ld.OwnerID));
1997 } 2026 }
1998 } 2027 }
1999 2028
2000 MainConsole.Instance.Output(report.ToString()); 2029 MainConsole.Instance.Output(report.ToString());
2001 } 2030 }
2002 } 2031 }
2003} 2032}
diff --git a/OpenSim/Region/Framework/Interfaces/ILandChannel.cs b/OpenSim/Region/Framework/Interfaces/ILandChannel.cs
index 20b8ab6..30bae16 100644
--- a/OpenSim/Region/Framework/Interfaces/ILandChannel.cs
+++ b/OpenSim/Region/Framework/Interfaces/ILandChannel.cs
@@ -69,6 +69,14 @@ namespace OpenSim.Region.Framework.Interfaces
69 /// <returns></returns> 69 /// <returns></returns>
70 ILandObject GetLandObject(int localID); 70 ILandObject GetLandObject(int localID);
71 71
72 /// <summary>
73 /// Clear the land channel of all parcels.
74 /// </summary>
75 /// <param name="setupDefaultParcel">
76 /// If true, set up a default parcel covering the whole region owned by the estate owner.
77 /// </param>
78 void Clear(bool setupDefaultParcel);
79
72 bool IsLandPrimCountTainted(); 80 bool IsLandPrimCountTainted();
73 bool IsForcefulBansAllowed(); 81 bool IsForcefulBansAllowed();
74 void UpdateLandObject(int localID, LandData data); 82 void UpdateLandObject(int localID, LandData data);
diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs
index be5411a..98e5453 100644
--- a/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs
+++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs
@@ -62,6 +62,11 @@ public class RegionCombinerLargeLandChannel : ILandChannel
62 { 62 {
63 return RootRegionLandChannel.AllParcels(); 63 return RootRegionLandChannel.AllParcels();
64 } 64 }
65
66 public void Clear(bool setupDefaultParcel)
67 {
68 RootRegionLandChannel.Clear(setupDefaultParcel);
69 }
65 70
66 public ILandObject GetLandObject(int x, int y) 71 public ILandObject GetLandObject(int x, int y)
67 { 72 {
diff --git a/OpenSim/Tests/Common/Mock/TestLandChannel.cs b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
index 159764c..c3134b3 100644
--- a/OpenSim/Tests/Common/Mock/TestLandChannel.cs
+++ b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
@@ -55,6 +55,11 @@ namespace OpenSim.Tests.Common.Mock
55 { 55 {
56 return new List<ILandObject>(); 56 return new List<ILandObject>();
57 } 57 }
58
59 public void Clear(bool setupDefaultParcel)
60 {
61 // Intentionally blank since we don't save any parcel data in the test channel
62 }
58 63
59 protected ILandObject GetNoLand() 64 protected ILandObject GetNoLand()
60 { 65 {