diff options
18 files changed, 179 insertions, 59 deletions
diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs index 1d93382..93c6c98 100644 --- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs +++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs | |||
@@ -1252,7 +1252,7 @@ namespace OpenSim.Client.MXP.ClientStack | |||
1252 | // Need to translate to MXP somehow | 1252 | // Need to translate to MXP somehow |
1253 | } | 1253 | } |
1254 | 1254 | ||
1255 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | 1255 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) |
1256 | { | 1256 | { |
1257 | // Need to translate to MXP somehow | 1257 | // Need to translate to MXP somehow |
1258 | } | 1258 | } |
diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs index f2b58d3..fc27f01 100644 --- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs +++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs | |||
@@ -799,7 +799,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack | |||
799 | throw new System.NotImplementedException(); | 799 | throw new System.NotImplementedException(); |
800 | } | 800 | } |
801 | 801 | ||
802 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | 802 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) |
803 | { | 803 | { |
804 | throw new System.NotImplementedException(); | 804 | throw new System.NotImplementedException(); |
805 | } | 805 | } |
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index a6be157..5bf0b7b 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -1143,7 +1143,17 @@ namespace OpenSim.Framework | |||
1143 | void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, | 1143 | void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, |
1144 | uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner); | 1144 | uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner); |
1145 | 1145 | ||
1146 | void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, | 1146 | /// <summary> |
1147 | /// Send land properties to the client. | ||
1148 | /// </summary> | ||
1149 | /// <param name="sequence_id"></param> | ||
1150 | /// <param name="snap_selection"></param> | ||
1151 | /// <param name="request_result"></param> | ||
1152 | /// <param name="lo"></param></param> | ||
1153 | /// <param name="parcelObjectCapacity">/param> | ||
1154 | /// <param name="simObjectCapacity"></param> | ||
1155 | /// <param name="regionFlags"></param> | ||
1156 | void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, | ||
1147 | float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, | 1157 | float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, |
1148 | uint regionFlags); | 1158 | uint regionFlags); |
1149 | 1159 | ||
diff --git a/OpenSim/Region/Framework/Interfaces/ILandChannel.cs b/OpenSim/Framework/ILandChannel.cs index 30bae16..30bae16 100644 --- a/OpenSim/Region/Framework/Interfaces/ILandChannel.cs +++ b/OpenSim/Framework/ILandChannel.cs | |||
diff --git a/OpenSim/Region/Framework/Interfaces/ILandObject.cs b/OpenSim/Framework/ILandObject.cs index 9c0abde..931e24a 100644 --- a/OpenSim/Region/Framework/Interfaces/ILandObject.cs +++ b/OpenSim/Framework/ILandObject.cs | |||
@@ -27,10 +27,8 @@ | |||
27 | 27 | ||
28 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
29 | using OpenMetaverse; | 29 | using OpenMetaverse; |
30 | using OpenSim.Framework; | ||
31 | using OpenSim.Region.Framework.Scenes; | ||
32 | 30 | ||
33 | namespace OpenSim.Region.Framework.Interfaces | 31 | namespace OpenSim.Framework |
34 | { | 32 | { |
35 | public delegate int overrideParcelMaxPrimCountDelegate(ILandObject obj); | 33 | public delegate int overrideParcelMaxPrimCountDelegate(ILandObject obj); |
36 | public delegate int overrideSimulatorMaxPrimCountDelegate(ILandObject obj); | 34 | public delegate int overrideSimulatorMaxPrimCountDelegate(ILandObject obj); |
@@ -90,11 +88,8 @@ namespace OpenSim.Region.Framework.Interfaces | |||
90 | bool[,] MergeLandBitmaps(bool[,] bitmap_base, bool[,] bitmap_add); | 88 | bool[,] MergeLandBitmaps(bool[,] bitmap_base, bool[,] bitmap_add); |
91 | void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client); | 89 | void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client); |
92 | void SendLandObjectOwners(IClientAPI remote_client); | 90 | void SendLandObjectOwners(IClientAPI remote_client); |
93 | void ReturnObject(SceneObjectGroup obj); | ||
94 | void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client); | 91 | void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client); |
95 | void ResetLandPrimCounts(); | 92 | void ResetLandPrimCounts(); |
96 | void AddPrimToCount(SceneObjectGroup obj); | ||
97 | void RemovePrimFromCount(SceneObjectGroup obj); | ||
98 | void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area); | 93 | void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area); |
99 | 94 | ||
100 | void DeedToGroup(UUID groupID); | 95 | void DeedToGroup(UUID groupID); |
diff --git a/OpenSim/Framework/IPrimCounts.cs b/OpenSim/Framework/IPrimCounts.cs new file mode 100644 index 0000000..7d362c5 --- /dev/null +++ b/OpenSim/Framework/IPrimCounts.cs | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenMetaverse; | ||
29 | |||
30 | namespace OpenSim.Framework | ||
31 | { | ||
32 | public interface IPrimCounts | ||
33 | { | ||
34 | int Owner { get; } | ||
35 | int Group { get; } | ||
36 | int Others { get; } | ||
37 | int Simulator { get; } | ||
38 | IUserPrimCounts Users { get; } | ||
39 | } | ||
40 | |||
41 | public interface IUserPrimCounts | ||
42 | { | ||
43 | int this[UUID agentID] { get; } | ||
44 | } | ||
45 | } \ No newline at end of file | ||
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 2c6795f..0b6b04d 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -4272,8 +4272,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4272 | OutPacket(packet, ThrottleOutPacketType.Task); | 4272 | OutPacket(packet, ThrottleOutPacketType.Task); |
4273 | } | 4273 | } |
4274 | 4274 | ||
4275 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | 4275 | public void SendLandProperties( |
4276 | int sequence_id, bool snap_selection, int request_result, ILandObject lo, | ||
4277 | float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||
4276 | { | 4278 | { |
4279 | m_log.DebugFormat("[LLCLIENTVIEW]: Sending land properties for {0} to {1}", lo.LandData.GlobalID, Name); | ||
4280 | |||
4281 | LandData landData = lo.LandData; | ||
4282 | |||
4277 | ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage(); | 4283 | ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage(); |
4278 | 4284 | ||
4279 | updateMessage.AABBMax = landData.AABBMax; | 4285 | updateMessage.AABBMax = landData.AABBMax; |
@@ -4281,15 +4287,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4281 | updateMessage.Area = landData.Area; | 4287 | updateMessage.Area = landData.Area; |
4282 | updateMessage.AuctionID = landData.AuctionID; | 4288 | updateMessage.AuctionID = landData.AuctionID; |
4283 | updateMessage.AuthBuyerID = landData.AuthBuyerID; | 4289 | updateMessage.AuthBuyerID = landData.AuthBuyerID; |
4284 | |||
4285 | updateMessage.Bitmap = landData.Bitmap; | 4290 | updateMessage.Bitmap = landData.Bitmap; |
4286 | |||
4287 | updateMessage.Desc = landData.Description; | 4291 | updateMessage.Desc = landData.Description; |
4288 | updateMessage.Category = landData.Category; | 4292 | updateMessage.Category = landData.Category; |
4289 | updateMessage.ClaimDate = Util.ToDateTime(landData.ClaimDate); | 4293 | updateMessage.ClaimDate = Util.ToDateTime(landData.ClaimDate); |
4290 | updateMessage.ClaimPrice = landData.ClaimPrice; | 4294 | updateMessage.ClaimPrice = landData.ClaimPrice; |
4291 | updateMessage.GroupID = landData.GroupID; | 4295 | updateMessage.GroupID = landData.GroupID; |
4292 | updateMessage.GroupPrims = landData.GroupPrims; | ||
4293 | updateMessage.IsGroupOwned = landData.IsGroupOwned; | 4296 | updateMessage.IsGroupOwned = landData.IsGroupOwned; |
4294 | updateMessage.LandingType = (LandingType) landData.LandingType; | 4297 | updateMessage.LandingType = (LandingType) landData.LandingType; |
4295 | updateMessage.LocalID = landData.LocalID; | 4298 | updateMessage.LocalID = landData.LocalID; |
@@ -4310,9 +4313,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4310 | updateMessage.Name = landData.Name; | 4313 | updateMessage.Name = landData.Name; |
4311 | updateMessage.OtherCleanTime = landData.OtherCleanTime; | 4314 | updateMessage.OtherCleanTime = landData.OtherCleanTime; |
4312 | updateMessage.OtherCount = 0; //TODO: Unimplemented | 4315 | updateMessage.OtherCount = 0; //TODO: Unimplemented |
4313 | updateMessage.OtherPrims = landData.OtherPrims; | 4316 | updateMessage.OwnerID = landData.OwnerID; |
4314 | updateMessage.OwnerID = landData.OwnerID; | ||
4315 | updateMessage.OwnerPrims = landData.OwnerPrims; | ||
4316 | updateMessage.ParcelFlags = (ParcelFlags) landData.Flags; | 4317 | updateMessage.ParcelFlags = (ParcelFlags) landData.Flags; |
4317 | updateMessage.ParcelPrimBonus = simObjectBonusFactor; | 4318 | updateMessage.ParcelPrimBonus = simObjectBonusFactor; |
4318 | updateMessage.PassHours = landData.PassHours; | 4319 | updateMessage.PassHours = landData.PassHours; |
@@ -4327,10 +4328,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4327 | 4328 | ||
4328 | updateMessage.RentPrice = 0; | 4329 | updateMessage.RentPrice = 0; |
4329 | updateMessage.RequestResult = (ParcelResult) request_result; | 4330 | updateMessage.RequestResult = (ParcelResult) request_result; |
4330 | updateMessage.SalePrice = landData.SalePrice; | 4331 | updateMessage.SalePrice = landData.SalePrice; |
4331 | updateMessage.SelectedPrims = landData.SelectedPrims; | ||
4332 | updateMessage.SelfCount = 0; //TODO: Unimplemented | 4332 | updateMessage.SelfCount = 0; //TODO: Unimplemented |
4333 | updateMessage.SequenceID = sequence_id; | 4333 | updateMessage.SequenceID = sequence_id; |
4334 | |||
4334 | if (landData.SimwideArea > 0) | 4335 | if (landData.SimwideArea > 0) |
4335 | { | 4336 | { |
4336 | int simulatorCapacity = (int)(((float)landData.SimwideArea / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); | 4337 | int simulatorCapacity = (int)(((float)landData.SimwideArea / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); |
@@ -4340,12 +4341,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4340 | { | 4341 | { |
4341 | updateMessage.SimWideMaxPrims = 0; | 4342 | updateMessage.SimWideMaxPrims = 0; |
4342 | } | 4343 | } |
4343 | updateMessage.SimWideTotalPrims = landData.SimwidePrims; | 4344 | |
4344 | updateMessage.SnapSelection = snap_selection; | 4345 | updateMessage.SnapSelection = snap_selection; |
4345 | updateMessage.SnapshotID = landData.SnapshotID; | 4346 | updateMessage.SnapshotID = landData.SnapshotID; |
4346 | updateMessage.Status = (ParcelStatus) landData.Status; | 4347 | updateMessage.Status = (ParcelStatus) landData.Status; |
4347 | updateMessage.TotalPrims = landData.OwnerPrims + landData.GroupPrims + landData.OtherPrims + | ||
4348 | landData.SelectedPrims; | ||
4349 | updateMessage.UserLocation = landData.UserLocation; | 4348 | updateMessage.UserLocation = landData.UserLocation; |
4350 | updateMessage.UserLookAt = landData.UserLookAt; | 4349 | updateMessage.UserLookAt = landData.UserLookAt; |
4351 | 4350 | ||
@@ -4356,6 +4355,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4356 | updateMessage.MediaLoop = landData.MediaLoop; | 4355 | updateMessage.MediaLoop = landData.MediaLoop; |
4357 | updateMessage.ObscureMusic = landData.ObscureMusic; | 4356 | updateMessage.ObscureMusic = landData.ObscureMusic; |
4358 | updateMessage.ObscureMedia = landData.ObscureMedia; | 4357 | updateMessage.ObscureMedia = landData.ObscureMedia; |
4358 | |||
4359 | IPrimCounts pc = lo.PrimCounts; | ||
4360 | updateMessage.OwnerPrims = pc.Owner; | ||
4361 | updateMessage.GroupPrims = pc.Group; | ||
4362 | updateMessage.OtherPrims = pc.Others; | ||
4363 | updateMessage.SimWideTotalPrims = pc.Simulator; | ||
4364 | |||
4365 | // FIXME: Need to do selected prims once this is reimplemented. | ||
4366 | updateMessage.TotalPrims = pc.Owner + pc.Group + pc.Others; | ||
4367 | |||
4368 | // TODO: Need to transfer selected prims to new prim count structure. | ||
4369 | updateMessage.SelectedPrims = landData.SelectedPrims; | ||
4359 | 4370 | ||
4360 | try | 4371 | try |
4361 | { | 4372 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs index a5fcb49..0babeb5 100644 --- a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using Nini.Config; | 30 | using Nini.Config; |
31 | using OpenSim.Framework; | ||
31 | using OpenSim.Region.Framework.Interfaces; | 32 | using OpenSim.Region.Framework.Interfaces; |
32 | using OpenSim.Region.Framework.Scenes; | 33 | using OpenSim.Region.Framework.Scenes; |
33 | using OpenMetaverse; | 34 | using OpenMetaverse; |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index d0727d9..52e3718 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -805,7 +805,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
805 | ILandObject landUnderPrim = GetLandObject(position.X, position.Y); | 805 | ILandObject landUnderPrim = GetLandObject(position.X, position.Y); |
806 | if (landUnderPrim != null) | 806 | if (landUnderPrim != null) |
807 | { | 807 | { |
808 | landUnderPrim.AddPrimToCount(obj); | 808 | ((LandObject)landUnderPrim).AddPrimToCount(obj); |
809 | } | 809 | } |
810 | } | 810 | } |
811 | 811 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 749bb3d..e7bdb19 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -243,7 +243,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
243 | } | 243 | } |
244 | 244 | ||
245 | remote_client.SendLandProperties(seq_id, | 245 | remote_client.SendLandProperties(seq_id, |
246 | snap_selection, request_result, LandData, | 246 | snap_selection, request_result, this, |
247 | (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, | 247 | (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, |
248 | GetParcelMaxPrimCount(this), | 248 | GetParcelMaxPrimCount(this), |
249 | GetSimulatorMaxPrimCount(this), regionFlags); | 249 | GetSimulatorMaxPrimCount(this), regionFlags); |
diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index 9fd347e..72115a8 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs | |||
@@ -51,8 +51,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
51 | 51 | ||
52 | public class PrimCountModule : IPrimCountModule, INonSharedRegionModule | 52 | public class PrimCountModule : IPrimCountModule, INonSharedRegionModule |
53 | { | 53 | { |
54 | // private static readonly ILog m_log = | 54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
55 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
56 | 55 | ||
57 | private Scene m_Scene; | 56 | private Scene m_Scene; |
58 | private Dictionary<UUID, PrimCounts> m_PrimCounts = | 57 | private Dictionary<UUID, PrimCounts> m_PrimCounts = |
@@ -123,6 +122,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
123 | { | 122 | { |
124 | if (!m_Tainted) | 123 | if (!m_Tainted) |
125 | AddObject(obj); | 124 | AddObject(obj); |
125 | else | ||
126 | m_log.DebugFormat( | ||
127 | "[PRIM COUNT MODULE]: Ignoring OnParcelPrimCountAdd() for {0} on {1} since count is tainted", | ||
128 | obj.Name, m_Scene.RegionInfo.RegionName); | ||
129 | |||
126 | } | 130 | } |
127 | } | 131 | } |
128 | 132 | ||
@@ -133,11 +137,18 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
133 | { | 137 | { |
134 | if (!m_Tainted) | 138 | if (!m_Tainted) |
135 | RemoveObject(obj); | 139 | RemoveObject(obj); |
140 | else | ||
141 | m_log.DebugFormat( | ||
142 | "[PRIM COUNT MODULE]: Ignoring OnObjectBeingRemovedFromScene() for {0} on {1} since count is tainted", | ||
143 | obj.Name, m_Scene.RegionInfo.RegionName); | ||
136 | } | 144 | } |
137 | } | 145 | } |
138 | 146 | ||
139 | private void OnParcelPrimCountTainted() | 147 | private void OnParcelPrimCountTainted() |
140 | { | 148 | { |
149 | m_log.DebugFormat( | ||
150 | "[PRIM COUNT MODULE]: OnParcelPrimCountTainted() called on {0}", m_Scene.RegionInfo.RegionName); | ||
151 | |||
141 | lock (m_TaintLock) | 152 | lock (m_TaintLock) |
142 | m_Tainted = true; | 153 | m_Tainted = true; |
143 | } | 154 | } |
@@ -163,7 +174,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
163 | // NOTE: Call under Taint Lock | 174 | // NOTE: Call under Taint Lock |
164 | private void AddObject(SceneObjectGroup obj) | 175 | private void AddObject(SceneObjectGroup obj) |
165 | { | 176 | { |
166 | // m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} to prim count", obj.Name); | 177 | m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} {1} to prim count", obj.Name, obj.UUID); |
167 | 178 | ||
168 | if (obj.IsAttachment) | 179 | if (obj.IsAttachment) |
169 | return; | 180 | return; |
@@ -214,10 +225,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
214 | // NOTE: Call under Taint Lock | 225 | // NOTE: Call under Taint Lock |
215 | private void RemoveObject(SceneObjectGroup obj) | 226 | private void RemoveObject(SceneObjectGroup obj) |
216 | { | 227 | { |
228 | m_log.DebugFormat("[PRIM COUNT MODULE]: Removing object {0} {1} from prim count", obj.Name, obj.UUID); | ||
217 | } | 229 | } |
218 | 230 | ||
219 | public IPrimCounts GetPrimCounts(UUID parcelID) | 231 | public IPrimCounts GetPrimCounts(UUID parcelID) |
220 | { | 232 | { |
233 | m_log.DebugFormat( | ||
234 | "[PRIM COUNT MODULE]: GetPrimCounts for parcel {0} in {1}", parcelID, m_Scene.RegionInfo.RegionName); | ||
235 | |||
221 | PrimCounts primCounts; | 236 | PrimCounts primCounts; |
222 | 237 | ||
223 | lock (m_PrimCounts) | 238 | lock (m_PrimCounts) |
@@ -239,7 +254,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
239 | /// <returns></returns> | 254 | /// <returns></returns> |
240 | public int GetOwnerCount(UUID parcelID) | 255 | public int GetOwnerCount(UUID parcelID) |
241 | { | 256 | { |
242 | // m_log.DebugFormat("[PRIM COUNT MODULE]: GetOwnerCount for {0}", parcelID); | 257 | int count = 0; |
243 | 258 | ||
244 | lock (m_TaintLock) | 259 | lock (m_TaintLock) |
245 | { | 260 | { |
@@ -248,9 +263,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
248 | 263 | ||
249 | ParcelCounts counts; | 264 | ParcelCounts counts; |
250 | if (m_ParcelCounts.TryGetValue(parcelID, out counts)) | 265 | if (m_ParcelCounts.TryGetValue(parcelID, out counts)) |
251 | return counts.Owner; | 266 | count = counts.Owner; |
252 | } | 267 | } |
253 | return 0; | 268 | |
269 | m_log.DebugFormat( | ||
270 | "[PRIM COUNT MODULE]: GetOwnerCount for parcel {0} in {1} returning {2}", | ||
271 | parcelID, m_Scene.RegionInfo.RegionName, count); | ||
272 | |||
273 | return count; | ||
254 | } | 274 | } |
255 | 275 | ||
256 | /// <summary> | 276 | /// <summary> |
@@ -260,6 +280,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
260 | /// <returns></returns> | 280 | /// <returns></returns> |
261 | public int GetGroupCount(UUID parcelID) | 281 | public int GetGroupCount(UUID parcelID) |
262 | { | 282 | { |
283 | int count = 0; | ||
284 | |||
263 | lock (m_TaintLock) | 285 | lock (m_TaintLock) |
264 | { | 286 | { |
265 | if (m_Tainted) | 287 | if (m_Tainted) |
@@ -267,9 +289,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
267 | 289 | ||
268 | ParcelCounts counts; | 290 | ParcelCounts counts; |
269 | if (m_ParcelCounts.TryGetValue(parcelID, out counts)) | 291 | if (m_ParcelCounts.TryGetValue(parcelID, out counts)) |
270 | return counts.Group; | 292 | count = counts.Group; |
271 | } | 293 | } |
272 | return 0; | 294 | |
295 | m_log.DebugFormat( | ||
296 | "[PRIM COUNT MODULE]: GetGroupCount for parcel {0} in {1} returning {2}", | ||
297 | parcelID, m_Scene.RegionInfo.RegionName, count); | ||
298 | |||
299 | return count; | ||
273 | } | 300 | } |
274 | 301 | ||
275 | /// <summary> | 302 | /// <summary> |
@@ -279,6 +306,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
279 | /// <returns></returns> | 306 | /// <returns></returns> |
280 | public int GetOthersCount(UUID parcelID) | 307 | public int GetOthersCount(UUID parcelID) |
281 | { | 308 | { |
309 | int count = 0; | ||
310 | |||
282 | lock (m_TaintLock) | 311 | lock (m_TaintLock) |
283 | { | 312 | { |
284 | if (m_Tainted) | 313 | if (m_Tainted) |
@@ -286,9 +315,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
286 | 315 | ||
287 | ParcelCounts counts; | 316 | ParcelCounts counts; |
288 | if (m_ParcelCounts.TryGetValue(parcelID, out counts)) | 317 | if (m_ParcelCounts.TryGetValue(parcelID, out counts)) |
289 | return counts.Others; | 318 | count = counts.Others; |
290 | } | 319 | } |
291 | return 0; | 320 | |
321 | m_log.DebugFormat( | ||
322 | "[PRIM COUNT MODULE]: GetOthersCount for parcel {0} in {1} returning {2}", | ||
323 | parcelID, m_Scene.RegionInfo.RegionName, count); | ||
324 | |||
325 | return count; | ||
292 | } | 326 | } |
293 | 327 | ||
294 | /// <summary> | 328 | /// <summary> |
@@ -298,6 +332,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
298 | /// <returns></returns> | 332 | /// <returns></returns> |
299 | public int GetSimulatorCount(UUID parcelID) | 333 | public int GetSimulatorCount(UUID parcelID) |
300 | { | 334 | { |
335 | int count = 0; | ||
336 | |||
301 | lock (m_TaintLock) | 337 | lock (m_TaintLock) |
302 | { | 338 | { |
303 | if (m_Tainted) | 339 | if (m_Tainted) |
@@ -308,10 +344,15 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
308 | { | 344 | { |
309 | int val; | 345 | int val; |
310 | if (m_SimwideCounts.TryGetValue(owner, out val)) | 346 | if (m_SimwideCounts.TryGetValue(owner, out val)) |
311 | return val; | 347 | count = val; |
312 | } | 348 | } |
313 | } | 349 | } |
314 | return 0; | 350 | |
351 | m_log.DebugFormat( | ||
352 | "[PRIM COUNT MODULE]: GetOthersCount for parcel {0} in {1} returning {2}", | ||
353 | parcelID, m_Scene.RegionInfo.RegionName, count); | ||
354 | |||
355 | return count; | ||
315 | } | 356 | } |
316 | 357 | ||
317 | /// <summary> | 358 | /// <summary> |
@@ -322,6 +363,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
322 | /// <returns></returns> | 363 | /// <returns></returns> |
323 | public int GetUserCount(UUID parcelID, UUID userID) | 364 | public int GetUserCount(UUID parcelID, UUID userID) |
324 | { | 365 | { |
366 | int count = 0; | ||
367 | |||
325 | lock (m_TaintLock) | 368 | lock (m_TaintLock) |
326 | { | 369 | { |
327 | if (m_Tainted) | 370 | if (m_Tainted) |
@@ -332,16 +375,21 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
332 | { | 375 | { |
333 | int val; | 376 | int val; |
334 | if (counts.Users.TryGetValue(userID, out val)) | 377 | if (counts.Users.TryGetValue(userID, out val)) |
335 | return val; | 378 | count = val; |
336 | } | 379 | } |
337 | } | 380 | } |
338 | return 0; | 381 | |
382 | m_log.DebugFormat( | ||
383 | "[PRIM COUNT MODULE]: GetUserCount for user {0} in parcel {1} in region {2} returning {3}", | ||
384 | userID, parcelID, m_Scene.RegionInfo.RegionName, count); | ||
385 | |||
386 | return count; | ||
339 | } | 387 | } |
340 | 388 | ||
341 | // NOTE: This method MUST be called while holding the taint lock! | 389 | // NOTE: This method MUST be called while holding the taint lock! |
342 | private void Recount() | 390 | private void Recount() |
343 | { | 391 | { |
344 | // m_log.DebugFormat("[PRIM COUNT MODULE]: Recounting prims on {0}", m_Scene.RegionInfo.RegionName); | 392 | m_log.DebugFormat("[PRIM COUNT MODULE]: Recounting prims on {0}", m_Scene.RegionInfo.RegionName); |
345 | 393 | ||
346 | m_OwnerMap.Clear(); | 394 | m_OwnerMap.Clear(); |
347 | m_SimwideCounts.Clear(); | 395 | m_SimwideCounts.Clear(); |
@@ -367,6 +415,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
367 | if (!m_OwnerMap.ContainsKey(k)) | 415 | if (!m_OwnerMap.ContainsKey(k)) |
368 | m_PrimCounts.Remove(k); | 416 | m_PrimCounts.Remove(k); |
369 | } | 417 | } |
418 | |||
370 | m_Tainted = false; | 419 | m_Tainted = false; |
371 | } | 420 | } |
372 | } | 421 | } |
diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index c9d393f..80b2859 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs | |||
@@ -126,6 +126,28 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests | |||
126 | Assert.That(pc.Users[m_userId], Is.EqualTo(1)); | 126 | Assert.That(pc.Users[m_userId], Is.EqualTo(1)); |
127 | Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); | 127 | Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); |
128 | Assert.That(pc.Simulator, Is.EqualTo(1)); | 128 | Assert.That(pc.Simulator, Is.EqualTo(1)); |
129 | } | 129 | } |
130 | |||
131 | /// <summary> | ||
132 | /// Test the count is correct after is has been tainted. | ||
133 | /// </summary> | ||
134 | [Test] | ||
135 | public void TestTaint() | ||
136 | { | ||
137 | TestHelper.InMethod(); | ||
138 | IPrimCounts pc = m_lo.PrimCounts; | ||
139 | |||
140 | SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); | ||
141 | m_scene.AddNewSceneObject(sog, false); | ||
142 | |||
143 | m_pcm.TaintPrimCount(); | ||
144 | |||
145 | Assert.That(pc.Owner, Is.EqualTo(3)); | ||
146 | Assert.That(pc.Group, Is.EqualTo(0)); | ||
147 | Assert.That(pc.Others, Is.EqualTo(0)); | ||
148 | Assert.That(pc.Users[m_userId], Is.EqualTo(3)); | ||
149 | Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); | ||
150 | Assert.That(pc.Simulator, Is.EqualTo(3)); | ||
151 | } | ||
130 | } | 152 | } |
131 | } \ No newline at end of file | 153 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 41d6628..d939329 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | |||
@@ -909,7 +909,7 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
909 | { | 909 | { |
910 | } | 910 | } |
911 | 911 | ||
912 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | 912 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) |
913 | { | 913 | { |
914 | } | 914 | } |
915 | 915 | ||
diff --git a/OpenSim/Region/Framework/Interfaces/IPrimCountModule.cs b/OpenSim/Region/Framework/Interfaces/IPrimCountModule.cs index 65158e1..d63da2e 100644 --- a/OpenSim/Region/Framework/Interfaces/IPrimCountModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IPrimCountModule.cs | |||
@@ -38,18 +38,4 @@ namespace OpenSim.Region.Framework.Interfaces | |||
38 | 38 | ||
39 | IPrimCounts GetPrimCounts(UUID parcelID); | 39 | IPrimCounts GetPrimCounts(UUID parcelID); |
40 | } | 40 | } |
41 | 41 | } \ No newline at end of file | |
42 | public interface IPrimCounts | ||
43 | { | ||
44 | int Owner { get; } | ||
45 | int Group { get; } | ||
46 | int Others { get; } | ||
47 | int Simulator { get; } | ||
48 | IUserPrimCounts Users { get; } | ||
49 | } | ||
50 | |||
51 | public interface IUserPrimCounts | ||
52 | { | ||
53 | int this[UUID agentID] { get; } | ||
54 | } | ||
55 | } | ||
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 49382f0..821cd4b 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs | |||
@@ -1247,7 +1247,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server | |||
1247 | 1247 | ||
1248 | } | 1248 | } |
1249 | 1249 | ||
1250 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | 1250 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) |
1251 | { | 1251 | { |
1252 | 1252 | ||
1253 | } | 1253 | } |
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/LOParcel.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/LOParcel.cs index 8df020f..c898da6 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/LOParcel.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/LOParcel.cs | |||
@@ -25,6 +25,7 @@ | |||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using OpenSim.Framework; | ||
28 | using OpenSim.Region.Framework.Interfaces; | 29 | using OpenSim.Region.Framework.Interfaces; |
29 | using OpenSim.Region.Framework.Scenes; | 30 | using OpenSim.Region.Framework.Scenes; |
30 | 31 | ||
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 5d44aa1..96760a2 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs | |||
@@ -925,7 +925,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
925 | { | 925 | { |
926 | } | 926 | } |
927 | 927 | ||
928 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor,int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | 928 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor,int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) |
929 | { | 929 | { |
930 | } | 930 | } |
931 | public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID) | 931 | public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID) |
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index ebe0a72..d1dc17f 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs | |||
@@ -957,7 +957,7 @@ namespace OpenSim.Tests.Common.Mock | |||
957 | { | 957 | { |
958 | } | 958 | } |
959 | 959 | ||
960 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | 960 | public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) |
961 | { | 961 | { |
962 | } | 962 | } |
963 | 963 | ||