aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/World')
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandChannel.cs10
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs39
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandObject.cs83
3 files changed, 27 insertions, 105 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}