When an oar is loaded, do not create a default parcel before loading the parcels from the OAR.

The region spanning parcel shouldn't exist in this situation.  If it does, when the land data is loaded it is repersisted with a local ID which comes after the ones loaded via the oar, which obliterates the oar loaded one.

Resaving the data we just loaded from the database is somewhat odd in itself (though this makes sense from the way that OAR loading was already using the same event).
This commit is contained in:
Justin Clark-Casey (justincc)
2011-01-27 20:29:06 +00:00
parent 42c0dbf49a
commit be3685b1a2
6 changed files with 25 additions and 15 deletions

View File

@@ -237,7 +237,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
}
if (!m_merge)
m_scene.LandChannel.Clear();
m_scene.LandChannel.Clear(false);
m_scene.EventManager.TriggerIncomingLandDataFromStorage(landData);
m_log.InfoFormat("[ARCHIVER]: Restored {0} parcels.", landData.Count);

View File

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

View File

@@ -298,13 +298,19 @@ namespace OpenSim.Region.CoreModules.World.Land
m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1;
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);
fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize));
fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
fullSimParcel.LandData.ClaimDate = Util.UnixTimeSinceEpoch();
AddLandObject(fullSimParcel);
return AddLandObject(fullSimParcel);
}
public List<ILandObject> AllParcels()
@@ -640,7 +646,7 @@ namespace OpenSim.Region.CoreModules.World.Land
/// <summary>
/// Clear the scene of all parcels
/// </summary>
public void Clear()
public void Clear(bool setupDefaultParcel)
{
lock (m_landList)
{
@@ -654,6 +660,9 @@ namespace OpenSim.Region.CoreModules.World.Land
}
ResetSimLandObjects();
if (setupDefaultParcel)
CreateDefaultParcel();
}
private void performFinalLandJoin(ILandObject master, ILandObject slave)
@@ -1321,7 +1330,6 @@ namespace OpenSim.Region.CoreModules.World.Land
}
}
void ClientOnParcelDeedToGroup(int parcelLocalID, UUID groupID, IClientAPI remote_client)
{
ILandObject land;
@@ -1337,10 +1345,8 @@ namespace OpenSim.Region.CoreModules.World.Land
{
land.DeedToGroup(groupID);
}
}
#region Land Object From Storage Functions
public void EventManagerOnIncomingLandDataFromStorage(List<LandData> data)
@@ -1375,6 +1381,7 @@ namespace OpenSim.Region.CoreModules.World.Land
public void EventManagerOnNoLandDataFromStorage()
{
ResetSimLandObjects();
CreateDefaultParcel();
}
#endregion
@@ -1646,7 +1653,7 @@ namespace OpenSim.Region.CoreModules.World.Land
protected void ClearCommand(Object[] args)
{
Clear();
Clear(true);
MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.RegionInfo.RegionName);
}