aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs65
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandObject.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs161
-rw-r--r--OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs61
-rw-r--r--OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs15
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs6
-rw-r--r--OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs2
-rw-r--r--OpenSim/Region/Framework/Interfaces/ILandChannel.cs91
-rw-r--r--OpenSim/Region/Framework/Interfaces/ILandObject.cs117
-rw-r--r--OpenSim/Region/Framework/Interfaces/IPrimCountModule.cs16
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs2
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/LOParcel.cs1
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs2
15 files changed, 266 insertions, 278 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index e91d37f..311b1e4 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -4337,8 +4337,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4337 OutPacket(packet, ThrottleOutPacketType.Task); 4337 OutPacket(packet, ThrottleOutPacketType.Task);
4338 } 4338 }
4339 4339
4340 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) 4340 public void SendLandProperties(
4341 int sequence_id, bool snap_selection, int request_result, ILandObject lo,
4342 float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
4341 { 4343 {
4344// m_log.DebugFormat("[LLCLIENTVIEW]: Sending land properties for {0} to {1}", lo.LandData.GlobalID, Name);
4345
4346 LandData landData = lo.LandData;
4347
4342 ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage(); 4348 ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage();
4343 4349
4344 updateMessage.AABBMax = landData.AABBMax; 4350 updateMessage.AABBMax = landData.AABBMax;
@@ -4346,15 +4352,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4346 updateMessage.Area = landData.Area; 4352 updateMessage.Area = landData.Area;
4347 updateMessage.AuctionID = landData.AuctionID; 4353 updateMessage.AuctionID = landData.AuctionID;
4348 updateMessage.AuthBuyerID = landData.AuthBuyerID; 4354 updateMessage.AuthBuyerID = landData.AuthBuyerID;
4349
4350 updateMessage.Bitmap = landData.Bitmap; 4355 updateMessage.Bitmap = landData.Bitmap;
4351
4352 updateMessage.Desc = landData.Description; 4356 updateMessage.Desc = landData.Description;
4353 updateMessage.Category = landData.Category; 4357 updateMessage.Category = landData.Category;
4354 updateMessage.ClaimDate = Util.ToDateTime(landData.ClaimDate); 4358 updateMessage.ClaimDate = Util.ToDateTime(landData.ClaimDate);
4355 updateMessage.ClaimPrice = landData.ClaimPrice; 4359 updateMessage.ClaimPrice = landData.ClaimPrice;
4356 updateMessage.GroupID = landData.GroupID; 4360 updateMessage.GroupID = landData.GroupID;
4357 updateMessage.GroupPrims = landData.GroupPrims;
4358 updateMessage.IsGroupOwned = landData.IsGroupOwned; 4361 updateMessage.IsGroupOwned = landData.IsGroupOwned;
4359 updateMessage.LandingType = (LandingType) landData.LandingType; 4362 updateMessage.LandingType = (LandingType) landData.LandingType;
4360 updateMessage.LocalID = landData.LocalID; 4363 updateMessage.LocalID = landData.LocalID;
@@ -4375,9 +4378,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4375 updateMessage.Name = landData.Name; 4378 updateMessage.Name = landData.Name;
4376 updateMessage.OtherCleanTime = landData.OtherCleanTime; 4379 updateMessage.OtherCleanTime = landData.OtherCleanTime;
4377 updateMessage.OtherCount = 0; //TODO: Unimplemented 4380 updateMessage.OtherCount = 0; //TODO: Unimplemented
4378 updateMessage.OtherPrims = landData.OtherPrims; 4381 updateMessage.OwnerID = landData.OwnerID;
4379 updateMessage.OwnerID = landData.OwnerID;
4380 updateMessage.OwnerPrims = landData.OwnerPrims;
4381 updateMessage.ParcelFlags = (ParcelFlags) landData.Flags; 4382 updateMessage.ParcelFlags = (ParcelFlags) landData.Flags;
4382 updateMessage.ParcelPrimBonus = simObjectBonusFactor; 4383 updateMessage.ParcelPrimBonus = simObjectBonusFactor;
4383 updateMessage.PassHours = landData.PassHours; 4384 updateMessage.PassHours = landData.PassHours;
@@ -4392,10 +4393,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4392 4393
4393 updateMessage.RentPrice = 0; 4394 updateMessage.RentPrice = 0;
4394 updateMessage.RequestResult = (ParcelResult) request_result; 4395 updateMessage.RequestResult = (ParcelResult) request_result;
4395 updateMessage.SalePrice = landData.SalePrice; 4396 updateMessage.SalePrice = landData.SalePrice;
4396 updateMessage.SelectedPrims = landData.SelectedPrims;
4397 updateMessage.SelfCount = 0; //TODO: Unimplemented 4397 updateMessage.SelfCount = 0; //TODO: Unimplemented
4398 updateMessage.SequenceID = sequence_id; 4398 updateMessage.SequenceID = sequence_id;
4399
4399 if (landData.SimwideArea > 0) 4400 if (landData.SimwideArea > 0)
4400 { 4401 {
4401 int simulatorCapacity = (int)(((float)landData.SimwideArea / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); 4402 int simulatorCapacity = (int)(((float)landData.SimwideArea / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus);
@@ -4405,22 +4406,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4405 { 4406 {
4406 updateMessage.SimWideMaxPrims = 0; 4407 updateMessage.SimWideMaxPrims = 0;
4407 } 4408 }
4408 updateMessage.SimWideTotalPrims = landData.SimwidePrims; 4409
4409 updateMessage.SnapSelection = snap_selection; 4410 updateMessage.SnapSelection = snap_selection;
4410 updateMessage.SnapshotID = landData.SnapshotID; 4411 updateMessage.SnapshotID = landData.SnapshotID;
4411 updateMessage.Status = (ParcelStatus) landData.Status; 4412 updateMessage.Status = (ParcelStatus) landData.Status;
4412 updateMessage.TotalPrims = landData.OwnerPrims + landData.GroupPrims + landData.OtherPrims + 4413 updateMessage.UserLocation = landData.UserLocation;
4413 landData.SelectedPrims; 4414 updateMessage.UserLookAt = landData.UserLookAt;
4414 updateMessage.UserLocation = landData.UserLocation; 4415
4415 updateMessage.UserLookAt = landData.UserLookAt; 4416 updateMessage.MediaType = landData.MediaType;
4416 4417 updateMessage.MediaDesc = landData.MediaDescription;
4417 updateMessage.MediaType = landData.MediaType; 4418 updateMessage.MediaWidth = landData.MediaWidth;
4418 updateMessage.MediaDesc = landData.MediaDescription; 4419 updateMessage.MediaHeight = landData.MediaHeight;
4419 updateMessage.MediaWidth = landData.MediaWidth; 4420 updateMessage.MediaLoop = landData.MediaLoop;
4420 updateMessage.MediaHeight = landData.MediaHeight; 4421 updateMessage.ObscureMusic = landData.ObscureMusic;
4421 updateMessage.MediaLoop = landData.MediaLoop; 4422 updateMessage.ObscureMedia = landData.ObscureMedia;
4422 updateMessage.ObscureMusic = landData.ObscureMusic; 4423
4423 updateMessage.ObscureMedia = landData.ObscureMedia; 4424 IPrimCounts pc = lo.PrimCounts;
4425 updateMessage.OwnerPrims = pc.Owner;
4426 updateMessage.GroupPrims = pc.Group;
4427 updateMessage.OtherPrims = pc.Others;
4428 updateMessage.SelectedPrims = pc.Selected;
4429 updateMessage.TotalPrims = pc.Total;
4430 updateMessage.SimWideTotalPrims = pc.Simulator;
4424 4431
4425 try 4432 try
4426 { 4433 {
@@ -4428,13 +4435,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4428 if (eq != null) 4435 if (eq != null)
4429 { 4436 {
4430 eq.ParcelProperties(updateMessage, this.AgentId); 4437 eq.ParcelProperties(updateMessage, this.AgentId);
4431 } else { 4438 }
4432 m_log.Warn("No EQ Interface when sending parcel data."); 4439 else
4440 {
4441 m_log.Warn("[LLCLIENTVIEW]: No EQ Interface when sending parcel data.");
4433 } 4442 }
4434 } 4443 }
4435 catch (Exception ex) 4444 catch (Exception ex)
4436 { 4445 {
4437 m_log.Error("Unable to send parcel data via eventqueue - exception: " + ex.ToString()); 4446 m_log.Error("[LLCLIENTVIEW]: Unable to send parcel data via eventqueue - exception: " + ex.ToString());
4438 } 4447 }
4439 } 4448 }
4440 4449
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 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using Nini.Config; 30using Nini.Config;
31using OpenSim.Framework;
31using OpenSim.Region.Framework.Interfaces; 32using OpenSim.Region.Framework.Interfaces;
32using OpenSim.Region.Framework.Scenes; 33using OpenSim.Region.Framework.Scenes;
33using OpenMetaverse; 34using OpenMetaverse;
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 50040ff..b5517a1 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -722,7 +722,7 @@ namespace OpenSim.Region.CoreModules.World.Land
722 ILandObject landUnderPrim = GetLandObject(position.X, position.Y); 722 ILandObject landUnderPrim = GetLandObject(position.X, position.Y);
723 if (landUnderPrim != null) 723 if (landUnderPrim != null)
724 { 724 {
725 landUnderPrim.AddPrimToCount(obj); 725 ((LandObject)landUnderPrim).AddPrimToCount(obj);
726 } 726 }
727 } 727 }
728 728
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
index 1e824bd..e87153b 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 62fd2b0..854d1ca 100644
--- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs
@@ -45,14 +45,13 @@ namespace OpenSim.Region.CoreModules.World.Land
45 public int Owner = 0; 45 public int Owner = 0;
46 public int Group = 0; 46 public int Group = 0;
47 public int Others = 0; 47 public int Others = 0;
48 public Dictionary <UUID, int> Users = 48 public int Selected = 0;
49 new Dictionary <UUID, int>(); 49 public Dictionary <UUID, int> Users = new Dictionary <UUID, int>();
50 } 50 }
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 =
@@ -64,7 +63,6 @@ namespace OpenSim.Region.CoreModules.World.Land
64 private Dictionary<UUID, ParcelCounts> m_ParcelCounts = 63 private Dictionary<UUID, ParcelCounts> m_ParcelCounts =
65 new Dictionary<UUID, ParcelCounts>(); 64 new Dictionary<UUID, ParcelCounts>();
66 65
67
68 /// <value> 66 /// <value>
69 /// For now, a simple simwide taint to get this up. Later parcel based 67 /// For now, a simple simwide taint to get this up. Later parcel based
70 /// taint to allow recounting a parcel if only ownership has changed 68 /// taint to allow recounting a parcel if only ownership has changed
@@ -96,6 +94,7 @@ namespace OpenSim.Region.CoreModules.World.Land
96 OnObjectBeingRemovedFromScene; 94 OnObjectBeingRemovedFromScene;
97 m_Scene.EventManager.OnParcelPrimCountTainted += 95 m_Scene.EventManager.OnParcelPrimCountTainted +=
98 OnParcelPrimCountTainted; 96 OnParcelPrimCountTainted;
97 m_Scene.EventManager.OnLandObjectAdded += delegate(ILandObject lo) { OnParcelPrimCountTainted(); };
99 } 98 }
100 99
101 public void RegionLoaded(Scene scene) 100 public void RegionLoaded(Scene scene)
@@ -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;
@@ -208,16 +219,25 @@ namespace OpenSim.Region.CoreModules.World.Land
208 else 219 else
209 parcelCounts.Others += partCount; 220 parcelCounts.Others += partCount;
210 } 221 }
222
223 if (obj.IsSelected)
224 parcelCounts.Selected += partCount;
211 } 225 }
212 } 226 }
213 227
214 // NOTE: Call under Taint Lock 228 // NOTE: Call under Taint Lock
215 private void RemoveObject(SceneObjectGroup obj) 229 private void RemoveObject(SceneObjectGroup obj)
216 { 230 {
231// m_log.DebugFormat("[PRIM COUNT MODULE]: Removing object {0} {1} from prim count", obj.Name, obj.UUID);
232
233 // Currently this is being done by tainting the count instead.
217 } 234 }
218 235
219 public IPrimCounts GetPrimCounts(UUID parcelID) 236 public IPrimCounts GetPrimCounts(UUID parcelID)
220 { 237 {
238// m_log.DebugFormat(
239// "[PRIM COUNT MODULE]: GetPrimCounts for parcel {0} in {1}", parcelID, m_Scene.RegionInfo.RegionName);
240
221 PrimCounts primCounts; 241 PrimCounts primCounts;
222 242
223 lock (m_PrimCounts) 243 lock (m_PrimCounts)
@@ -239,7 +259,7 @@ namespace OpenSim.Region.CoreModules.World.Land
239 /// <returns></returns> 259 /// <returns></returns>
240 public int GetOwnerCount(UUID parcelID) 260 public int GetOwnerCount(UUID parcelID)
241 { 261 {
242// m_log.DebugFormat("[PRIM COUNT MODULE]: GetOwnerCount for {0}", parcelID); 262 int count = 0;
243 263
244 lock (m_TaintLock) 264 lock (m_TaintLock)
245 { 265 {
@@ -248,9 +268,14 @@ namespace OpenSim.Region.CoreModules.World.Land
248 268
249 ParcelCounts counts; 269 ParcelCounts counts;
250 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) 270 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
251 return counts.Owner; 271 count = counts.Owner;
252 } 272 }
253 return 0; 273
274// m_log.DebugFormat(
275// "[PRIM COUNT MODULE]: GetOwnerCount for parcel {0} in {1} returning {2}",
276// parcelID, m_Scene.RegionInfo.RegionName, count);
277
278 return count;
254 } 279 }
255 280
256 /// <summary> 281 /// <summary>
@@ -260,6 +285,8 @@ namespace OpenSim.Region.CoreModules.World.Land
260 /// <returns></returns> 285 /// <returns></returns>
261 public int GetGroupCount(UUID parcelID) 286 public int GetGroupCount(UUID parcelID)
262 { 287 {
288 int count = 0;
289
263 lock (m_TaintLock) 290 lock (m_TaintLock)
264 { 291 {
265 if (m_Tainted) 292 if (m_Tainted)
@@ -267,9 +294,14 @@ namespace OpenSim.Region.CoreModules.World.Land
267 294
268 ParcelCounts counts; 295 ParcelCounts counts;
269 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) 296 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
270 return counts.Group; 297 count = counts.Group;
271 } 298 }
272 return 0; 299
300// m_log.DebugFormat(
301// "[PRIM COUNT MODULE]: GetGroupCount for parcel {0} in {1} returning {2}",
302// parcelID, m_Scene.RegionInfo.RegionName, count);
303
304 return count;
273 } 305 }
274 306
275 /// <summary> 307 /// <summary>
@@ -279,6 +311,61 @@ namespace OpenSim.Region.CoreModules.World.Land
279 /// <returns></returns> 311 /// <returns></returns>
280 public int GetOthersCount(UUID parcelID) 312 public int GetOthersCount(UUID parcelID)
281 { 313 {
314 int count = 0;
315
316 lock (m_TaintLock)
317 {
318 if (m_Tainted)
319 Recount();
320
321 ParcelCounts counts;
322 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
323 count = counts.Others;
324 }
325
326// m_log.DebugFormat(
327// "[PRIM COUNT MODULE]: GetOthersCount for parcel {0} in {1} returning {2}",
328// parcelID, m_Scene.RegionInfo.RegionName, count);
329
330 return count;
331 }
332
333 /// <summary>
334 /// Get the number of selected prims.
335 /// </summary>
336 /// <param name="parcelID"></param>
337 /// <returns></returns>
338 public int GetSelectedCount(UUID parcelID)
339 {
340 int count = 0;
341
342 lock (m_TaintLock)
343 {
344 if (m_Tainted)
345 Recount();
346
347 ParcelCounts counts;
348 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
349 count = counts.Selected;
350 }
351
352// m_log.DebugFormat(
353// "[PRIM COUNT MODULE]: GetSelectedCount for parcel {0} in {1} returning {2}",
354// parcelID, m_Scene.RegionInfo.RegionName, count);
355
356 return count;
357 }
358
359 /// <summary>
360 /// Get the total count of owner, group and others prims on the parcel.
361 /// FIXME: Need to do selected prims once this is reimplemented.
362 /// </summary>
363 /// <param name="parcelID"></param>
364 /// <returns></returns>
365 public int GetTotalCount(UUID parcelID)
366 {
367 int count = 0;
368
282 lock (m_TaintLock) 369 lock (m_TaintLock)
283 { 370 {
284 if (m_Tainted) 371 if (m_Tainted)
@@ -286,9 +373,18 @@ namespace OpenSim.Region.CoreModules.World.Land
286 373
287 ParcelCounts counts; 374 ParcelCounts counts;
288 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) 375 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
289 return counts.Others; 376 {
377 count = counts.Owner;
378 count += counts.Group;
379 count += counts.Others;
380 }
290 } 381 }
291 return 0; 382
383// m_log.DebugFormat(
384// "[PRIM COUNT MODULE]: GetTotalCount for parcel {0} in {1} returning {2}",
385// parcelID, m_Scene.RegionInfo.RegionName, count);
386
387 return count;
292 } 388 }
293 389
294 /// <summary> 390 /// <summary>
@@ -298,6 +394,8 @@ namespace OpenSim.Region.CoreModules.World.Land
298 /// <returns></returns> 394 /// <returns></returns>
299 public int GetSimulatorCount(UUID parcelID) 395 public int GetSimulatorCount(UUID parcelID)
300 { 396 {
397 int count = 0;
398
301 lock (m_TaintLock) 399 lock (m_TaintLock)
302 { 400 {
303 if (m_Tainted) 401 if (m_Tainted)
@@ -308,10 +406,15 @@ namespace OpenSim.Region.CoreModules.World.Land
308 { 406 {
309 int val; 407 int val;
310 if (m_SimwideCounts.TryGetValue(owner, out val)) 408 if (m_SimwideCounts.TryGetValue(owner, out val))
311 return val; 409 count = val;
312 } 410 }
313 } 411 }
314 return 0; 412
413// m_log.DebugFormat(
414// "[PRIM COUNT MODULE]: GetOthersCount for parcel {0} in {1} returning {2}",
415// parcelID, m_Scene.RegionInfo.RegionName, count);
416
417 return count;
315 } 418 }
316 419
317 /// <summary> 420 /// <summary>
@@ -322,6 +425,8 @@ namespace OpenSim.Region.CoreModules.World.Land
322 /// <returns></returns> 425 /// <returns></returns>
323 public int GetUserCount(UUID parcelID, UUID userID) 426 public int GetUserCount(UUID parcelID, UUID userID)
324 { 427 {
428 int count = 0;
429
325 lock (m_TaintLock) 430 lock (m_TaintLock)
326 { 431 {
327 if (m_Tainted) 432 if (m_Tainted)
@@ -332,10 +437,15 @@ namespace OpenSim.Region.CoreModules.World.Land
332 { 437 {
333 int val; 438 int val;
334 if (counts.Users.TryGetValue(userID, out val)) 439 if (counts.Users.TryGetValue(userID, out val))
335 return val; 440 count = val;
336 } 441 }
337 } 442 }
338 return 0; 443
444// m_log.DebugFormat(
445// "[PRIM COUNT MODULE]: GetUserCount for user {0} in parcel {1} in region {2} returning {3}",
446// userID, parcelID, m_Scene.RegionInfo.RegionName, count);
447
448 return count;
339 } 449 }
340 450
341 // NOTE: This method MUST be called while holding the taint lock! 451 // NOTE: This method MUST be called while holding the taint lock!
@@ -367,6 +477,7 @@ namespace OpenSim.Region.CoreModules.World.Land
367 if (!m_OwnerMap.ContainsKey(k)) 477 if (!m_OwnerMap.ContainsKey(k))
368 m_PrimCounts.Remove(k); 478 m_PrimCounts.Remove(k);
369 } 479 }
480
370 m_Tainted = false; 481 m_Tainted = false;
371 } 482 }
372 } 483 }
@@ -408,6 +519,22 @@ namespace OpenSim.Region.CoreModules.World.Land
408 return m_Parent.GetOthersCount(m_ParcelID); 519 return m_Parent.GetOthersCount(m_ParcelID);
409 } 520 }
410 } 521 }
522
523 public int Selected
524 {
525 get
526 {
527 return m_Parent.GetSelectedCount(m_ParcelID);
528 }
529 }
530
531 public int Total
532 {
533 get
534 {
535 return m_Parent.GetTotalCount(m_ParcelID);
536 }
537 }
411 538
412 public int Simulator 539 public int Simulator
413 { 540 {
diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
index c9d393f..5a60f22 100644
--- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
+++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
@@ -78,9 +78,11 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
78 Assert.That(pc.Owner, Is.EqualTo(0)); 78 Assert.That(pc.Owner, Is.EqualTo(0));
79 Assert.That(pc.Group, Is.EqualTo(0)); 79 Assert.That(pc.Group, Is.EqualTo(0));
80 Assert.That(pc.Others, Is.EqualTo(0)); 80 Assert.That(pc.Others, Is.EqualTo(0));
81 Assert.That(pc.Total, Is.EqualTo(0));
82 Assert.That(pc.Selected, Is.EqualTo(0));
81 Assert.That(pc.Users[m_userId], Is.EqualTo(0)); 83 Assert.That(pc.Users[m_userId], Is.EqualTo(0));
82 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); 84 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
83 Assert.That(pc.Simulator, Is.EqualTo(0)); 85 Assert.That(pc.Simulator, Is.EqualTo(0));
84 86
85 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); 87 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);
86 m_scene.AddNewSceneObject(sog, false); 88 m_scene.AddNewSceneObject(sog, false);
@@ -88,6 +90,8 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
88 Assert.That(pc.Owner, Is.EqualTo(3)); 90 Assert.That(pc.Owner, Is.EqualTo(3));
89 Assert.That(pc.Group, Is.EqualTo(0)); 91 Assert.That(pc.Group, Is.EqualTo(0));
90 Assert.That(pc.Others, Is.EqualTo(0)); 92 Assert.That(pc.Others, Is.EqualTo(0));
93 Assert.That(pc.Total, Is.EqualTo(3));
94 Assert.That(pc.Selected, Is.EqualTo(0));
91 Assert.That(pc.Users[m_userId], Is.EqualTo(3)); 95 Assert.That(pc.Users[m_userId], Is.EqualTo(3));
92 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); 96 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
93 Assert.That(pc.Simulator, Is.EqualTo(3)); 97 Assert.That(pc.Simulator, Is.EqualTo(3));
@@ -99,12 +103,39 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
99 Assert.That(pc.Owner, Is.EqualTo(5)); 103 Assert.That(pc.Owner, Is.EqualTo(5));
100 Assert.That(pc.Group, Is.EqualTo(0)); 104 Assert.That(pc.Group, Is.EqualTo(0));
101 Assert.That(pc.Others, Is.EqualTo(0)); 105 Assert.That(pc.Others, Is.EqualTo(0));
106 Assert.That(pc.Total, Is.EqualTo(5));
107 Assert.That(pc.Selected, Is.EqualTo(0));
102 Assert.That(pc.Users[m_userId], Is.EqualTo(5)); 108 Assert.That(pc.Users[m_userId], Is.EqualTo(5));
103 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); 109 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
104 Assert.That(pc.Simulator, Is.EqualTo(5)); 110 Assert.That(pc.Simulator, Is.EqualTo(5));
105 } 111 }
106 112
107 /// <summary> 113 /// <summary>
114 /// Test count after a parcel owner owned copied object is added.
115 /// </summary>
116 [Test]
117 public void TestCopiedOwnerObject()
118 {
119 TestHelper.InMethod();
120// log4net.Config.XmlConfigurator.Configure();
121
122 IPrimCounts pc = m_lo.PrimCounts;
123
124 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);
125 m_scene.AddNewSceneObject(sog, false);
126 m_scene.SceneGraph.DuplicateObject(sog.LocalId, Vector3.Zero, 0, m_userId, UUID.Zero, Quaternion.Identity);
127
128 Assert.That(pc.Owner, Is.EqualTo(6));
129 Assert.That(pc.Group, Is.EqualTo(0));
130 Assert.That(pc.Others, Is.EqualTo(0));
131 Assert.That(pc.Total, Is.EqualTo(6));
132 Assert.That(pc.Selected, Is.EqualTo(0));
133 Assert.That(pc.Users[m_userId], Is.EqualTo(6));
134 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
135 Assert.That(pc.Simulator, Is.EqualTo(6));
136 }
137
138 /// <summary>
108 /// Test count after a parcel owner owned object is removed. 139 /// Test count after a parcel owner owned object is removed.
109 /// </summary> 140 /// </summary>
110 [Test] 141 [Test]
@@ -123,9 +154,35 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
123 Assert.That(pc.Owner, Is.EqualTo(1)); 154 Assert.That(pc.Owner, Is.EqualTo(1));
124 Assert.That(pc.Group, Is.EqualTo(0)); 155 Assert.That(pc.Group, Is.EqualTo(0));
125 Assert.That(pc.Others, Is.EqualTo(0)); 156 Assert.That(pc.Others, Is.EqualTo(0));
157 Assert.That(pc.Total, Is.EqualTo(1));
158 Assert.That(pc.Selected, Is.EqualTo(0));
126 Assert.That(pc.Users[m_userId], Is.EqualTo(1)); 159 Assert.That(pc.Users[m_userId], Is.EqualTo(1));
127 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); 160 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
128 Assert.That(pc.Simulator, Is.EqualTo(1)); 161 Assert.That(pc.Simulator, Is.EqualTo(1));
129 } 162 }
163
164 /// <summary>
165 /// Test the count is correct after is has been tainted.
166 /// </summary>
167 [Test]
168 public void TestTaint()
169 {
170 TestHelper.InMethod();
171 IPrimCounts pc = m_lo.PrimCounts;
172
173 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);
174 m_scene.AddNewSceneObject(sog, false);
175
176 m_pcm.TaintPrimCount();
177
178 Assert.That(pc.Owner, Is.EqualTo(3));
179 Assert.That(pc.Group, Is.EqualTo(0));
180 Assert.That(pc.Others, Is.EqualTo(0));
181 Assert.That(pc.Total, Is.EqualTo(3));
182 Assert.That(pc.Selected, Is.EqualTo(0));
183 Assert.That(pc.Users[m_userId], Is.EqualTo(3));
184 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
185 Assert.That(pc.Simulator, Is.EqualTo(3));
186 }
130 } 187 }
131} \ No newline at end of file 188} \ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs
index 6676ec8..d6fa093 100644
--- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs
+++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs
@@ -62,9 +62,20 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders
62 return LoadBitmap(new Bitmap(filename)); 62 return LoadBitmap(new Bitmap(filename));
63 } 63 }
64 64
65 public ITerrainChannel LoadFile(string filename, int x, int y, int fileWidth, int fileHeight, int w, int h) 65 public virtual ITerrainChannel LoadFile(string filename, int offsetX, int offsetY, int fileWidth, int fileHeight, int w, int h)
66 { 66 {
67 throw new NotImplementedException(); 67 Bitmap bitmap = new Bitmap(filename);
68 ITerrainChannel retval = new TerrainChannel(true);
69
70 for (int x = 0; x < retval.Width; x++)
71 {
72 for (int y = 0; y < retval.Height; y++)
73 {
74 retval[x, y] = bitmap.GetPixel(offsetX * retval.Width + x, (bitmap.Height - (retval.Height * (offsetY + 1))) + retval.Height - y - 1).GetBrightness() * 128;
75 }
76 }
77
78 return retval;
68 } 79 }
69 80
70 public virtual ITerrainChannel LoadStream(Stream stream) 81 public virtual ITerrainChannel LoadStream(Stream stream)
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
index 282e4f1..d0aa53e 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
@@ -100,9 +100,13 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
100 // service wasn't available; maybe still an old GridServer. Try the old API, though it will return only one region 100 // service wasn't available; maybe still an old GridServer. Try the old API, though it will return only one region
101 regionInfos = new List<GridRegion>(); 101 regionInfos = new List<GridRegion>();
102 GridRegion info = m_scene.GridService.GetRegionByName(m_scene.RegionInfo.ScopeID, mapName); 102 GridRegion info = m_scene.GridService.GetRegionByName(m_scene.RegionInfo.ScopeID, mapName);
103 if (info != null) regionInfos.Add(info); 103 if (info != null)
104 regionInfos.Add(info);
104 } 105 }
106 else if (regionInfos.Count == 0 && mapName.StartsWith("http://"))
107 remoteClient.SendAlertMessage("Hyperlink could not be established.");
105 108
109 //m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions", mapName, regionInfos.Count);
106 List<MapBlockData> blocks = new List<MapBlockData>(); 110 List<MapBlockData> blocks = new List<MapBlockData>();
107 111
108 MapBlockData data; 112 MapBlockData data;
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
index 5151bf0..df12d69 100644
--- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
+++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
@@ -914,7 +914,7 @@ namespace OpenSim.Region.Examples.SimpleModule
914 { 914 {
915 } 915 }
916 916
917 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) 917 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
918 { 918 {
919 } 919 }
920 920
diff --git a/OpenSim/Region/Framework/Interfaces/ILandChannel.cs b/OpenSim/Region/Framework/Interfaces/ILandChannel.cs
deleted file mode 100644
index 30bae16..0000000
--- a/OpenSim/Region/Framework/Interfaces/ILandChannel.cs
+++ /dev/null
@@ -1,91 +0,0 @@
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
28using System.Collections.Generic;
29using OpenMetaverse;
30using OpenSim.Framework;
31
32namespace OpenSim.Region.Framework.Interfaces
33{
34 public interface ILandChannel
35 {
36 /// <summary>
37 /// Get all parcels
38 /// </summary>
39 /// <returns></returns>
40 List<ILandObject> AllParcels();
41
42 /// <summary>
43 /// Get the parcel at the specified point
44 /// </summary>
45 /// <param name="x">Value between 0 - 256 on the x axis of the point</param>
46 /// <param name="y">Value between 0 - 256 on the y axis of the point</param>
47 /// <returns>Land object at the point supplied</returns>
48 ILandObject GetLandObject(int x, int y);
49
50 /// <summary>
51 /// Get the parcel at the specified point
52 /// </summary>
53 /// <param name="x">Value between 0 - 256 on the x axis of the point</param>
54 /// <param name="y">Value between 0 - 256 on the y axis of the point</param>
55 /// <returns>Land object at the point supplied</returns>
56 ILandObject GetLandObject(float x, float y);
57
58 /// <summary>
59 /// Get the parcels near the specified point
60 /// </summary>
61 /// <param name="position"></param>
62 /// <returns></returns>
63 List<ILandObject> ParcelsNearPoint(Vector3 position);
64
65 /// <summary>
66 /// Get the parcel given the land's local id.
67 /// </summary>
68 /// <param name="localID"></param>
69 /// <returns></returns>
70 ILandObject GetLandObject(int localID);
71
72 /// <summary>
73 /// Clear the land channel of all parcels.
74 /// </summary>
75 /// <param name="setupDefaultParcel">
76 /// If true, set up a default parcel covering the whole region owned by the estate owner.
77 /// </param>
78 void Clear(bool setupDefaultParcel);
79
80 bool IsLandPrimCountTainted();
81 bool IsForcefulBansAllowed();
82 void UpdateLandObject(int localID, LandData data);
83 void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient);
84 void setParcelObjectMaxOverride(overrideParcelMaxPrimCountDelegate overrideDel);
85 void setSimulatorObjectMaxOverride(overrideSimulatorMaxPrimCountDelegate overrideDel);
86 void SetParcelOtherCleanTime(IClientAPI remoteClient, int localID, int otherCleanTime);
87
88 void Join(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id);
89 void Subdivide(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id);
90 }
91}
diff --git a/OpenSim/Region/Framework/Interfaces/ILandObject.cs b/OpenSim/Region/Framework/Interfaces/ILandObject.cs
deleted file mode 100644
index 9c0abde..0000000
--- a/OpenSim/Region/Framework/Interfaces/ILandObject.cs
+++ /dev/null
@@ -1,117 +0,0 @@
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
28using System.Collections.Generic;
29using OpenMetaverse;
30using OpenSim.Framework;
31using OpenSim.Region.Framework.Scenes;
32
33namespace OpenSim.Region.Framework.Interfaces
34{
35 public delegate int overrideParcelMaxPrimCountDelegate(ILandObject obj);
36 public delegate int overrideSimulatorMaxPrimCountDelegate(ILandObject obj);
37
38 public interface ILandObject
39 {
40 int GetParcelMaxPrimCount(ILandObject thisObject);
41 int GetSimulatorMaxPrimCount(ILandObject thisObject);
42 int GetPrimsFree();
43
44 LandData LandData { get; set; }
45 bool[,] LandBitmap { get; set; }
46 UUID RegionUUID { get; }
47
48 /// <summary>
49 /// Prim counts for this land object.
50 /// </summary>
51 IPrimCounts PrimCounts { get; set; }
52
53 /// <summary>
54 /// The start point for the land object. This is the western-most point as one scans land working from
55 /// north to south.
56 /// </summary>
57 Vector3 StartPoint { get; }
58
59 /// <summary>
60 /// The end point for the land object. This is the eastern-most point as one scans land working from
61 /// south to north.
62 /// </summary>
63 Vector3 EndPoint { get; }
64
65 bool ContainsPoint(int x, int y);
66
67 ILandObject Copy();
68
69 void SendLandUpdateToAvatarsOverMe();
70
71 void SendLandProperties(int sequence_id, bool snap_selection, int request_result, IClientAPI remote_client);
72 void UpdateLandProperties(LandUpdateArgs args, IClientAPI remote_client);
73 bool IsEitherBannedOrRestricted(UUID avatar);
74 bool IsBannedFromLand(UUID avatar);
75 bool IsRestrictedFromLand(UUID avatar);
76 void SendLandUpdateToClient(IClientAPI remote_client);
77 void SendLandUpdateToClient(bool snap_selection, IClientAPI remote_client);
78 List<UUID> CreateAccessListArrayByFlag(AccessList flag);
79 void SendAccessList(UUID agentID, UUID sessionID, uint flags, int sequenceID, IClientAPI remote_client);
80 void UpdateAccessList(uint flags, UUID transactionID, int sequenceID, int sections, List<ParcelManager.ParcelAccessEntry> entries, IClientAPI remote_client);
81 void UpdateLandBitmapByteArray();
82 void SetLandBitmapFromByteArray();
83 bool[,] GetLandBitmap();
84 void ForceUpdateLandInfo();
85 void SetLandBitmap(bool[,] bitmap);
86
87 bool[,] BasicFullRegionLandBitmap();
88 bool[,] GetSquareLandBitmap(int start_x, int start_y, int end_x, int end_y);
89 bool[,] ModifyLandBitmapSquare(bool[,] land_bitmap, int start_x, int start_y, int end_x, int end_y, bool set_value);
90 bool[,] MergeLandBitmaps(bool[,] bitmap_base, bool[,] bitmap_add);
91 void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client);
92 void SendLandObjectOwners(IClientAPI remote_client);
93 void ReturnObject(SceneObjectGroup obj);
94 void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client);
95 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);
99
100 void DeedToGroup(UUID groupID);
101
102 void SetParcelObjectMaxOverride(overrideParcelMaxPrimCountDelegate overrideDel);
103 void SetSimulatorObjectMaxOverride(overrideSimulatorMaxPrimCountDelegate overrideDel);
104
105 /// <summary>
106 /// Set the media url for this land parcel
107 /// </summary>
108 /// <param name="url"></param>
109 void SetMediaUrl(string url);
110
111 /// <summary>
112 /// Set the music url for this land parcel
113 /// </summary>
114 /// <param name="url"></param>
115 void SetMusicUrl(string url);
116 }
117}
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 e2574e7..627b58f 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -1253,7 +1253,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
1253 1253
1254 } 1254 }
1255 1255
1256 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) 1256 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
1257 { 1257 {
1258 1258
1259 } 1259 }
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
28using OpenSim.Framework;
28using OpenSim.Region.Framework.Interfaces; 29using OpenSim.Region.Framework.Interfaces;
29using OpenSim.Region.Framework.Scenes; 30using 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 1ce3791..227450d 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -930,7 +930,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
930 { 930 {
931 } 931 }
932 932
933 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor,int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) 933 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor,int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
934 { 934 {
935 } 935 }
936 public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID) 936 public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID)