Merge branch 'master' into careminster-presence-refactor

avinationmerge
Melanie 2011-01-27 20:54:02 +00:00
commit 3435816541
6 changed files with 83 additions and 21 deletions

View File

@ -228,8 +228,17 @@ namespace OpenSim.Region.CoreModules.World.Archiver
LandData parcel = LandDataSerializer.Deserialize(serialisedParcel); LandData parcel = LandDataSerializer.Deserialize(serialisedParcel);
if (!ResolveUserUuid(parcel.OwnerID)) if (!ResolveUserUuid(parcel.OwnerID))
parcel.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; parcel.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
// m_log.DebugFormat(
// "[ARCHIVER]: Adding parcel {0}, local id {1}, area {2}",
// parcel.Name, parcel.LocalID, parcel.Area);
landData.Add(parcel); landData.Add(parcel);
} }
if (!m_merge)
m_scene.LandChannel.Clear(false);
m_scene.EventManager.TriggerIncomingLandDataFromStorage(landData); m_scene.EventManager.TriggerIncomingLandDataFromStorage(landData);
m_log.InfoFormat("[ARCHIVER]: Restored {0} parcels.", landData.Count); m_log.InfoFormat("[ARCHIVER]: Restored {0} parcels.", landData.Count);

View File

@ -116,6 +116,12 @@ namespace OpenSim.Region.CoreModules.World.Land
return new List<ILandObject>(); return new List<ILandObject>();
} }
public void Clear(bool setupDefaultParcel)
{
if (m_landManagementModule != null)
m_landManagementModule.Clear(setupDefaultParcel);
}
public List<ILandObject> ParcelsNearPoint(Vector3 position) public List<ILandObject> ParcelsNearPoint(Vector3 position)
{ {

View File

@ -306,13 +306,19 @@ namespace OpenSim.Region.CoreModules.World.Land
m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1; m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1;
m_landIDList.Initialize(); m_landIDList.Initialize();
} }
}
/// <summary>
/// Create a default parcel that spans the entire region and is owned by the estate owner.
/// </summary>
/// <returns>The parcel created.</returns>
protected ILandObject CreateDefaultParcel()
{
ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene);
fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize));
fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
fullSimParcel.LandData.ClaimDate = Util.UnixTimeSinceEpoch(); fullSimParcel.LandData.ClaimDate = Util.UnixTimeSinceEpoch();
AddLandObject(fullSimParcel); return AddLandObject(fullSimParcel);
} }
public List<ILandObject> AllParcels() public List<ILandObject> AllParcels()
@ -585,15 +591,6 @@ namespace OpenSim.Region.CoreModules.World.Land
} }
} }
/// <summary>
/// Creates a basic Parcel object without an owner (a zeroed key)
/// </summary>
/// <returns></returns>
public ILandObject CreateBaseLand()
{
return new LandObject(UUID.Zero, false, m_scene);
}
/// <summary> /// <summary>
/// Adds a land object to the stored list and adds them to the landIDList to what they own /// Adds a land object to the stored list and adds them to the landIDList to what they own
/// </summary> /// </summary>
@ -653,6 +650,28 @@ namespace OpenSim.Region.CoreModules.World.Land
m_landList.Remove(local_id); m_landList.Remove(local_id);
} }
} }
/// <summary>
/// Clear the scene of all parcels
/// </summary>
public void Clear(bool setupDefaultParcel)
{
lock (m_landList)
{
foreach (ILandObject lo in m_landList.Values)
{
//m_scene.SimulationDataService.RemoveLandObject(lo.LandData.GlobalID);
m_scene.EventManager.TriggerLandObjectRemoved(lo.LandData.GlobalID);
}
m_landList.Clear();
}
ResetSimLandObjects();
if (setupDefaultParcel)
CreateDefaultParcel();
}
private void performFinalLandJoin(ILandObject master, ILandObject slave) private void performFinalLandJoin(ILandObject master, ILandObject slave)
{ {
@ -1323,7 +1342,6 @@ namespace OpenSim.Region.CoreModules.World.Land
} }
} }
void ClientOnParcelDeedToGroup(int parcelLocalID, UUID groupID, IClientAPI remote_client) void ClientOnParcelDeedToGroup(int parcelLocalID, UUID groupID, IClientAPI remote_client)
{ {
ILandObject land; ILandObject land;
@ -1342,7 +1360,6 @@ namespace OpenSim.Region.CoreModules.World.Land
EventManagerOnParcelPrimCountTainted(); EventManagerOnParcelPrimCountTainted();
} }
#region Land Object From Storage Functions #region Land Object From Storage Functions
public void EventManagerOnIncomingLandDataFromStorage(List<LandData> data) public void EventManagerOnIncomingLandDataFromStorage(List<LandData> data)
@ -1390,6 +1407,7 @@ namespace OpenSim.Region.CoreModules.World.Land
public void EventManagerOnNoLandDataFromStorage() public void EventManagerOnNoLandDataFromStorage()
{ {
ResetSimLandObjects(); ResetSimLandObjects();
CreateDefaultParcel();
} }
#endregion #endregion
@ -1963,14 +1981,24 @@ namespace OpenSim.Region.CoreModules.World.Land
protected void InstallInterfaces() protected void InstallInterfaces()
{ {
Command showCommand = Command clearCommand
new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowParcelsCommand, "Shows all parcels on the current region."); = new Command("clear", CommandIntentions.COMMAND_HAZARDOUS, ClearCommand, "Clears all the parcels from the region.");
Command showCommand
= new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowParcelsCommand, "Shows all parcels on the region.");
m_commander.RegisterCommand("clear", clearCommand);
m_commander.RegisterCommand("show", showCommand); m_commander.RegisterCommand("show", showCommand);
// Add this to our scene so scripts can call these functions // Add this to our scene so scripts can call these functions
m_scene.RegisterModuleCommander(m_commander); m_scene.RegisterModuleCommander(m_commander);
} }
protected void ClearCommand(Object[] args)
{
Clear(true);
MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.RegionInfo.RegionName);
}
protected void ShowParcelsCommand(Object[] args) protected void ShowParcelsCommand(Object[] args)
{ {
@ -1978,8 +2006,9 @@ namespace OpenSim.Region.CoreModules.World.Land
report.AppendFormat("Land information for {0}\n", m_scene.RegionInfo.RegionName); report.AppendFormat("Land information for {0}\n", m_scene.RegionInfo.RegionName);
report.AppendFormat( report.AppendFormat(
"{0,-20} {1,-9} {2,-18} {3,-18} {4,-20}\n", "{0,-20} {1,-10} {2,-9} {3,-18} {4,-18} {5,-20}\n",
"Parcel Name", "Parcel Name",
"Local ID",
"Area", "Area",
"Starts", "Starts",
"Ends", "Ends",
@ -1992,12 +2021,12 @@ namespace OpenSim.Region.CoreModules.World.Land
LandData ld = lo.LandData; LandData ld = lo.LandData;
report.AppendFormat( report.AppendFormat(
"{0,-20} {1,-9} {2,-18} {3,-18} {4,-20}\n", "{0,-20} {1,-10} {2,-9} {3,-18} {4,-18} {5,-20}\n",
ld.Name, ld.Area, lo.StartPoint, lo.EndPoint, m_userManager.GetUserName(ld.OwnerID)); ld.Name, ld.LocalID, ld.Area, lo.StartPoint, lo.EndPoint, m_userManager.GetUserName(ld.OwnerID));
} }
} }
MainConsole.Instance.Output(report.ToString()); MainConsole.Instance.Output(report.ToString());
} }
} }
} }

