diff options
Thank you, Goetz, for a patch to fix prim count display in cut regions.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandObject.cs | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index b90e307..46c15ed 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -66,6 +66,13 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
66 | 66 | ||
67 | #region ILandObject Members | 67 | #region ILandObject Members |
68 | 68 | ||
69 | public int GetPrimsFree() | ||
70 | { | ||
71 | m_scene.EventManager.TriggerParcelPrimCountUpdate(); | ||
72 | int free = GetSimulatorMaxPrimCount(this) - m_landData.SimwidePrims; | ||
73 | return free; | ||
74 | } | ||
75 | |||
69 | public LandData LandData | 76 | public LandData LandData |
70 | { | 77 | { |
71 | get { return m_landData; } | 78 | get { return m_landData; } |
@@ -141,7 +148,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
141 | /// <returns>Returns true if the piece of land contains the specified point</returns> | 148 | /// <returns>Returns true if the piece of land contains the specified point</returns> |
142 | public bool ContainsPoint(int x, int y) | 149 | public bool ContainsPoint(int x, int y) |
143 | { | 150 | { |
144 | if (x >= 0 && y >= 0 && x <= Constants.RegionSize && y <= Constants.RegionSize) | 151 | if (x >= 0 && y >= 0 && x < Constants.RegionSize && y < Constants.RegionSize) |
145 | { | 152 | { |
146 | return (LandBitmap[x / 4, y / 4] == true); | 153 | return (LandBitmap[x / 4, y / 4] == true); |
147 | } | 154 | } |
@@ -183,7 +190,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
183 | else | 190 | else |
184 | { | 191 | { |
185 | // Normal Calculations | 192 | // Normal Calculations |
186 | return (int)Math.Round(((float)LandData.Area / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); | 193 | int parcelMax = (int)(((float)LandData.Area / 65536.0f) |
194 | * (float)m_scene.RegionInfo.ObjectCapacity | ||
195 | * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); | ||
196 | // TODO: The calculation of ObjectBonus should be refactored. It does still not work in the same manner as SL! | ||
197 | return parcelMax; | ||
187 | } | 198 | } |
188 | } | 199 | } |
189 | public int GetSimulatorMaxPrimCount(ILandObject thisObject) | 200 | public int GetSimulatorMaxPrimCount(ILandObject thisObject) |
@@ -195,7 +206,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
195 | else | 206 | else |
196 | { | 207 | { |
197 | //Normal Calculations | 208 | //Normal Calculations |
198 | return m_scene.RegionInfo.ObjectCapacity; | 209 | int simMax = (int)(((float)LandData.SimwideArea / 65536.0f) |
210 | * (float)m_scene.RegionInfo.ObjectCapacity); | ||
211 | return simMax; | ||
199 | } | 212 | } |
200 | } | 213 | } |
201 | #endregion | 214 | #endregion |
@@ -369,7 +382,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
369 | newData.AuthBuyerID = UUID.Zero; | 382 | newData.AuthBuyerID = UUID.Zero; |
370 | newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory); | 383 | newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory); |
371 | m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData); | 384 | m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData); |
372 | 385 | m_scene.EventManager.TriggerParcelPrimCountUpdate(); | |
373 | SendLandUpdateToAvatarsOverMe(true); | 386 | SendLandUpdateToAvatarsOverMe(true); |
374 | } | 387 | } |
375 | 388 | ||
@@ -384,7 +397,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
384 | newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory); | 397 | newData.Flags &= ~(uint) (ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory); |
385 | 398 | ||
386 | m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData); | 399 | m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData); |
387 | 400 | m_scene.EventManager.TriggerParcelPrimCountUpdate(); | |
388 | SendLandUpdateToAvatarsOverMe(true); | 401 | SendLandUpdateToAvatarsOverMe(true); |
389 | } | 402 | } |
390 | 403 | ||
@@ -450,6 +463,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
450 | 463 | ||
451 | public void SendLandUpdateToClient(bool snap_selection, IClientAPI remote_client) | 464 | public void SendLandUpdateToClient(bool snap_selection, IClientAPI remote_client) |
452 | { | 465 | { |
466 | m_scene.EventManager.TriggerParcelPrimCountUpdate(); | ||
453 | SendLandProperties(0, snap_selection, 0, remote_client); | 467 | SendLandProperties(0, snap_selection, 0, remote_client); |
454 | } | 468 | } |
455 | 469 | ||