From 06d5989f4d44de2dfedbb3858f706940a56361ed Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 6 Jul 2011 09:59:05 +0200 Subject: Fix parcel prim count and max reporting. Viewer already multiplies. --- .../Region/ClientStack/Linden/UDP/LLClientView.cs | 5 ++++- .../Region/CoreModules/World/Land/LandObject.cs | 26 +++++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 6048518..ecf10e4 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -4589,7 +4589,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (landData.SimwideArea > 0) { - int simulatorCapacity = (int)(((float)landData.SimwideArea / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); + int simulatorCapacity = (int)((double)(landData.SimwideArea * m_scene.RegionInfo.ObjectCapacity) * m_scene.RegionInfo.RegionSettings.ObjectBonus) / 65536; + // Never report more than sim total capacity + if (simulatorCapacity > m_scene.RegionInfo.ObjectCapacity) + simulatorCapacity = m_scene.RegionInfo.ObjectCapacity; updateMessage.SimWideMaxPrims = simulatorCapacity; } else diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 2a6d362..950dff7 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -190,10 +190,26 @@ namespace OpenSim.Region.CoreModules.World.Land else { // Normal Calculations - 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! + int parcelMax = (int)((double)(LandData.Area + * m_scene.RegionInfo.ObjectCapacity) + * m_scene.RegionInfo.RegionSettings.ObjectBonus) + / 65536; + return parcelMax; + } + } + + private int GetParcelBasePrimCount() + { + if (overrideParcelMaxPrimCount != null) + { + return overrideParcelMaxPrimCount(this); + } + else + { + // Normal Calculations + int parcelMax = LandData.Area + * m_scene.RegionInfo.ObjectCapacity + / 65536; return parcelMax; } } @@ -245,7 +261,7 @@ namespace OpenSim.Region.CoreModules.World.Land remote_client.SendLandProperties(seq_id, snap_selection, request_result, this, (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, - GetParcelMaxPrimCount(), + GetParcelBasePrimCount(), GetSimulatorMaxPrimCount(), regionFlags); } -- cgit v1.1