View File

@ -69,6 +69,14 @@ namespace OpenSim.Region.Framework.Interfaces
/// <returns></returns> /// <returns></returns>
ILandObject GetLandObject(int localID); ILandObject GetLandObject(int localID);
/// <summary>
/// Clear the land channel of all parcels.
/// </summary>
/// <param name="setupDefaultParcel">
/// If true, set up a default parcel covering the whole region owned by the estate owner.
/// </param>
void Clear(bool setupDefaultParcel);
bool IsLandPrimCountTainted(); bool IsLandPrimCountTainted();
bool IsForcefulBansAllowed(); bool IsForcefulBansAllowed();
void UpdateLandObject(int localID, LandData data); void UpdateLandObject(int localID, LandData data);

View File

@ -62,6 +62,11 @@ public class RegionCombinerLargeLandChannel : ILandChannel
{ {
return RootRegionLandChannel.AllParcels(); return RootRegionLandChannel.AllParcels();
} }
public void Clear(bool setupDefaultParcel)
{
RootRegionLandChannel.Clear(setupDefaultParcel);
}
public ILandObject GetLandObject(int x, int y) public ILandObject GetLandObject(int x, int y)
{ {

View File

@ -55,6 +55,11 @@ namespace OpenSim.Tests.Common.Mock
{ {
return new List<ILandObject>(); return new List<ILandObject>();
} }
public void Clear(bool setupDefaultParcel)
{
// Intentionally blank since we don't save any parcel data in the test channel
}
protected ILandObject GetNoLand() protected ILandObject GetNoLand()
{ {