Merge branch 'master' into careminster-presence-refactor
commit
3f200da878
|
@ -697,6 +697,8 @@ namespace OpenSim.Framework
|
||||||
landData._mediaLoop = _mediaLoop;
|
landData._mediaLoop = _mediaLoop;
|
||||||
landData._obscureMusic = _obscureMusic;
|
landData._obscureMusic = _obscureMusic;
|
||||||
landData._obscureMedia = _obscureMedia;
|
landData._obscureMedia = _obscureMedia;
|
||||||
|
landData._simwideArea = _simwideArea;
|
||||||
|
landData._simwidePrims = _simwidePrims;
|
||||||
|
|
||||||
landData._parcelAccessList.Clear();
|
landData._parcelAccessList.Clear();
|
||||||
foreach (ParcelManager.ParcelAccessEntry entry in _parcelAccessList)
|
foreach (ParcelManager.ParcelAccessEntry entry in _parcelAccessList)
|
||||||
|
|
|
@ -4398,7 +4398,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
updateMessage.SequenceID = sequence_id;
|
updateMessage.SequenceID = sequence_id;
|
||||||
if (landData.SimwideArea > 0)
|
if (landData.SimwideArea > 0)
|
||||||
{
|
{
|
||||||
updateMessage.SimWideMaxPrims = parcelObjectCapacity;
|
int simulatorCapacity = (int)(((float)landData.SimwideArea / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus);
|
||||||
|
updateMessage.SimWideMaxPrims = simulatorCapacity;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -217,31 +217,20 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||||
m_scene.DeleteAllSceneObjects();
|
m_scene.DeleteAllSceneObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to retain the original creator/owner/lastowner if their uuid is present on this grid
|
LoadParcels(serialisedParcels);
|
||||||
// otherwise, use the master avatar uuid instead
|
LoadObjects(serialisedSceneObjects);
|
||||||
|
|
||||||
// Reload serialized parcels
|
m_log.InfoFormat("[ARCHIVER]: Successfully loaded archive");
|
||||||
m_log.InfoFormat("[ARCHIVER]: Loading {0} parcels. Please wait.", serialisedParcels.Count);
|
|
||||||
List<LandData> landData = new List<LandData>();
|
|
||||||
foreach (string serialisedParcel in serialisedParcels)
|
|
||||||
{
|
|
||||||
LandData parcel = LandDataSerializer.Deserialize(serialisedParcel);
|
|
||||||
if (!ResolveUserUuid(parcel.OwnerID))
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_merge)
|
|
||||||
m_scene.LandChannel.Clear(false);
|
|
||||||
|
|
||||||
m_scene.EventManager.TriggerIncomingLandDataFromStorage(landData);
|
|
||||||
m_log.InfoFormat("[ARCHIVER]: Restored {0} parcels.", landData.Count);
|
|
||||||
|
|
||||||
|
m_scene.EventManager.TriggerOarFileLoaded(m_requestId, m_errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Load serialized scene objects.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="serialisedSceneObjects"></param>
|
||||||
|
protected void LoadObjects(List<string> serialisedSceneObjects)
|
||||||
|
{
|
||||||
// Reload serialized prims
|
// Reload serialized prims
|
||||||
m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects. Please wait.", serialisedSceneObjects.Count);
|
m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects. Please wait.", serialisedSceneObjects.Count);
|
||||||
|
|
||||||
|
@ -271,6 +260,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||||
// to the same scene (when this is possible).
|
// to the same scene (when this is possible).
|
||||||
sceneObject.ResetIDs();
|
sceneObject.ResetIDs();
|
||||||
|
|
||||||
|
// Try to retain the original creator/owner/lastowner if their uuid is present on this grid
|
||||||
|
// or creator data is present. Otherwise, use the estate owner instead.
|
||||||
foreach (SceneObjectPart part in sceneObject.Parts)
|
foreach (SceneObjectPart part in sceneObject.Parts)
|
||||||
{
|
{
|
||||||
if (part.CreatorData == null || part.CreatorData == string.Empty)
|
if (part.CreatorData == null || part.CreatorData == string.Empty)
|
||||||
|
@ -345,11 +336,36 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||||
int ignoredObjects = serialisedSceneObjects.Count - sceneObjectsLoadedCount;
|
int ignoredObjects = serialisedSceneObjects.Count - sceneObjectsLoadedCount;
|
||||||
|
|
||||||
if (ignoredObjects > 0)
|
if (ignoredObjects > 0)
|
||||||
m_log.WarnFormat("[ARCHIVER]: Ignored {0} scene objects that already existed in the scene", ignoredObjects);
|
m_log.WarnFormat("[ARCHIVER]: Ignored {0} scene objects that already existed in the scene", ignoredObjects);
|
||||||
|
}
|
||||||
m_log.InfoFormat("[ARCHIVER]: Successfully loaded archive");
|
|
||||||
|
/// <summary>
|
||||||
m_scene.EventManager.TriggerOarFileLoaded(m_requestId, m_errorMessage);
|
/// Load serialized parcels.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="serialisedParcels"></param>
|
||||||
|
protected void LoadParcels(List<string> serialisedParcels)
|
||||||
|
{
|
||||||
|
// Reload serialized parcels
|
||||||
|
m_log.InfoFormat("[ARCHIVER]: Loading {0} parcels. Please wait.", serialisedParcels.Count);
|
||||||
|
List<LandData> landData = new List<LandData>();
|
||||||
|
foreach (string serialisedParcel in serialisedParcels)
|
||||||
|
{
|
||||||
|
LandData parcel = LandDataSerializer.Deserialize(serialisedParcel);
|
||||||
|
if (!ResolveUserUuid(parcel.OwnerID))
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_merge)
|
||||||
|
m_scene.LandChannel.Clear(false);
|
||||||
|
|
||||||
|
m_scene.EventManager.TriggerIncomingLandDataFromStorage(landData);
|
||||||
|
m_log.InfoFormat("[ARCHIVER]: Restored {0} parcels.", landData.Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -759,10 +759,10 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (m_landList.ContainsKey(m_landIDList[x / 4, y / 4]))
|
//if (m_landList.ContainsKey(m_landIDList[x / 4, y / 4]))
|
||||||
return m_landList[m_landIDList[x / 4, y / 4]];
|
return m_landList[m_landIDList[x / 4, y / 4]];
|
||||||
else
|
//else
|
||||||
return null;
|
// return null;
|
||||||
}
|
}
|
||||||
catch (IndexOutOfRangeException)
|
catch (IndexOutOfRangeException)
|
||||||
{
|
{
|
||||||
|
@ -1995,9 +1995,21 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
protected void ClearCommand(Object[] args)
|
protected void ClearCommand(Object[] args)
|
||||||
{
|
{
|
||||||
Clear(true);
|
string response = MainConsole.Instance.CmdPrompt(
|
||||||
|
string.Format(
|
||||||
|
"Are you sure that you want to clear all land parcels from {0} (y or n)",
|
||||||
|
m_scene.RegionInfo.RegionName),
|
||||||
|
"n");
|
||||||
|
|
||||||
MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.RegionInfo.RegionName);
|
if (response.ToLower() == "y")
|
||||||
|
{
|
||||||
|
Clear(true);
|
||||||
|
MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.RegionInfo.RegionName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MainConsole.Instance.OutputFormat("Aborting clear of all parcels from {0}", m_scene.RegionInfo.RegionName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ShowParcelsCommand(Object[] args)
|
protected void ShowParcelsCommand(Object[] args)
|
||||||
|
|
|
@ -66,6 +66,13 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
#region ILandObject Members
|
#region ILandObject Members
|
||||||
|
|
||||||
|
public int GetPrimsFree()
|
||||||
|
{
|
||||||
|
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||||
|
int free = GetSimulatorMaxPrimCount(this) - m_landData.SimwidePrims;
|
||||||
|
return free;
|
||||||
|
}
|
||||||
|
|
||||||
public LandData LandData
|
public LandData LandData
|
||||||
{
|
{
|
||||||
get { return m_landData; }
|
get { return m_landData; }
|
||||||
|
@ -141,7 +148,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
/// <returns>Returns true if the piece of land contains the specified point</returns>
|
/// <returns>Returns true if the piece of land contains the specified point</returns>
|
||||||
public bool ContainsPoint(int x, int y)
|
public bool ContainsPoint(int x, int y)
|
||||||
{
|
{
|
||||||
if (x >= 0 && y >= 0 && x <= Constants.RegionSize && y <= Constants.RegionSize)
|
if (x >= 0 && y >= 0 && x < Constants.RegionSize && y < Constants.RegionSize)
|
||||||
{
|
{
|
||||||
return (LandBitmap[x / 4, y / 4] == true);
|
return (LandBitmap[x / 4, y / 4] == true);
|
||||||
}
|
}
|
||||||
|
@ -183,7 +190,11 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Normal Calculations
|
// Normal Calculations
|
||||||
return (int)Math.Round(((float)LandData.Area / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus);
|
int parcelMax = (int)(((float)LandData.Area / 65536.0f)
|
||||||
|
* (float)m_scene.RegionInfo.ObjectCapacity
|
||||||
|
* (float)m_scene.RegionInfo.RegionSettings.ObjectBonus);
|
||||||
|
// TODO: The calculation of ObjectBonus should be refactored. It does still not work in the same manner as SL!
|
||||||
|
return parcelMax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public int GetSimulatorMaxPrimCount(ILandObject thisObject)
|
public int GetSimulatorMaxPrimCount(ILandObject thisObject)
|
||||||
|
@ -195,7 +206,9 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Normal Calculations
|
//Normal Calculations
|
||||||
return m_scene.RegionInfo.ObjectCapacity;
|
int simMax = (int)(((float)LandData.SimwideArea / 65536.0f)
|
||||||
|
* (float)m_scene.RegionInfo.ObjectCapacity);
|
||||||
|
return simMax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -369,7 +382,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
newData.AuthBuyerID = UUID.Zero;
|
newData.AuthBuyerID = UUID.Zero;
|
||||||
newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory);
|
newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory);
|
||||||
m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData);
|
m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData);
|
||||||
|
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||||
SendLandUpdateToAvatarsOverMe(true);
|
SendLandUpdateToAvatarsOverMe(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -384,7 +397,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory);
|
newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory);
|
||||||
|
|
||||||
m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData);
|
m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData);
|
||||||
|
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||||
SendLandUpdateToAvatarsOverMe(true);
|
SendLandUpdateToAvatarsOverMe(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,6 +498,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
public void SendLandUpdateToClient(bool snap_selection, IClientAPI remote_client)
|
public void SendLandUpdateToClient(bool snap_selection, IClientAPI remote_client)
|
||||||
{
|
{
|
||||||
|
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||||
SendLandProperties(0, snap_selection, 0, remote_client);
|
SendLandProperties(0, snap_selection, 0, remote_client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
{
|
{
|
||||||
int GetParcelMaxPrimCount(ILandObject thisObject);
|
int GetParcelMaxPrimCount(ILandObject thisObject);
|
||||||
int GetSimulatorMaxPrimCount(ILandObject thisObject);
|
int GetSimulatorMaxPrimCount(ILandObject thisObject);
|
||||||
|
int GetPrimsFree();
|
||||||
|
|
||||||
LandData LandData { get; set; }
|
LandData LandData { get; set; }
|
||||||
bool[,] LandBitmap { get; set; }
|
bool[,] LandBitmap { get; set; }
|
||||||
|
|
Loading…
Reference in New Issue