diff options
Diffstat (limited to 'OpenSim/Region')
5 files changed, 27 insertions, 124 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs index 7d990c2..7fc358d 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs | |||
@@ -133,16 +133,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
133 | return new List<ILandObject>(); | 133 | return new List<ILandObject>(); |
134 | } | 134 | } |
135 | 135 | ||
136 | public bool IsLandPrimCountTainted() | ||
137 | { | ||
138 | if (m_landManagementModule != null) | ||
139 | { | ||
140 | return m_landManagementModule.IsLandPrimCountTainted(); | ||
141 | } | ||
142 | |||
143 | return false; | ||
144 | } | ||
145 | |||
146 | public bool IsForcefulBansAllowed() | 136 | public bool IsForcefulBansAllowed() |
147 | { | 137 | { |
148 | if (m_landManagementModule != null) | 138 | if (m_landManagementModule != null) |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 2b5f7a0..adfac05 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -89,7 +89,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
89 | /// </value> | 89 | /// </value> |
90 | private readonly Dictionary<int, ILandObject> m_landList = new Dictionary<int, ILandObject>(); | 90 | private readonly Dictionary<int, ILandObject> m_landList = new Dictionary<int, ILandObject>(); |
91 | 91 | ||
92 | private bool m_landPrimCountTainted; | ||
93 | private int m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1; | 92 | private int m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1; |
94 | 93 | ||
95 | private bool m_allowedForcefulBans = true; | 94 | private bool m_allowedForcefulBans = true; |
@@ -122,18 +121,18 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
122 | 121 | ||
123 | m_scene.EventManager.OnParcelPrimCountAdd += EventManagerOnParcelPrimCountAdd; | 122 | m_scene.EventManager.OnParcelPrimCountAdd += EventManagerOnParcelPrimCountAdd; |
124 | m_scene.EventManager.OnParcelPrimCountUpdate += EventManagerOnParcelPrimCountUpdate; | 123 | m_scene.EventManager.OnParcelPrimCountUpdate += EventManagerOnParcelPrimCountUpdate; |
124 | m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene; | ||
125 | m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate; | ||
126 | |||
125 | m_scene.EventManager.OnAvatarEnteringNewParcel += EventManagerOnAvatarEnteringNewParcel; | 127 | m_scene.EventManager.OnAvatarEnteringNewParcel += EventManagerOnAvatarEnteringNewParcel; |
126 | m_scene.EventManager.OnClientMovement += EventManagerOnClientMovement; | 128 | m_scene.EventManager.OnClientMovement += EventManagerOnClientMovement; |
127 | m_scene.EventManager.OnValidateLandBuy += EventManagerOnValidateLandBuy; | 129 | m_scene.EventManager.OnValidateLandBuy += EventManagerOnValidateLandBuy; |
128 | m_scene.EventManager.OnLandBuy += EventManagerOnLandBuy; | 130 | m_scene.EventManager.OnLandBuy += EventManagerOnLandBuy; |
129 | m_scene.EventManager.OnNewClient += EventManagerOnNewClient; | 131 | m_scene.EventManager.OnNewClient += EventManagerOnNewClient; |
130 | m_scene.EventManager.OnSignificantClientMovement += EventManagerOnSignificantClientMovement; | 132 | m_scene.EventManager.OnSignificantClientMovement += EventManagerOnSignificantClientMovement; |
131 | m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene; | ||
132 | m_scene.EventManager.OnNoticeNoLandDataFromStorage += EventManagerOnNoLandDataFromStorage; | 133 | m_scene.EventManager.OnNoticeNoLandDataFromStorage += EventManagerOnNoLandDataFromStorage; |
133 | m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage; | 134 | m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage; |
134 | m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan; | 135 | m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan; |
135 | m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate; | ||
136 | m_scene.EventManager.OnParcelPrimCountTainted += EventManagerOnParcelPrimCountTainted; | ||
137 | m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps; | 136 | m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps; |
138 | m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole; | 137 | m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole; |
139 | 138 | ||
@@ -779,34 +778,24 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
779 | 778 | ||
780 | #region Parcel Modification | 779 | #region Parcel Modification |
781 | 780 | ||
782 | public void ResetAllLandPrimCounts() | 781 | public void ResetOverMeRecord() |
783 | { | 782 | { |
784 | lock (m_landList) | 783 | lock (m_landList) |
785 | { | 784 | { |
786 | foreach (LandObject p in m_landList.Values) | 785 | foreach (LandObject p in m_landList.Values) |
787 | { | 786 | { |
788 | p.ResetLandPrimCounts(); | 787 | p.ResetOverMeRecord(); |
789 | } | 788 | } |
790 | } | 789 | } |
791 | } | 790 | } |
792 | 791 | ||
793 | public void EventManagerOnParcelPrimCountTainted() | ||
794 | { | ||
795 | m_landPrimCountTainted = true; | ||
796 | } | ||
797 | |||
798 | public bool IsLandPrimCountTainted() | ||
799 | { | ||
800 | return m_landPrimCountTainted; | ||
801 | } | ||
802 | |||
803 | public void EventManagerOnParcelPrimCountAdd(SceneObjectGroup obj) | 792 | public void EventManagerOnParcelPrimCountAdd(SceneObjectGroup obj) |
804 | { | 793 | { |
805 | Vector3 position = obj.AbsolutePosition; | 794 | Vector3 position = obj.AbsolutePosition; |
806 | ILandObject landUnderPrim = GetLandObject(position.X, position.Y); | 795 | ILandObject landUnderPrim = GetLandObject(position.X, position.Y); |
807 | if (landUnderPrim != null) | 796 | if (landUnderPrim != null) |
808 | { | 797 | { |
809 | ((LandObject)landUnderPrim).AddPrimToCount(obj); | 798 | ((LandObject)landUnderPrim).AddPrimOverMe(obj); |
810 | } | 799 | } |
811 | } | 800 | } |
812 | 801 | ||
@@ -816,7 +805,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
816 | { | 805 | { |
817 | foreach (LandObject p in m_landList.Values) | 806 | foreach (LandObject p in m_landList.Values) |
818 | { | 807 | { |
819 | p.RemovePrimFromCount(obj); | 808 | p.RemovePrimFromOverMe(obj); |
820 | } | 809 | } |
821 | } | 810 | } |
822 | } | 811 | } |
@@ -849,8 +838,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
849 | foreach (LandObject p in landOwnersAndParcels[owner]) | 838 | foreach (LandObject p in landOwnersAndParcels[owner]) |
850 | { | 839 | { |
851 | simArea += p.LandData.Area; | 840 | simArea += p.LandData.Area; |
852 | simPrims += p.LandData.OwnerPrims + p.LandData.OtherPrims + p.LandData.GroupPrims + | 841 | simPrims += p.PrimCounts.Total; |
853 | p.LandData.SelectedPrims; | ||
854 | } | 842 | } |
855 | 843 | ||
856 | foreach (LandObject p in landOwnersAndParcels[owner]) | 844 | foreach (LandObject p in landOwnersAndParcels[owner]) |
@@ -867,7 +855,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
867 | // "[LAND MANAGEMENT MODULE]: Triggered EventManagerOnParcelPrimCountUpdate() for {0}", | 855 | // "[LAND MANAGEMENT MODULE]: Triggered EventManagerOnParcelPrimCountUpdate() for {0}", |
868 | // m_scene.RegionInfo.RegionName); | 856 | // m_scene.RegionInfo.RegionName); |
869 | 857 | ||
870 | ResetAllLandPrimCounts(); | 858 | ResetOverMeRecord(); |
871 | EntityBase[] entities = m_scene.Entities.GetEntities(); | 859 | EntityBase[] entities = m_scene.Entities.GetEntities(); |
872 | foreach (EntityBase obj in entities) | 860 | foreach (EntityBase obj in entities) |
873 | { | 861 | { |
@@ -880,15 +868,13 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
880 | } | 868 | } |
881 | } | 869 | } |
882 | FinalizeLandPrimCountUpdate(); | 870 | FinalizeLandPrimCountUpdate(); |
883 | m_landPrimCountTainted = false; | ||
884 | } | 871 | } |
885 | 872 | ||
886 | public void EventManagerOnRequestParcelPrimCountUpdate() | 873 | public void EventManagerOnRequestParcelPrimCountUpdate() |
887 | { | 874 | { |
888 | ResetAllLandPrimCounts(); | 875 | ResetOverMeRecord(); |
889 | m_scene.EventManager.TriggerParcelPrimCountUpdate(); | 876 | m_scene.EventManager.TriggerParcelPrimCountUpdate(); |
890 | FinalizeLandPrimCountUpdate(); | 877 | FinalizeLandPrimCountUpdate(); |
891 | m_landPrimCountTainted = false; | ||
892 | } | 878 | } |
893 | 879 | ||
894 | /// <summary> | 880 | /// <summary> |
@@ -952,8 +938,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
952 | m_landList[startLandObjectIndex].ForceUpdateLandInfo(); | 938 | m_landList[startLandObjectIndex].ForceUpdateLandInfo(); |
953 | } | 939 | } |
954 | 940 | ||
955 | EventManagerOnParcelPrimCountTainted(); | ||
956 | |||
957 | //Now add the new land object | 941 | //Now add the new land object |
958 | ILandObject result = AddLandObject(newLand); | 942 | ILandObject result = AddLandObject(newLand); |
959 | UpdateLandObject(startLandObject.LandData.LocalID, startLandObject.LandData); | 943 | UpdateLandObject(startLandObject.LandData.LocalID, startLandObject.LandData); |
@@ -1020,7 +1004,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1020 | performFinalLandJoin(masterLandObject, slaveLandObject); | 1004 | performFinalLandJoin(masterLandObject, slaveLandObject); |
1021 | } | 1005 | } |
1022 | } | 1006 | } |
1023 | EventManagerOnParcelPrimCountTainted(); | ||
1024 | 1007 | ||
1025 | masterLandObject.SendLandUpdateToAvatarsOverMe(); | 1008 | masterLandObject.SendLandUpdateToAvatarsOverMe(); |
1026 | } | 1009 | } |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index e7bdb19..9803bdf 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -64,8 +64,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
64 | 64 | ||
65 | #endregion | 65 | #endregion |
66 | 66 | ||
67 | #region ILandObject Members | ||
68 | |||
69 | public int GetPrimsFree() | 67 | public int GetPrimsFree() |
70 | { | 68 | { |
71 | m_scene.EventManager.TriggerParcelPrimCountUpdate(); | 69 | m_scene.EventManager.TriggerParcelPrimCountUpdate(); |
@@ -213,6 +211,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
213 | return simMax; | 211 | return simMax; |
214 | } | 212 | } |
215 | } | 213 | } |
214 | |||
216 | #endregion | 215 | #endregion |
217 | 216 | ||
218 | #region Packet Request Handling | 217 | #region Packet Request Handling |
@@ -909,9 +908,12 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
909 | 908 | ||
910 | lock (primsOverMe) | 909 | lock (primsOverMe) |
911 | { | 910 | { |
911 | // m_log.DebugFormat( | ||
912 | // "[LAND OBJECT]: Request for SendLandObjectOwners() from {0} with {1} known prims on region", | ||
913 | // remote_client.Name, primsOverMe.Count); | ||
914 | |||
912 | try | 915 | try |
913 | { | 916 | { |
914 | |||
915 | foreach (SceneObjectGroup obj in primsOverMe) | 917 | foreach (SceneObjectGroup obj in primsOverMe) |
916 | { | 918 | { |
917 | try | 919 | try |
@@ -950,6 +952,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
950 | public Dictionary<UUID, int> GetLandObjectOwners() | 952 | public Dictionary<UUID, int> GetLandObjectOwners() |
951 | { | 953 | { |
952 | Dictionary<UUID, int> ownersAndCount = new Dictionary<UUID, int>(); | 954 | Dictionary<UUID, int> ownersAndCount = new Dictionary<UUID, int>(); |
955 | |||
953 | lock (primsOverMe) | 956 | lock (primsOverMe) |
954 | { | 957 | { |
955 | try | 958 | try |
@@ -986,8 +989,10 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
986 | 989 | ||
987 | public void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client) | 990 | public void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client) |
988 | { | 991 | { |
989 | Dictionary<UUID,List<SceneObjectGroup>> returns = | 992 | // m_log.DebugFormat( |
990 | new Dictionary<UUID,List<SceneObjectGroup>>(); | 993 | // "[LAND OBJECT]: Request to return objects in {0} from {1}", LandData.Name, remote_client.Name); |
994 | |||
995 | Dictionary<UUID,List<SceneObjectGroup>> returns = new Dictionary<UUID,List<SceneObjectGroup>>(); | ||
991 | 996 | ||
992 | lock (primsOverMe) | 997 | lock (primsOverMe) |
993 | { | 998 | { |
@@ -1060,83 +1065,25 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1060 | 1065 | ||
1061 | #region Object Adding/Removing from Parcel | 1066 | #region Object Adding/Removing from Parcel |
1062 | 1067 | ||
1063 | public void ResetLandPrimCounts() | 1068 | public void ResetOverMeRecord() |
1064 | { | 1069 | { |
1065 | LandData.GroupPrims = 0; | ||
1066 | LandData.OwnerPrims = 0; | ||
1067 | LandData.OtherPrims = 0; | ||
1068 | LandData.SelectedPrims = 0; | ||
1069 | |||
1070 | |||
1071 | lock (primsOverMe) | 1070 | lock (primsOverMe) |
1072 | primsOverMe.Clear(); | 1071 | primsOverMe.Clear(); |
1073 | } | 1072 | } |
1074 | 1073 | ||
1075 | public void AddPrimToCount(SceneObjectGroup obj) | 1074 | public void AddPrimOverMe(SceneObjectGroup obj) |
1076 | { | 1075 | { |
1077 | |||
1078 | UUID prim_owner = obj.OwnerID; | ||
1079 | int prim_count = obj.PrimCount; | ||
1080 | |||
1081 | if (obj.IsSelected) | ||
1082 | { | ||
1083 | LandData.SelectedPrims += prim_count; | ||
1084 | } | ||
1085 | else | ||
1086 | { | ||
1087 | if (prim_owner == LandData.OwnerID) | ||
1088 | { | ||
1089 | LandData.OwnerPrims += prim_count; | ||
1090 | } | ||
1091 | else if ((obj.GroupID == LandData.GroupID || | ||
1092 | prim_owner == LandData.GroupID) && | ||
1093 | LandData.GroupID != UUID.Zero) | ||
1094 | { | ||
1095 | LandData.GroupPrims += prim_count; | ||
1096 | } | ||
1097 | else | ||
1098 | { | ||
1099 | LandData.OtherPrims += prim_count; | ||
1100 | } | ||
1101 | } | ||
1102 | |||
1103 | lock (primsOverMe) | 1076 | lock (primsOverMe) |
1104 | primsOverMe.Add(obj); | 1077 | primsOverMe.Add(obj); |
1105 | } | 1078 | } |
1106 | 1079 | ||
1107 | public void RemovePrimFromCount(SceneObjectGroup obj) | 1080 | public void RemovePrimFromOverMe(SceneObjectGroup obj) |
1108 | { | 1081 | { |
1109 | lock (primsOverMe) | 1082 | lock (primsOverMe) |
1110 | { | 1083 | primsOverMe.Remove(obj); |
1111 | if (primsOverMe.Contains(obj)) | ||
1112 | { | ||
1113 | UUID prim_owner = obj.OwnerID; | ||
1114 | int prim_count = obj.PrimCount; | ||
1115 | |||
1116 | if (prim_owner == LandData.OwnerID) | ||
1117 | { | ||
1118 | LandData.OwnerPrims -= prim_count; | ||
1119 | } | ||
1120 | else if (obj.GroupID == LandData.GroupID || | ||
1121 | prim_owner == LandData.GroupID) | ||
1122 | { | ||
1123 | LandData.GroupPrims -= prim_count; | ||
1124 | } | ||
1125 | else | ||
1126 | { | ||
1127 | LandData.OtherPrims -= prim_count; | ||
1128 | } | ||
1129 | |||
1130 | primsOverMe.Remove(obj); | ||
1131 | } | ||
1132 | } | ||
1133 | } | 1084 | } |
1134 | 1085 | ||
1135 | #endregion | 1086 | #endregion |
1136 | |||
1137 | #endregion | ||
1138 | |||
1139 | #endregion | ||
1140 | 1087 | ||
1141 | /// <summary> | 1088 | /// <summary> |
1142 | /// Set the media url for this land parcel | 1089 | /// Set the media url for this land parcel |
@@ -1157,5 +1104,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1157 | LandData.MusicURL = url; | 1104 | LandData.MusicURL = url; |
1158 | SendLandUpdateToAvatarsOverMe(); | 1105 | SendLandUpdateToAvatarsOverMe(); |
1159 | } | 1106 | } |
1107 | |||
1108 | #endregion | ||
1160 | } | 1109 | } |
1161 | } | 1110 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 35a798e..a62d6d7 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1428,20 +1428,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1428 | } | 1428 | } |
1429 | 1429 | ||
1430 | /// <summary> | 1430 | /// <summary> |
1431 | /// Recount SceneObjectPart in parcel aabb | ||
1432 | /// </summary> | ||
1433 | private void UpdateLand() | ||
1434 | { | ||
1435 | if (LandChannel != null) | ||
1436 | { | ||
1437 | if (LandChannel.IsLandPrimCountTainted()) | ||
1438 | { | ||
1439 | EventManager.TriggerParcelPrimCountUpdate(); | ||
1440 | } | ||
1441 | } | ||
1442 | } | ||
1443 | |||
1444 | /// <summary> | ||
1445 | /// Update the terrain if it needs to be updated. | 1431 | /// Update the terrain if it needs to be updated. |
1446 | /// </summary> | 1432 | /// </summary> |
1447 | private void UpdateTerrain() | 1433 | private void UpdateTerrain() |
diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs index 98e5453..a133e51 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs | |||
@@ -130,11 +130,6 @@ public class RegionCombinerLargeLandChannel : ILandChannel | |||
130 | } | 130 | } |
131 | } | 131 | } |
132 | 132 | ||
133 | public bool IsLandPrimCountTainted() | ||
134 | { | ||
135 | return RootRegionLandChannel.IsLandPrimCountTainted(); | ||
136 | } | ||
137 | |||
138 | public bool IsForcefulBansAllowed() | 133 | public bool IsForcefulBansAllowed() |
139 | { | 134 | { |
140 | return RootRegionLandChannel.IsForcefulBansAllowed(); | 135 | return RootRegionLandChannel.IsForcefulBansAllowed(); |