Merge branch 'master' of git://opensimulator.org/git/opensim
						commit
						8e6425dad7
					
				|  | @ -1252,7 +1252,7 @@ namespace OpenSim.Client.MXP.ClientStack | |||
|             // Need to translate to MXP somehow | ||||
|         } | ||||
| 
 | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         { | ||||
|             // Need to translate to MXP somehow | ||||
|         } | ||||
|  |  | |||
|  | @ -799,7 +799,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack | |||
|             throw new System.NotImplementedException(); | ||||
|         } | ||||
| 
 | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         { | ||||
|             throw new System.NotImplementedException(); | ||||
|         } | ||||
|  |  | |||
|  | @ -1143,7 +1143,17 @@ namespace OpenSim.Framework | |||
|         void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, | ||||
|                                     uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner); | ||||
| 
 | ||||
|         void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, | ||||
|         /// <summary> | ||||
|         /// Send land properties to the client. | ||||
|         /// </summary> | ||||
|         /// <param name="sequence_id"></param> | ||||
|         /// <param name="snap_selection"></param> | ||||
|         /// <param name="request_result"></param> | ||||
|         /// <param name="lo"></param></param> | ||||
|         /// <param name="parcelObjectCapacity">/param> | ||||
|         /// <param name="simObjectCapacity"></param> | ||||
|         /// <param name="regionFlags"></param> | ||||
|         void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, | ||||
|                                 float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, | ||||
|                                 uint regionFlags); | ||||
| 
 | ||||
|  |  | |||
|  | @ -27,10 +27,8 @@ | |||
| 
 | ||||
| using System.Collections.Generic; | ||||
| using OpenMetaverse; | ||||
| using OpenSim.Framework; | ||||
| using OpenSim.Region.Framework.Scenes; | ||||
| 
 | ||||
| namespace OpenSim.Region.Framework.Interfaces | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|     public delegate int overrideParcelMaxPrimCountDelegate(ILandObject obj); | ||||
|     public delegate int overrideSimulatorMaxPrimCountDelegate(ILandObject obj); | ||||
|  | @ -90,11 +88,8 @@ namespace OpenSim.Region.Framework.Interfaces | |||
|         bool[,] MergeLandBitmaps(bool[,] bitmap_base, bool[,] bitmap_add); | ||||
|         void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client); | ||||
|         void SendLandObjectOwners(IClientAPI remote_client); | ||||
|         void ReturnObject(SceneObjectGroup obj); | ||||
|         void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client); | ||||
|         void ResetLandPrimCounts(); | ||||
|         void AddPrimToCount(SceneObjectGroup obj); | ||||
|         void RemovePrimFromCount(SceneObjectGroup obj); | ||||
|         void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area); | ||||
| 
 | ||||
|         void DeedToGroup(UUID groupID); | ||||
|  | @ -0,0 +1,69 @@ | |||
| /* | ||||
|  * Copyright (c) Contributors, http://opensimulator.org/ | ||||
|  * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of the OpenSimulator Project nor the | ||||
|  *       names of its contributors may be used to endorse or promote products | ||||
|  *       derived from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||||
|  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| using OpenMetaverse; | ||||
| 
 | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|     public interface IPrimCounts | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Parcel owner owned prims | ||||
|         /// </summary> | ||||
|         int Owner { get; } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Parcel group owned prims | ||||
|         /// </summary> | ||||
|         int Group { get; } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Prims owned by others (not parcel owner or parcel group). | ||||
|         /// </summary> | ||||
|         int Others { get; } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Total prims on the parcel. | ||||
|         /// </summary> | ||||
|         int Total { get; } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Prims on the simulator that are owned by the parcel owner, even if they are in other parcels. | ||||
|         /// </summary> | ||||
|         int Simulator { get; } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Prims per individual users. | ||||
|         /// </summary> | ||||
|         IUserPrimCounts Users { get; } | ||||
|     } | ||||
| 
 | ||||
|     public interface IUserPrimCounts | ||||
|     { | ||||
|         int this[UUID agentID] { get; } | ||||
|     } | ||||
| } | ||||
|  | @ -4272,8 +4272,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
|             OutPacket(packet, ThrottleOutPacketType.Task); | ||||
|         } | ||||
| 
 | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         public void SendLandProperties( | ||||
|              int sequence_id, bool snap_selection, int request_result, ILandObject lo,  | ||||
|              float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         { | ||||
| //            m_log.DebugFormat("[LLCLIENTVIEW]: Sending land properties for {0} to {1}", lo.LandData.GlobalID, Name); | ||||
|              | ||||
|             LandData landData = lo.LandData; | ||||
|              | ||||
|             ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage(); | ||||
| 
 | ||||
|             updateMessage.AABBMax = landData.AABBMax; | ||||
|  | @ -4281,15 +4287,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
|             updateMessage.Area = landData.Area; | ||||
|             updateMessage.AuctionID = landData.AuctionID; | ||||
|             updateMessage.AuthBuyerID = landData.AuthBuyerID; | ||||
| 
 | ||||
|             updateMessage.Bitmap = landData.Bitmap; | ||||
| 
 | ||||
|             updateMessage.Desc = landData.Description; | ||||
|             updateMessage.Category = landData.Category; | ||||
|             updateMessage.ClaimDate = Util.ToDateTime(landData.ClaimDate); | ||||
|             updateMessage.ClaimPrice = landData.ClaimPrice; | ||||
|             updateMessage.GroupID = landData.GroupID; | ||||
|             updateMessage.GroupPrims = landData.GroupPrims; | ||||
|             updateMessage.GroupID = landData.GroupID;             | ||||
|             updateMessage.IsGroupOwned = landData.IsGroupOwned; | ||||
|             updateMessage.LandingType = (LandingType) landData.LandingType; | ||||
|             updateMessage.LocalID = landData.LocalID; | ||||
|  | @ -4310,9 +4313,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
|             updateMessage.Name = landData.Name; | ||||
|             updateMessage.OtherCleanTime = landData.OtherCleanTime; | ||||
|             updateMessage.OtherCount = 0; //TODO: Unimplemented | ||||
|             updateMessage.OtherPrims = landData.OtherPrims; | ||||
|             updateMessage.OwnerID = landData.OwnerID; | ||||
|             updateMessage.OwnerPrims = landData.OwnerPrims; | ||||
|             updateMessage.OwnerID = landData.OwnerID;             | ||||
|             updateMessage.ParcelFlags = (ParcelFlags) landData.Flags; | ||||
|             updateMessage.ParcelPrimBonus = simObjectBonusFactor; | ||||
|             updateMessage.PassHours = landData.PassHours; | ||||
|  | @ -4327,10 +4328,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
| 
 | ||||
|             updateMessage.RentPrice = 0; | ||||
|             updateMessage.RequestResult = (ParcelResult) request_result; | ||||
|             updateMessage.SalePrice = landData.SalePrice; | ||||
|             updateMessage.SelectedPrims = landData.SelectedPrims; | ||||
|             updateMessage.SalePrice = landData.SalePrice;             | ||||
|             updateMessage.SelfCount = 0; //TODO: Unimplemented | ||||
|             updateMessage.SequenceID = sequence_id; | ||||
|              | ||||
|             if (landData.SimwideArea > 0) | ||||
|             { | ||||
|                 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 | |||
|             { | ||||
|                 updateMessage.SimWideMaxPrims = 0; | ||||
|             } | ||||
|             updateMessage.SimWideTotalPrims = landData.SimwidePrims; | ||||
|              | ||||
|             updateMessage.SnapSelection = snap_selection; | ||||
|             updateMessage.SnapshotID = landData.SnapshotID; | ||||
|             updateMessage.Status = (ParcelStatus) landData.Status; | ||||
|             updateMessage.TotalPrims = landData.OwnerPrims + landData.GroupPrims + landData.OtherPrims + | ||||
|                                                  landData.SelectedPrims; | ||||
|             updateMessage.UserLocation = landData.UserLocation; | ||||
|             updateMessage.UserLookAt = landData.UserLookAt; | ||||
| 
 | ||||
|  | @ -4356,6 +4355,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
|             updateMessage.MediaLoop = landData.MediaLoop; | ||||
|             updateMessage.ObscureMusic = landData.ObscureMusic; | ||||
|             updateMessage.ObscureMedia = landData.ObscureMedia; | ||||
|              | ||||
|             IPrimCounts pc = lo.PrimCounts; | ||||
|             updateMessage.OwnerPrims = pc.Owner;             | ||||
|             updateMessage.GroupPrims = pc.Group; | ||||
|             updateMessage.OtherPrims = pc.Others;             | ||||
|             updateMessage.TotalPrims = pc.Total; | ||||
|             updateMessage.SimWideTotalPrims = pc.Simulator;                                 | ||||
|              | ||||
|             // TODO: Need to transfer selected prims to new prim count structure. | ||||
|             updateMessage.SelectedPrims = landData.SelectedPrims; | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|  |  | |||
|  | @ -28,6 +28,7 @@ | |||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using Nini.Config; | ||||
| using OpenSim.Framework; | ||||
| using OpenSim.Region.Framework.Interfaces; | ||||
| using OpenSim.Region.Framework.Scenes; | ||||
| using OpenMetaverse; | ||||
|  |  | |||
|  | @ -805,7 +805,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|             ILandObject landUnderPrim = GetLandObject(position.X, position.Y); | ||||
|             if (landUnderPrim != null) | ||||
|             { | ||||
|                 landUnderPrim.AddPrimToCount(obj); | ||||
|                 ((LandObject)landUnderPrim).AddPrimToCount(obj); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
|  | @ -243,7 +243,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|             } | ||||
| 
 | ||||
|             remote_client.SendLandProperties(seq_id, | ||||
|                     snap_selection, request_result, LandData, | ||||
|                     snap_selection, request_result, this, | ||||
|                     (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, | ||||
|                     GetParcelMaxPrimCount(this), | ||||
|                     GetSimulatorMaxPrimCount(this), regionFlags); | ||||
|  |  | |||
|  | @ -51,8 +51,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
| 
 | ||||
|     public class PrimCountModule : IPrimCountModule, INonSharedRegionModule | ||||
|     { | ||||
| //        private static readonly ILog m_log = | ||||
| //            LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||||
|         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||||
| 
 | ||||
|         private Scene m_Scene; | ||||
|         private Dictionary<UUID, PrimCounts> m_PrimCounts = | ||||
|  | @ -123,6 +122,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|             { | ||||
|                 if (!m_Tainted) | ||||
|                     AddObject(obj); | ||||
| //                else | ||||
| //                    m_log.DebugFormat( | ||||
| //                        "[PRIM COUNT MODULE]: Ignoring OnParcelPrimCountAdd() for {0} on {1} since count is tainted",  | ||||
| //                        obj.Name, m_Scene.RegionInfo.RegionName); | ||||
|                      | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  | @ -133,11 +137,18 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|             { | ||||
|                 if (!m_Tainted) | ||||
|                     RemoveObject(obj); | ||||
| //                else | ||||
| //                    m_log.DebugFormat( | ||||
| //                        "[PRIM COUNT MODULE]: Ignoring OnObjectBeingRemovedFromScene() for {0} on {1} since count is tainted",  | ||||
| //                        obj.Name, m_Scene.RegionInfo.RegionName);                 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private void OnParcelPrimCountTainted() | ||||
|         { | ||||
| //            m_log.DebugFormat( | ||||
| //                "[PRIM COUNT MODULE]: OnParcelPrimCountTainted() called on {0}", m_Scene.RegionInfo.RegionName);             | ||||
|              | ||||
|             lock (m_TaintLock) | ||||
|                 m_Tainted = true; | ||||
|         } | ||||
|  | @ -163,7 +174,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|         // NOTE: Call under Taint Lock | ||||
|         private void AddObject(SceneObjectGroup obj) | ||||
|         { | ||||
| //            m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} to prim count", obj.Name); | ||||
| //            m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} {1} to prim count", obj.Name, obj.UUID); | ||||
|              | ||||
|             if (obj.IsAttachment) | ||||
|                 return; | ||||
|  | @ -214,10 +225,16 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|         // NOTE: Call under Taint Lock | ||||
|         private void RemoveObject(SceneObjectGroup obj) | ||||
|         { | ||||
| //            m_log.DebugFormat("[PRIM COUNT MODULE]: Removing object {0} {1} from prim count", obj.Name, obj.UUID);             | ||||
|              | ||||
|             // Currently this is being done by tainting the count instead. | ||||
|         } | ||||
| 
 | ||||
|         public IPrimCounts GetPrimCounts(UUID parcelID) | ||||
|         { | ||||
| //            m_log.DebugFormat( | ||||
| //                "[PRIM COUNT MODULE]: GetPrimCounts for parcel {0} in {1}", parcelID, m_Scene.RegionInfo.RegionName); | ||||
|              | ||||
|             PrimCounts primCounts; | ||||
| 
 | ||||
|             lock (m_PrimCounts) | ||||
|  | @ -239,7 +256,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|         /// <returns></returns> | ||||
|         public int GetOwnerCount(UUID parcelID) | ||||
|         { | ||||
| //            m_log.DebugFormat("[PRIM COUNT MODULE]: GetOwnerCount for {0}", parcelID); | ||||
|             int count = 0; | ||||
|              | ||||
|             lock (m_TaintLock) | ||||
|             { | ||||
|  | @ -248,9 +265,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
| 
 | ||||
|                 ParcelCounts counts; | ||||
|                 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) | ||||
|                     return counts.Owner; | ||||
|                     count = counts.Owner; | ||||
|             } | ||||
|             return 0; | ||||
|              | ||||
| //            m_log.DebugFormat( | ||||
| //                "[PRIM COUNT MODULE]: GetOwnerCount for parcel {0} in {1} returning {2}",  | ||||
| //                parcelID, m_Scene.RegionInfo.RegionName, count); | ||||
|              | ||||
|             return count; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|  | @ -260,6 +282,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|         /// <returns></returns>         | ||||
|         public int GetGroupCount(UUID parcelID) | ||||
|         { | ||||
|             int count = 0; | ||||
|              | ||||
|             lock (m_TaintLock) | ||||
|             { | ||||
|                 if (m_Tainted) | ||||
|  | @ -267,9 +291,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
| 
 | ||||
|                 ParcelCounts counts; | ||||
|                 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) | ||||
|                     return counts.Group; | ||||
|                     count = counts.Group; | ||||
|             } | ||||
|             return 0; | ||||
|              | ||||
| //            m_log.DebugFormat( | ||||
| //                "[PRIM COUNT MODULE]: GetGroupCount for parcel {0} in {1} returning {2}",  | ||||
| //                parcelID, m_Scene.RegionInfo.RegionName, count); | ||||
|              | ||||
|             return count; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|  | @ -279,6 +308,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|         /// <returns></returns>                 | ||||
|         public int GetOthersCount(UUID parcelID) | ||||
|         { | ||||
|             int count = 0; | ||||
|              | ||||
|             lock (m_TaintLock) | ||||
|             { | ||||
|                 if (m_Tainted) | ||||
|  | @ -286,9 +317,45 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
| 
 | ||||
|                 ParcelCounts counts; | ||||
|                 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) | ||||
|                     return counts.Others; | ||||
|                     count = counts.Others; | ||||
|             } | ||||
|             return 0; | ||||
|              | ||||
| //            m_log.DebugFormat( | ||||
| //                "[PRIM COUNT MODULE]: GetOthersCount for parcel {0} in {1} returning {2}",  | ||||
| //                parcelID, m_Scene.RegionInfo.RegionName, count); | ||||
|              | ||||
|             return count; | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Get the total count of owner, group and others prims on the parcel. | ||||
|         /// FIXME: Need to do selected prims once this is reimplemented.    | ||||
|         /// </summary> | ||||
|         /// <param name="parcelID"></param> | ||||
|         /// <returns></returns> | ||||
|         public int GetTotalCount(UUID parcelID) | ||||
|         { | ||||
|             int count = 0; | ||||
|              | ||||
|             lock (m_TaintLock) | ||||
|             { | ||||
|                 if (m_Tainted) | ||||
|                     Recount(); | ||||
| 
 | ||||
|                 ParcelCounts counts; | ||||
|                 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) | ||||
|                 { | ||||
|                     count = counts.Owner; | ||||
|                     count += counts.Group; | ||||
|                     count += counts.Others; | ||||
|                 } | ||||
|             } | ||||
|              | ||||
| //            m_log.DebugFormat( | ||||
| //                "[PRIM COUNT MODULE]: GetTotalCount for parcel {0} in {1} returning {2}",  | ||||
| //                parcelID, m_Scene.RegionInfo.RegionName, count); | ||||
|              | ||||
|             return count;             | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|  | @ -298,6 +365,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|         /// <returns></returns>               | ||||
|         public int GetSimulatorCount(UUID parcelID) | ||||
|         { | ||||
|             int count = 0; | ||||
|              | ||||
|             lock (m_TaintLock) | ||||
|             { | ||||
|                 if (m_Tainted) | ||||
|  | @ -308,10 +377,15 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|                 { | ||||
|                     int val; | ||||
|                     if (m_SimwideCounts.TryGetValue(owner, out val)) | ||||
|                         return val; | ||||
|                         count = val; | ||||
|                 } | ||||
|             } | ||||
|             return 0; | ||||
|              | ||||
| //            m_log.DebugFormat( | ||||
| //                "[PRIM COUNT MODULE]: GetOthersCount for parcel {0} in {1} returning {2}",  | ||||
| //                parcelID, m_Scene.RegionInfo.RegionName, count); | ||||
|              | ||||
|             return count; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|  | @ -322,6 +396,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|         /// <returns></returns>           | ||||
|         public int GetUserCount(UUID parcelID, UUID userID) | ||||
|         { | ||||
|             int count = 0; | ||||
|              | ||||
|             lock (m_TaintLock) | ||||
|             { | ||||
|                 if (m_Tainted) | ||||
|  | @ -332,10 +408,15 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|                 { | ||||
|                     int val; | ||||
|                     if (counts.Users.TryGetValue(userID, out val)) | ||||
|                         return val; | ||||
|                         count = val; | ||||
|                 } | ||||
|             } | ||||
|             return 0; | ||||
| 
 | ||||
| //            m_log.DebugFormat( | ||||
| //                "[PRIM COUNT MODULE]: GetUserCount for user {0} in parcel {1} in region {2} returning {3}",  | ||||
| //                userID, parcelID, m_Scene.RegionInfo.RegionName, count); | ||||
|              | ||||
|             return count; | ||||
|         } | ||||
| 
 | ||||
|         // NOTE: This method MUST be called while holding the taint lock! | ||||
|  | @ -367,6 +448,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|                 if (!m_OwnerMap.ContainsKey(k)) | ||||
|                     m_PrimCounts.Remove(k); | ||||
|             } | ||||
|              | ||||
|             m_Tainted = false; | ||||
|         } | ||||
|     } | ||||
|  | @ -408,6 +490,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
|                 return m_Parent.GetOthersCount(m_ParcelID); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         public int Total | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return m_Parent.GetTotalCount(m_ParcelID); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public int Simulator | ||||
|         { | ||||
|  |  | |||
|  | @ -78,9 +78,10 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests | |||
|             Assert.That(pc.Owner, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Group, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Others, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Total, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Users[m_userId], Is.EqualTo(0)); | ||||
|             Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); | ||||
|             Assert.That(pc.Simulator, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Simulator, Is.EqualTo(0));             | ||||
|              | ||||
|             SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);              | ||||
|             m_scene.AddNewSceneObject(sog, false); | ||||
|  | @ -88,6 +89,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests | |||
|             Assert.That(pc.Owner, Is.EqualTo(3)); | ||||
|             Assert.That(pc.Group, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Others, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Total, Is.EqualTo(3)); | ||||
|             Assert.That(pc.Users[m_userId], Is.EqualTo(3)); | ||||
|             Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); | ||||
|             Assert.That(pc.Simulator, Is.EqualTo(3));             | ||||
|  | @ -99,11 +101,36 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests | |||
|             Assert.That(pc.Owner, Is.EqualTo(5)); | ||||
|             Assert.That(pc.Group, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Others, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Total, Is.EqualTo(5)); | ||||
|             Assert.That(pc.Users[m_userId], Is.EqualTo(5)); | ||||
|             Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); | ||||
|             Assert.That(pc.Simulator, Is.EqualTo(5));               | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Test count after a parcel owner owned copied object is added. | ||||
|         /// </summary> | ||||
|         [Test] | ||||
|         public void TestCopiedOwnerObject() | ||||
|         { | ||||
|             TestHelper.InMethod(); | ||||
| //            log4net.Config.XmlConfigurator.Configure();                                   | ||||
|                    | ||||
|             IPrimCounts pc = m_lo.PrimCounts; | ||||
|              | ||||
|             SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);              | ||||
|             m_scene.AddNewSceneObject(sog, false); | ||||
|             m_scene.SceneGraph.DuplicateObject(sog.LocalId, Vector3.Zero, 0, m_userId, UUID.Zero, Quaternion.Identity);  | ||||
|              | ||||
|             Assert.That(pc.Owner, Is.EqualTo(6)); | ||||
|             Assert.That(pc.Group, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Others, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Total, Is.EqualTo(6)); | ||||
|             Assert.That(pc.Users[m_userId], Is.EqualTo(6)); | ||||
|             Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); | ||||
|             Assert.That(pc.Simulator, Is.EqualTo(6));               | ||||
|         }         | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Test count after a parcel owner owned object is removed. | ||||
|         /// </summary> | ||||
|  | @ -123,9 +150,33 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests | |||
|             Assert.That(pc.Owner, Is.EqualTo(1)); | ||||
|             Assert.That(pc.Group, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Others, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Total, Is.EqualTo(1)); | ||||
|             Assert.That(pc.Users[m_userId], Is.EqualTo(1)); | ||||
|             Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); | ||||
|             Assert.That(pc.Simulator, Is.EqualTo(1));             | ||||
|         }         | ||||
|         }      | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Test the count is correct after is has been tainted. | ||||
|         /// </summary> | ||||
|         [Test] | ||||
|         public void TestTaint() | ||||
|         { | ||||
|             TestHelper.InMethod(); | ||||
|             IPrimCounts pc = m_lo.PrimCounts; | ||||
|              | ||||
|             SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);              | ||||
|             m_scene.AddNewSceneObject(sog, false);  | ||||
|              | ||||
|             m_pcm.TaintPrimCount(); | ||||
|              | ||||
|             Assert.That(pc.Owner, Is.EqualTo(3)); | ||||
|             Assert.That(pc.Group, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Others, Is.EqualTo(0)); | ||||
|             Assert.That(pc.Total, Is.EqualTo(3)); | ||||
|             Assert.That(pc.Users[m_userId], Is.EqualTo(3)); | ||||
|             Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); | ||||
|             Assert.That(pc.Simulator, Is.EqualTo(3));               | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -909,7 +909,7 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
|         { | ||||
|         } | ||||
| 
 | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         { | ||||
|         } | ||||
|          | ||||
|  |  | |||
|  | @ -38,18 +38,4 @@ namespace OpenSim.Region.Framework.Interfaces | |||
| 
 | ||||
|         IPrimCounts GetPrimCounts(UUID parcelID); | ||||
|     } | ||||
| 
 | ||||
|     public interface IPrimCounts | ||||
|     { | ||||
|         int Owner { get; } | ||||
|         int Group { get; } | ||||
|         int Others { get; } | ||||
|         int Simulator { get; } | ||||
|         IUserPrimCounts Users { get; } | ||||
|     } | ||||
| 
 | ||||
|     public interface IUserPrimCounts | ||||
|     { | ||||
|         int this[UUID agentID] { get; } | ||||
|     } | ||||
| } | ||||
| } | ||||
|  | @ -1247,7 +1247,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server | |||
|              | ||||
|         } | ||||
| 
 | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         { | ||||
|              | ||||
|         } | ||||
|  |  | |||
|  | @ -25,6 +25,7 @@ | |||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| using OpenSim.Framework; | ||||
| using OpenSim.Region.Framework.Interfaces; | ||||
| using OpenSim.Region.Framework.Scenes; | ||||
| 
 | ||||
|  |  | |||
|  | @ -925,7 +925,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
|         { | ||||
|         } | ||||
| 
 | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor,int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor,int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         { | ||||
|         } | ||||
|         public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID) | ||||
|  |  | |||
|  | @ -957,7 +957,7 @@ namespace OpenSim.Tests.Common.Mock | |||
|         { | ||||
|         } | ||||
| 
 | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Dan Lake
						Dan Lake