diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | 252 |
1 files changed, 128 insertions, 124 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index fdff61e..d2b5cb1 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -47,9 +47,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
47 | { | 47 | { |
48 | // used for caching | 48 | // used for caching |
49 | internal class ExtendedLandData { | 49 | internal class ExtendedLandData { |
50 | public LandData landData; | 50 | public LandData LandData; |
51 | public ulong regionHandle; | 51 | public ulong RegionHandle; |
52 | public uint x, y; | 52 | public uint X, Y; |
53 | } | 53 | } |
54 | 54 | ||
55 | public class LandManagementModule : INonSharedRegionModule | 55 | public class LandManagementModule : INonSharedRegionModule |
@@ -191,7 +191,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
191 | { | 191 | { |
192 | if (m_landList.ContainsKey(local_id)) | 192 | if (m_landList.ContainsKey(local_id)) |
193 | { | 193 | { |
194 | m_landList[local_id].landData = newData; | 194 | m_landList[local_id].LandData = newData; |
195 | m_scene.EventManager.TriggerLandObjectUpdated((uint)local_id, m_landList[local_id]); | 195 | m_scene.EventManager.TriggerLandObjectUpdated((uint)local_id, m_landList[local_id]); |
196 | } | 196 | } |
197 | } | 197 | } |
@@ -218,12 +218,12 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
218 | 218 | ||
219 | ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); | 219 | ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); |
220 | 220 | ||
221 | fullSimParcel.setLandBitmap(fullSimParcel.getSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); | 221 | fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); |
222 | if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) | 222 | if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) |
223 | fullSimParcel.landData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | 223 | fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; |
224 | else | 224 | else |
225 | fullSimParcel.landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; | 225 | fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; |
226 | fullSimParcel.landData.ClaimDate = Util.UnixTimeSinceEpoch(); | 226 | fullSimParcel.LandData.ClaimDate = Util.UnixTimeSinceEpoch(); |
227 | AddLandObject(fullSimParcel); | 227 | AddLandObject(fullSimParcel); |
228 | } | 228 | } |
229 | 229 | ||
@@ -289,11 +289,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
289 | { | 289 | { |
290 | if (avatar.AbsolutePosition.Z < LandChannel.BAN_LINE_SAFETY_HIEGHT) | 290 | if (avatar.AbsolutePosition.Z < LandChannel.BAN_LINE_SAFETY_HIEGHT) |
291 | { | 291 | { |
292 | if (parcelAvatarIsEntering.isBannedFromLand(avatar.UUID)) | 292 | if (parcelAvatarIsEntering.IsBannedFromLand(avatar.UUID)) |
293 | { | 293 | { |
294 | SendYouAreBannedNotice(avatar); | 294 | SendYouAreBannedNotice(avatar); |
295 | } | 295 | } |
296 | else if (parcelAvatarIsEntering.isRestrictedFromLand(avatar.UUID)) | 296 | else if (parcelAvatarIsEntering.IsRestrictedFromLand(avatar.UUID)) |
297 | { | 297 | { |
298 | avatar.ControllingClient.SendAlertMessage( | 298 | avatar.ControllingClient.SendAlertMessage( |
299 | "You are not allowed on this parcel because the land owner has restricted access. For now, you can enter, but please respect the land owner's decisions (or he can ban you!)."); | 299 | "You are not allowed on this parcel because the land owner has restricted access. For now, you can enter, but please respect the land owner's decisions (or he can ban you!)."); |
@@ -321,14 +321,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
321 | List<ILandObject> checkLandParcels = ParcelsNearPoint(presence.AbsolutePosition); | 321 | List<ILandObject> checkLandParcels = ParcelsNearPoint(presence.AbsolutePosition); |
322 | foreach (ILandObject checkBan in checkLandParcels) | 322 | foreach (ILandObject checkBan in checkLandParcels) |
323 | { | 323 | { |
324 | if (checkBan.isBannedFromLand(avatar.AgentId)) | 324 | if (checkBan.IsBannedFromLand(avatar.AgentId)) |
325 | { | 325 | { |
326 | checkBan.sendLandProperties((int)ParcelPropertiesStatus.CollisionBanned, false, (int)ParcelResult.Single, avatar); | 326 | checkBan.SendLandProperties((int)ParcelPropertiesStatus.CollisionBanned, false, (int)ParcelResult.Single, avatar); |
327 | return; //Only send one | 327 | return; //Only send one |
328 | } | 328 | } |
329 | if (checkBan.isRestrictedFromLand(avatar.AgentId)) | 329 | if (checkBan.IsRestrictedFromLand(avatar.AgentId)) |
330 | { | 330 | { |
331 | checkBan.sendLandProperties((int)ParcelPropertiesStatus.CollisionNotOnAccessList, false, (int)ParcelResult.Single, avatar); | 331 | checkBan.SendLandProperties((int)ParcelPropertiesStatus.CollisionNotOnAccessList, false, (int)ParcelResult.Single, avatar); |
332 | return; //Only send one | 332 | return; //Only send one |
333 | } | 333 | } |
334 | } | 334 | } |
@@ -348,19 +348,19 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
348 | { | 348 | { |
349 | if (!avatar.IsChildAgent) | 349 | if (!avatar.IsChildAgent) |
350 | { | 350 | { |
351 | over.sendLandUpdateToClient(avatar.ControllingClient); | 351 | over.SendLandUpdateToClient(avatar.ControllingClient); |
352 | m_scene.EventManager.TriggerAvatarEnteringNewParcel(avatar, over.landData.LocalID, | 352 | m_scene.EventManager.TriggerAvatarEnteringNewParcel(avatar, over.LandData.LocalID, |
353 | m_scene.RegionInfo.RegionID); | 353 | m_scene.RegionInfo.RegionID); |
354 | } | 354 | } |
355 | } | 355 | } |
356 | 356 | ||
357 | if (avatar.currentParcelUUID != over.landData.GlobalID) | 357 | if (avatar.currentParcelUUID != over.LandData.GlobalID) |
358 | { | 358 | { |
359 | if (!avatar.IsChildAgent) | 359 | if (!avatar.IsChildAgent) |
360 | { | 360 | { |
361 | over.sendLandUpdateToClient(avatar.ControllingClient); | 361 | over.SendLandUpdateToClient(avatar.ControllingClient); |
362 | avatar.currentParcelUUID = over.landData.GlobalID; | 362 | avatar.currentParcelUUID = over.LandData.GlobalID; |
363 | m_scene.EventManager.TriggerAvatarEnteringNewParcel(avatar, over.landData.LocalID, | 363 | m_scene.EventManager.TriggerAvatarEnteringNewParcel(avatar, over.LandData.LocalID, |
364 | m_scene.RegionInfo.RegionID); | 364 | m_scene.RegionInfo.RegionID); |
365 | } | 365 | } |
366 | } | 366 | } |
@@ -386,16 +386,16 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
386 | if (clientAvatar.AbsolutePosition.Z < LandChannel.BAN_LINE_SAFETY_HIEGHT && | 386 | if (clientAvatar.AbsolutePosition.Z < LandChannel.BAN_LINE_SAFETY_HIEGHT && |
387 | clientAvatar.sentMessageAboutRestrictedParcelFlyingDown) | 387 | clientAvatar.sentMessageAboutRestrictedParcelFlyingDown) |
388 | { | 388 | { |
389 | EventManagerOnAvatarEnteringNewParcel(clientAvatar, parcel.landData.LocalID, | 389 | EventManagerOnAvatarEnteringNewParcel(clientAvatar, parcel.LandData.LocalID, |
390 | m_scene.RegionInfo.RegionID); | 390 | m_scene.RegionInfo.RegionID); |
391 | //They are going under the safety line! | 391 | //They are going under the safety line! |
392 | if (!parcel.isBannedFromLand(clientAvatar.UUID)) | 392 | if (!parcel.IsBannedFromLand(clientAvatar.UUID)) |
393 | { | 393 | { |
394 | clientAvatar.sentMessageAboutRestrictedParcelFlyingDown = false; | 394 | clientAvatar.sentMessageAboutRestrictedParcelFlyingDown = false; |
395 | } | 395 | } |
396 | } | 396 | } |
397 | else if (clientAvatar.AbsolutePosition.Z < LandChannel.BAN_LINE_SAFETY_HIEGHT && | 397 | else if (clientAvatar.AbsolutePosition.Z < LandChannel.BAN_LINE_SAFETY_HIEGHT && |
398 | parcel.isBannedFromLand(clientAvatar.UUID)) | 398 | parcel.IsBannedFromLand(clientAvatar.UUID)) |
399 | { | 399 | { |
400 | SendYouAreBannedNotice(clientAvatar); | 400 | SendYouAreBannedNotice(clientAvatar); |
401 | } | 401 | } |
@@ -409,7 +409,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
409 | ILandObject over = GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y); | 409 | ILandObject over = GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y); |
410 | if (over != null) | 410 | if (over != null) |
411 | { | 411 | { |
412 | if (!over.isBannedFromLand(avatar.UUID) || avatar.AbsolutePosition.Z >= LandChannel.BAN_LINE_SAFETY_HIEGHT) | 412 | if (!over.IsBannedFromLand(avatar.UUID) || avatar.AbsolutePosition.Z >= LandChannel.BAN_LINE_SAFETY_HIEGHT) |
413 | { | 413 | { |
414 | avatar.lastKnownAllowedPosition = | 414 | avatar.lastKnownAllowedPosition = |
415 | new Vector3(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y, avatar.AbsolutePosition.Z); | 415 | new Vector3(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y, avatar.AbsolutePosition.Z); |
@@ -429,7 +429,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
429 | 429 | ||
430 | if (land != null) | 430 | if (land != null) |
431 | { | 431 | { |
432 | m_landList[landLocalID].sendAccessList(agentID, sessionID, flags, sequenceID, remote_client); | 432 | m_landList[landLocalID].SendAccessList(agentID, sessionID, flags, sequenceID, remote_client); |
433 | } | 433 | } |
434 | } | 434 | } |
435 | 435 | ||
@@ -445,9 +445,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
445 | 445 | ||
446 | if (land != null) | 446 | if (land != null) |
447 | { | 447 | { |
448 | if (agentID == land.landData.OwnerID) | 448 | if (agentID == land.LandData.OwnerID) |
449 | { | 449 | { |
450 | land.updateAccessList(flags, entries, remote_client); | 450 | land.UpdateAccessList(flags, entries, remote_client); |
451 | } | 451 | } |
452 | } | 452 | } |
453 | else | 453 | else |
@@ -476,9 +476,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
476 | lock (m_landList) | 476 | lock (m_landList) |
477 | { | 477 | { |
478 | int newLandLocalID = ++m_lastLandLocalID; | 478 | int newLandLocalID = ++m_lastLandLocalID; |
479 | new_land.landData.LocalID = newLandLocalID; | 479 | new_land.LandData.LocalID = newLandLocalID; |
480 | 480 | ||
481 | bool[,] landBitmap = new_land.getLandBitmap(); | 481 | bool[,] landBitmap = new_land.GetLandBitmap(); |
482 | for (int x = 0; x < landArrayMax; x++) | 482 | for (int x = 0; x < landArrayMax; x++) |
483 | { | 483 | { |
484 | for (int y = 0; y < landArrayMax; y++) | 484 | for (int y = 0; y < landArrayMax; y++) |
@@ -493,7 +493,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
493 | m_landList.Add(newLandLocalID, new_land); | 493 | m_landList.Add(newLandLocalID, new_land); |
494 | } | 494 | } |
495 | 495 | ||
496 | new_land.forceUpdateLandInfo(); | 496 | new_land.ForceUpdateLandInfo(); |
497 | m_scene.EventManager.TriggerLandObjectAdded(new_land); | 497 | m_scene.EventManager.TriggerLandObjectAdded(new_land); |
498 | return new_land; | 498 | return new_land; |
499 | } | 499 | } |
@@ -520,14 +520,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
520 | } | 520 | } |
521 | } | 521 | } |
522 | 522 | ||
523 | m_scene.EventManager.TriggerLandObjectRemoved(m_landList[local_id].landData.GlobalID); | 523 | m_scene.EventManager.TriggerLandObjectRemoved(m_landList[local_id].LandData.GlobalID); |
524 | m_landList.Remove(local_id); | 524 | m_landList.Remove(local_id); |
525 | } | 525 | } |
526 | } | 526 | } |
527 | 527 | ||
528 | private void performFinalLandJoin(ILandObject master, ILandObject slave) | 528 | private void performFinalLandJoin(ILandObject master, ILandObject slave) |
529 | { | 529 | { |
530 | bool[,] landBitmapSlave = slave.getLandBitmap(); | 530 | bool[,] landBitmapSlave = slave.GetLandBitmap(); |
531 | lock (m_landList) | 531 | lock (m_landList) |
532 | { | 532 | { |
533 | for (int x = 0; x < 64; x++) | 533 | for (int x = 0; x < 64; x++) |
@@ -536,14 +536,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
536 | { | 536 | { |
537 | if (landBitmapSlave[x, y]) | 537 | if (landBitmapSlave[x, y]) |
538 | { | 538 | { |
539 | m_landIDList[x, y] = master.landData.LocalID; | 539 | m_landIDList[x, y] = master.LandData.LocalID; |
540 | } | 540 | } |
541 | } | 541 | } |
542 | } | 542 | } |
543 | } | 543 | } |
544 | 544 | ||
545 | removeLandObject(slave.landData.LocalID); | 545 | removeLandObject(slave.LandData.LocalID); |
546 | UpdateLandObject(master.landData.LocalID, master.landData); | 546 | UpdateLandObject(master.LandData.LocalID, master.LandData); |
547 | } | 547 | } |
548 | 548 | ||
549 | public ILandObject GetLandObject(int parcelLocalID) | 549 | public ILandObject GetLandObject(int parcelLocalID) |
@@ -630,7 +630,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
630 | { | 630 | { |
631 | foreach (LandObject p in m_landList.Values) | 631 | foreach (LandObject p in m_landList.Values) |
632 | { | 632 | { |
633 | p.resetLandPrimCounts(); | 633 | p.ResetLandPrimCounts(); |
634 | } | 634 | } |
635 | } | 635 | } |
636 | } | 636 | } |
@@ -651,7 +651,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
651 | ILandObject landUnderPrim = GetLandObject(position.X, position.Y); | 651 | ILandObject landUnderPrim = GetLandObject(position.X, position.Y); |
652 | if (landUnderPrim != null) | 652 | if (landUnderPrim != null) |
653 | { | 653 | { |
654 | landUnderPrim.addPrimToCount(obj); | 654 | landUnderPrim.AddPrimToCount(obj); |
655 | } | 655 | } |
656 | } | 656 | } |
657 | 657 | ||
@@ -662,7 +662,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
662 | { | 662 | { |
663 | foreach (LandObject p in m_landList.Values) | 663 | foreach (LandObject p in m_landList.Values) |
664 | { | 664 | { |
665 | p.removePrimFromCount(obj); | 665 | p.RemovePrimFromCount(obj); |
666 | } | 666 | } |
667 | } | 667 | } |
668 | } | 668 | } |
@@ -675,15 +675,15 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
675 | { | 675 | { |
676 | foreach (LandObject p in m_landList.Values) | 676 | foreach (LandObject p in m_landList.Values) |
677 | { | 677 | { |
678 | if (!landOwnersAndParcels.ContainsKey(p.landData.OwnerID)) | 678 | if (!landOwnersAndParcels.ContainsKey(p.LandData.OwnerID)) |
679 | { | 679 | { |
680 | List<LandObject> tempList = new List<LandObject>(); | 680 | List<LandObject> tempList = new List<LandObject>(); |
681 | tempList.Add(p); | 681 | tempList.Add(p); |
682 | landOwnersAndParcels.Add(p.landData.OwnerID, tempList); | 682 | landOwnersAndParcels.Add(p.LandData.OwnerID, tempList); |
683 | } | 683 | } |
684 | else | 684 | else |
685 | { | 685 | { |
686 | landOwnersAndParcels[p.landData.OwnerID].Add(p); | 686 | landOwnersAndParcels[p.LandData.OwnerID].Add(p); |
687 | } | 687 | } |
688 | } | 688 | } |
689 | } | 689 | } |
@@ -694,15 +694,15 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
694 | int simPrims = 0; | 694 | int simPrims = 0; |
695 | foreach (LandObject p in landOwnersAndParcels[owner]) | 695 | foreach (LandObject p in landOwnersAndParcels[owner]) |
696 | { | 696 | { |
697 | simArea += p.landData.Area; | 697 | simArea += p.LandData.Area; |
698 | simPrims += p.landData.OwnerPrims + p.landData.OtherPrims + p.landData.GroupPrims + | 698 | simPrims += p.LandData.OwnerPrims + p.LandData.OtherPrims + p.LandData.GroupPrims + |
699 | p.landData.SelectedPrims; | 699 | p.LandData.SelectedPrims; |
700 | } | 700 | } |
701 | 701 | ||
702 | foreach (LandObject p in landOwnersAndParcels[owner]) | 702 | foreach (LandObject p in landOwnersAndParcels[owner]) |
703 | { | 703 | { |
704 | p.landData.SimwideArea = simArea; | 704 | p.LandData.SimwideArea = simArea; |
705 | p.landData.SimwidePrims = simPrims; | 705 | p.LandData.SimwidePrims = simPrims; |
706 | } | 706 | } |
707 | } | 707 | } |
708 | } | 708 | } |
@@ -779,26 +779,26 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
779 | 779 | ||
780 | //Lets create a new land object with bitmap activated at that point (keeping the old land objects info) | 780 | //Lets create a new land object with bitmap activated at that point (keeping the old land objects info) |
781 | ILandObject newLand = startLandObject.Copy(); | 781 | ILandObject newLand = startLandObject.Copy(); |
782 | newLand.landData.Name = newLand.landData.Name; | 782 | newLand.LandData.Name = newLand.LandData.Name; |
783 | newLand.landData.GlobalID = UUID.Random(); | 783 | newLand.LandData.GlobalID = UUID.Random(); |
784 | 784 | ||
785 | newLand.setLandBitmap(newLand.getSquareLandBitmap(start_x, start_y, end_x, end_y)); | 785 | newLand.SetLandBitmap(newLand.GetSquareLandBitmap(start_x, start_y, end_x, end_y)); |
786 | 786 | ||
787 | //Now, lets set the subdivision area of the original to false | 787 | //Now, lets set the subdivision area of the original to false |
788 | int startLandObjectIndex = startLandObject.landData.LocalID; | 788 | int startLandObjectIndex = startLandObject.LandData.LocalID; |
789 | lock (m_landList) | 789 | lock (m_landList) |
790 | { | 790 | { |
791 | m_landList[startLandObjectIndex].setLandBitmap( | 791 | m_landList[startLandObjectIndex].SetLandBitmap( |
792 | newLand.modifyLandBitmapSquare(startLandObject.getLandBitmap(), start_x, start_y, end_x, end_y, false)); | 792 | newLand.ModifyLandBitmapSquare(startLandObject.GetLandBitmap(), start_x, start_y, end_x, end_y, false)); |
793 | m_landList[startLandObjectIndex].forceUpdateLandInfo(); | 793 | m_landList[startLandObjectIndex].ForceUpdateLandInfo(); |
794 | } | 794 | } |
795 | 795 | ||
796 | EventManagerOnParcelPrimCountTainted(); | 796 | EventManagerOnParcelPrimCountTainted(); |
797 | 797 | ||
798 | //Now add the new land object | 798 | //Now add the new land object |
799 | ILandObject result = AddLandObject(newLand); | 799 | ILandObject result = AddLandObject(newLand); |
800 | UpdateLandObject(startLandObject.landData.LocalID, startLandObject.landData); | 800 | UpdateLandObject(startLandObject.LandData.LocalID, startLandObject.LandData); |
801 | result.sendLandUpdateToAvatarsOverMe(); | 801 | result.SendLandUpdateToAvatarsOverMe(); |
802 | } | 802 | } |
803 | 803 | ||
804 | /// <summary> | 804 | /// <summary> |
@@ -846,7 +846,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
846 | } | 846 | } |
847 | foreach (ILandObject p in selectedLandObjects) | 847 | foreach (ILandObject p in selectedLandObjects) |
848 | { | 848 | { |
849 | if (p.landData.OwnerID != masterLandObject.landData.OwnerID) | 849 | if (p.LandData.OwnerID != masterLandObject.LandData.OwnerID) |
850 | { | 850 | { |
851 | return; | 851 | return; |
852 | } | 852 | } |
@@ -856,14 +856,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
856 | { | 856 | { |
857 | foreach (ILandObject slaveLandObject in selectedLandObjects) | 857 | foreach (ILandObject slaveLandObject in selectedLandObjects) |
858 | { | 858 | { |
859 | m_landList[masterLandObject.landData.LocalID].setLandBitmap( | 859 | m_landList[masterLandObject.LandData.LocalID].SetLandBitmap( |
860 | slaveLandObject.mergeLandBitmaps(masterLandObject.getLandBitmap(), slaveLandObject.getLandBitmap())); | 860 | slaveLandObject.MergeLandBitmaps(masterLandObject.GetLandBitmap(), slaveLandObject.GetLandBitmap())); |
861 | performFinalLandJoin(masterLandObject, slaveLandObject); | 861 | performFinalLandJoin(masterLandObject, slaveLandObject); |
862 | } | 862 | } |
863 | } | 863 | } |
864 | EventManagerOnParcelPrimCountTainted(); | 864 | EventManagerOnParcelPrimCountTainted(); |
865 | 865 | ||
866 | masterLandObject.sendLandUpdateToAvatarsOverMe(); | 866 | masterLandObject.SendLandUpdateToAvatarsOverMe(); |
867 | } | 867 | } |
868 | 868 | ||
869 | #endregion | 869 | #endregion |
@@ -894,19 +894,19 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
894 | 894 | ||
895 | if (currentParcelBlock != null) | 895 | if (currentParcelBlock != null) |
896 | { | 896 | { |
897 | if (currentParcelBlock.landData.OwnerID == remote_client.AgentId) | 897 | if (currentParcelBlock.LandData.OwnerID == remote_client.AgentId) |
898 | { | 898 | { |
899 | //Owner Flag | 899 | //Owner Flag |
900 | tempByte = Convert.ToByte(tempByte | LandChannel.LAND_TYPE_OWNED_BY_REQUESTER); | 900 | tempByte = Convert.ToByte(tempByte | LandChannel.LAND_TYPE_OWNED_BY_REQUESTER); |
901 | } | 901 | } |
902 | else if (currentParcelBlock.landData.SalePrice > 0 && | 902 | else if (currentParcelBlock.LandData.SalePrice > 0 && |
903 | (currentParcelBlock.landData.AuthBuyerID == UUID.Zero || | 903 | (currentParcelBlock.LandData.AuthBuyerID == UUID.Zero || |
904 | currentParcelBlock.landData.AuthBuyerID == remote_client.AgentId)) | 904 | currentParcelBlock.LandData.AuthBuyerID == remote_client.AgentId)) |
905 | { | 905 | { |
906 | //Sale Flag | 906 | //Sale Flag |
907 | tempByte = Convert.ToByte(tempByte | LandChannel.LAND_TYPE_IS_FOR_SALE); | 907 | tempByte = Convert.ToByte(tempByte | LandChannel.LAND_TYPE_IS_FOR_SALE); |
908 | } | 908 | } |
909 | else if (currentParcelBlock.landData.OwnerID == UUID.Zero) | 909 | else if (currentParcelBlock.LandData.OwnerID == UUID.Zero) |
910 | { | 910 | { |
911 | //Public Flag | 911 | //Public Flag |
912 | tempByte = Convert.ToByte(tempByte | LandChannel.LAND_TYPE_PUBLIC); | 912 | tempByte = Convert.ToByte(tempByte | LandChannel.LAND_TYPE_PUBLIC); |
@@ -980,7 +980,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
980 | { | 980 | { |
981 | if (!temp.Contains(currentParcel)) | 981 | if (!temp.Contains(currentParcel)) |
982 | { | 982 | { |
983 | currentParcel.forceUpdateLandInfo(); | 983 | currentParcel.ForceUpdateLandInfo(); |
984 | temp.Add(currentParcel); | 984 | temp.Add(currentParcel); |
985 | } | 985 | } |
986 | } | 986 | } |
@@ -996,7 +996,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
996 | 996 | ||
997 | for (int i = 0; i < temp.Count; i++) | 997 | for (int i = 0; i < temp.Count; i++) |
998 | { | 998 | { |
999 | temp[i].sendLandProperties(sequence_id, snap_selection, requestResult, remote_client); | 999 | temp[i].SendLandProperties(sequence_id, snap_selection, requestResult, remote_client); |
1000 | } | 1000 | } |
1001 | 1001 | ||
1002 | SendParcelOverlay(remote_client); | 1002 | SendParcelOverlay(remote_client); |
@@ -1010,7 +1010,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1010 | m_landList.TryGetValue(localID, out land); | 1010 | m_landList.TryGetValue(localID, out land); |
1011 | } | 1011 | } |
1012 | 1012 | ||
1013 | if (land != null) land.updateLandProperties(args, remote_client); | 1013 | if (land != null) land.UpdateLandProperties(args, remote_client); |
1014 | } | 1014 | } |
1015 | 1015 | ||
1016 | public void ClientOnParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client) | 1016 | public void ClientOnParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client) |
@@ -1026,7 +1026,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1026 | public void ClientOnParcelSelectObjects(int local_id, int request_type, | 1026 | public void ClientOnParcelSelectObjects(int local_id, int request_type, |
1027 | List<UUID> returnIDs, IClientAPI remote_client) | 1027 | List<UUID> returnIDs, IClientAPI remote_client) |
1028 | { | 1028 | { |
1029 | m_landList[local_id].sendForceObjectSelect(local_id, request_type, returnIDs, remote_client); | 1029 | m_landList[local_id].SendForceObjectSelect(local_id, request_type, returnIDs, remote_client); |
1030 | } | 1030 | } |
1031 | 1031 | ||
1032 | public void ClientOnParcelObjectOwnerRequest(int local_id, IClientAPI remote_client) | 1032 | public void ClientOnParcelObjectOwnerRequest(int local_id, IClientAPI remote_client) |
@@ -1039,7 +1039,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1039 | 1039 | ||
1040 | if (land != null) | 1040 | if (land != null) |
1041 | { | 1041 | { |
1042 | m_landList[local_id].sendLandObjectOwners(remote_client); | 1042 | m_landList[local_id].SendLandObjectOwners(remote_client); |
1043 | } | 1043 | } |
1044 | else | 1044 | else |
1045 | { | 1045 | { |
@@ -1059,10 +1059,10 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1059 | { | 1059 | { |
1060 | if (m_scene.Permissions.IsGod(remote_client.AgentId)) | 1060 | if (m_scene.Permissions.IsGod(remote_client.AgentId)) |
1061 | { | 1061 | { |
1062 | land.landData.OwnerID = ownerID; | 1062 | land.LandData.OwnerID = ownerID; |
1063 | 1063 | ||
1064 | m_scene.Broadcast(SendParcelOverlay); | 1064 | m_scene.Broadcast(SendParcelOverlay); |
1065 | land.sendLandUpdateToClient(remote_client); | 1065 | land.SendLandUpdateToClient(remote_client); |
1066 | } | 1066 | } |
1067 | } | 1067 | } |
1068 | } | 1068 | } |
@@ -1080,11 +1080,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1080 | if (m_scene.Permissions.CanAbandonParcel(remote_client.AgentId, land)) | 1080 | if (m_scene.Permissions.CanAbandonParcel(remote_client.AgentId, land)) |
1081 | { | 1081 | { |
1082 | if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) | 1082 | if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) |
1083 | land.landData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | 1083 | land.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; |
1084 | else | 1084 | else |
1085 | land.landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; | 1085 | land.LandData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; |
1086 | m_scene.Broadcast(SendParcelOverlay); | 1086 | m_scene.Broadcast(SendParcelOverlay); |
1087 | land.sendLandUpdateToClient(remote_client); | 1087 | land.SendLandUpdateToClient(remote_client); |
1088 | } | 1088 | } |
1089 | } | 1089 | } |
1090 | } | 1090 | } |
@@ -1102,13 +1102,13 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1102 | if (m_scene.Permissions.CanReclaimParcel(remote_client.AgentId, land)) | 1102 | if (m_scene.Permissions.CanReclaimParcel(remote_client.AgentId, land)) |
1103 | { | 1103 | { |
1104 | if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) | 1104 | if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) |
1105 | land.landData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | 1105 | land.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; |
1106 | else | 1106 | else |
1107 | land.landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; | 1107 | land.LandData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; |
1108 | land.landData.ClaimDate = Util.UnixTimeSinceEpoch(); | 1108 | land.LandData.ClaimDate = Util.UnixTimeSinceEpoch(); |
1109 | land.landData.IsGroupOwned = false; | 1109 | land.LandData.IsGroupOwned = false; |
1110 | m_scene.Broadcast(SendParcelOverlay); | 1110 | m_scene.Broadcast(SendParcelOverlay); |
1111 | land.sendLandUpdateToClient(remote_client); | 1111 | land.SendLandUpdateToClient(remote_client); |
1112 | } | 1112 | } |
1113 | } | 1113 | } |
1114 | } | 1114 | } |
@@ -1130,7 +1130,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1130 | 1130 | ||
1131 | if (land != null) | 1131 | if (land != null) |
1132 | { | 1132 | { |
1133 | land.updateLandSold(e.agentId, e.groupId, e.groupOwned, (uint)e.transactionID, e.parcelPrice, e.parcelArea); | 1133 | land.UpdateLandSold(e.agentId, e.groupId, e.groupOwned, (uint)e.transactionID, e.parcelPrice, e.parcelArea); |
1134 | } | 1134 | } |
1135 | } | 1135 | } |
1136 | } | 1136 | } |
@@ -1151,11 +1151,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1151 | 1151 | ||
1152 | if (lob != null) | 1152 | if (lob != null) |
1153 | { | 1153 | { |
1154 | UUID AuthorizedID = lob.landData.AuthBuyerID; | 1154 | UUID AuthorizedID = lob.LandData.AuthBuyerID; |
1155 | int saleprice = lob.landData.SalePrice; | 1155 | int saleprice = lob.LandData.SalePrice; |
1156 | UUID pOwnerID = lob.landData.OwnerID; | 1156 | UUID pOwnerID = lob.LandData.OwnerID; |
1157 | 1157 | ||
1158 | bool landforsale = ((lob.landData.Flags & | 1158 | bool landforsale = ((lob.LandData.Flags & |
1159 | (uint)(ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects)) != 0); | 1159 | (uint)(ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects)) != 0); |
1160 | if ((AuthorizedID == UUID.Zero || AuthorizedID == e.agentId) && e.parcelPrice >= saleprice && landforsale) | 1160 | if ((AuthorizedID == UUID.Zero || AuthorizedID == e.agentId) && e.parcelPrice >= saleprice && landforsale) |
1161 | { | 1161 | { |
@@ -1184,7 +1184,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1184 | 1184 | ||
1185 | if (land != null) | 1185 | if (land != null) |
1186 | { | 1186 | { |
1187 | land.deedToGroup(groupID); | 1187 | land.DeedToGroup(groupID); |
1188 | } | 1188 | } |
1189 | 1189 | ||
1190 | } | 1190 | } |
@@ -1203,8 +1203,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1203 | public void IncomingLandObjectFromStorage(LandData data) | 1203 | public void IncomingLandObjectFromStorage(LandData data) |
1204 | { | 1204 | { |
1205 | ILandObject new_land = new LandObject(data.OwnerID, data.IsGroupOwned, m_scene); | 1205 | ILandObject new_land = new LandObject(data.OwnerID, data.IsGroupOwned, m_scene); |
1206 | new_land.landData = data.Copy(); | 1206 | new_land.LandData = data.Copy(); |
1207 | new_land.setLandBitmapFromByteArray(); | 1207 | new_land.SetLandBitmapFromByteArray(); |
1208 | AddLandObject(new_land); | 1208 | AddLandObject(new_land); |
1209 | } | 1209 | } |
1210 | 1210 | ||
@@ -1218,7 +1218,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1218 | 1218 | ||
1219 | if (selectedParcel == null) return; | 1219 | if (selectedParcel == null) return; |
1220 | 1220 | ||
1221 | selectedParcel.returnLandObjects(returnType, agentIDs, taskIDs, remoteClient); | 1221 | selectedParcel.ReturnLandObjects(returnType, agentIDs, taskIDs, remoteClient); |
1222 | } | 1222 | } |
1223 | 1223 | ||
1224 | public void EventManagerOnNoLandDataFromStorage() | 1224 | public void EventManagerOnNoLandDataFromStorage() |
@@ -1234,7 +1234,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1234 | { | 1234 | { |
1235 | foreach (LandObject obj in m_landList.Values) | 1235 | foreach (LandObject obj in m_landList.Values) |
1236 | { | 1236 | { |
1237 | obj.setParcelObjectMaxOverride(overrideDel); | 1237 | obj.SetParcelObjectMaxOverride(overrideDel); |
1238 | } | 1238 | } |
1239 | } | 1239 | } |
1240 | } | 1240 | } |
@@ -1337,7 +1337,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1337 | return; | 1337 | return; |
1338 | } | 1338 | } |
1339 | 1339 | ||
1340 | remoteClient.SendParcelDwellReply(localID, selectedParcel.landData.GlobalID, selectedParcel.landData.Dwell); | 1340 | remoteClient.SendParcelDwellReply(localID, selectedParcel.LandData.GlobalID, selectedParcel.LandData.Dwell); |
1341 | } | 1341 | } |
1342 | 1342 | ||
1343 | private void ClientOnParcelInfoRequest(IClientAPI remoteClient, UUID parcelID) | 1343 | private void ClientOnParcelInfoRequest(IClientAPI remoteClient, UUID parcelID) |
@@ -1345,39 +1345,43 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1345 | if (parcelID == UUID.Zero) | 1345 | if (parcelID == UUID.Zero) |
1346 | return; | 1346 | return; |
1347 | 1347 | ||
1348 | ExtendedLandData data = (ExtendedLandData)parcelInfoCache.Get(parcelID.ToString(), delegate(string id) { | 1348 | ExtendedLandData data = |
1349 | UUID parcel = UUID.Zero; | 1349 | (ExtendedLandData)parcelInfoCache.Get(parcelID.ToString(), |
1350 | UUID.TryParse(id, out parcel); | 1350 | delegate(string id) |
1351 | // assume we've got the parcelID we just computed in RemoteParcelRequest | 1351 | { |
1352 | ExtendedLandData extLandData = new ExtendedLandData(); | 1352 | UUID parcel = UUID.Zero; |
1353 | Util.ParseFakeParcelID(parcel, out extLandData.regionHandle, out extLandData.x, out extLandData.y); | 1353 | UUID.TryParse(id, out parcel); |
1354 | m_log.DebugFormat("[LAND] got parcelinfo request for regionHandle {0}, x/y {1}/{2}", | 1354 | // assume we've got the parcelID we just computed in RemoteParcelRequest |
1355 | extLandData.regionHandle, extLandData.x, extLandData.y); | 1355 | ExtendedLandData extLandData = new ExtendedLandData(); |
1356 | 1356 | Util.ParseFakeParcelID(parcel, out extLandData.RegionHandle, | |
1357 | // for this region or for somewhere else? | 1357 | out extLandData.X, out extLandData.Y); |
1358 | if (extLandData.regionHandle == m_scene.RegionInfo.RegionHandle) | 1358 | m_log.DebugFormat("[LAND] got parcelinfo request for regionHandle {0}, x/y {1}/{2}", |
1359 | { | 1359 | extLandData.RegionHandle, extLandData.X, extLandData.Y); |
1360 | extLandData.landData = this.GetLandObject(extLandData.x, extLandData.y).landData; | 1360 | |
1361 | } | 1361 | // for this region or for somewhere else? |
1362 | else | 1362 | if (extLandData.RegionHandle == m_scene.RegionInfo.RegionHandle) |
1363 | { | 1363 | { |
1364 | ILandService landService = m_scene.RequestModuleInterface<ILandService>(); | 1364 | extLandData.LandData = this.GetLandObject(extLandData.X, extLandData.Y).LandData; |
1365 | extLandData.landData = landService.GetLandData(extLandData.regionHandle, | 1365 | } |
1366 | extLandData.x, | 1366 | else |
1367 | extLandData.y); | 1367 | { |
1368 | if (extLandData.landData == null) | 1368 | ILandService landService = m_scene.RequestModuleInterface<ILandService>(); |
1369 | { | 1369 | extLandData.LandData = landService.GetLandData(extLandData.RegionHandle, |
1370 | // we didn't find the region/land => don't cache | 1370 | extLandData.X, |
1371 | return null; | 1371 | extLandData.Y); |
1372 | } | 1372 | if (extLandData.LandData == null) |
1373 | } | 1373 | { |
1374 | return extLandData; | 1374 | // we didn't find the region/land => don't cache |
1375 | }); | 1375 | return null; |
1376 | } | ||
1377 | } | ||
1378 | return extLandData; | ||
1379 | }); | ||
1376 | 1380 | ||
1377 | if (data != null) // if we found some data, send it | 1381 | if (data != null) // if we found some data, send it |
1378 | { | 1382 | { |
1379 | GridRegion info; | 1383 | GridRegion info; |
1380 | if (data.regionHandle == m_scene.RegionInfo.RegionHandle) | 1384 | if (data.RegionHandle == m_scene.RegionInfo.RegionHandle) |
1381 | { | 1385 | { |
1382 | info = new GridRegion(m_scene.RegionInfo); | 1386 | info = new GridRegion(m_scene.RegionInfo); |
1383 | } | 1387 | } |
@@ -1385,18 +1389,18 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1385 | { | 1389 | { |
1386 | // most likely still cached from building the extLandData entry | 1390 | // most likely still cached from building the extLandData entry |
1387 | uint x = 0, y = 0; | 1391 | uint x = 0, y = 0; |
1388 | Utils.LongToUInts(data.regionHandle, out x, out y); | 1392 | Utils.LongToUInts(data.RegionHandle, out x, out y); |
1389 | info = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); | 1393 | info = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); |
1390 | } | 1394 | } |
1391 | // we need to transfer the fake parcelID, not the one in landData, so the viewer can match it to the landmark. | 1395 | // we need to transfer the fake parcelID, not the one in landData, so the viewer can match it to the landmark. |
1392 | m_log.DebugFormat("[LAND] got parcelinfo for parcel {0} in region {1}; sending...", | 1396 | m_log.DebugFormat("[LAND] got parcelinfo for parcel {0} in region {1}; sending...", |
1393 | data.landData.Name, data.regionHandle); | 1397 | data.LandData.Name, data.RegionHandle); |
1394 | // HACK for now | 1398 | // HACK for now |
1395 | RegionInfo r = new RegionInfo(); | 1399 | RegionInfo r = new RegionInfo(); |
1396 | r.RegionName = info.RegionName; | 1400 | r.RegionName = info.RegionName; |
1397 | r.RegionLocX = (uint)info.RegionLocX; | 1401 | r.RegionLocX = (uint)info.RegionLocX; |
1398 | r.RegionLocY = (uint)info.RegionLocY; | 1402 | r.RegionLocY = (uint)info.RegionLocY; |
1399 | remoteClient.SendParcelInfo(r, data.landData, parcelID, data.x, data.y); | 1403 | remoteClient.SendParcelInfo(r, data.LandData, parcelID, data.X, data.Y); |
1400 | } | 1404 | } |
1401 | else | 1405 | else |
1402 | m_log.Debug("[LAND] got no parcelinfo; not sending"); | 1406 | m_log.Debug("[LAND] got no parcelinfo; not sending"); |
@@ -1415,9 +1419,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1415 | if (!m_scene.Permissions.CanEditParcel(remoteClient.AgentId, land)) | 1419 | if (!m_scene.Permissions.CanEditParcel(remoteClient.AgentId, land)) |
1416 | return; | 1420 | return; |
1417 | 1421 | ||
1418 | land.landData.OtherCleanTime = otherCleanTime; | 1422 | land.LandData.OtherCleanTime = otherCleanTime; |
1419 | 1423 | ||
1420 | UpdateLandObject(localID, land.landData); | 1424 | UpdateLandObject(localID, land.LandData); |
1421 | } | 1425 | } |
1422 | } | 1426 | } |
1423 | } | 1427 | } |