aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/World/Land
diff options
context:
space:
mode:
authorTeravus Ovares2008-05-24 09:40:14 +0000
committerTeravus Ovares2008-05-24 09:40:14 +0000
commit3965fa2ff3fd59dd5bb049b1321468380cf2af2d (patch)
treea2184de316e69408c27866fa923085b84788bf76 /OpenSim/Region/Environment/Modules/World/Land
parent* an attempt to resolve the teleport + attachment = crash (diff)
downloadopensim-SC_OLD-3965fa2ff3fd59dd5bb049b1321468380cf2af2d.zip
opensim-SC_OLD-3965fa2ff3fd59dd5bb049b1321468380cf2af2d.tar.gz
opensim-SC_OLD-3965fa2ff3fd59dd5bb049b1321468380cf2af2d.tar.bz2
opensim-SC_OLD-3965fa2ff3fd59dd5bb049b1321468380cf2af2d.tar.xz
* Implements selected object return.
* If user is in the same sim with you, they'll get an inventory update, if not.... oh well, they'll have to clear their cache potentially before they'll see it.
Diffstat (limited to 'OpenSim/Region/Environment/Modules/World/Land')
-rw-r--r--OpenSim/Region/Environment/Modules/World/Land/LandObject.cs70
1 files changed, 45 insertions, 25 deletions
diff --git a/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs b/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs
index 54870d8..98f3a3a 100644
--- a/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs
+++ b/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs
@@ -596,23 +596,32 @@ namespace OpenSim.Region.Environment.Modules.World.Land
596 if (m_scene.ExternalChecks.ExternalChecksCanEditParcel(remote_client.AgentId, this)) 596 if (m_scene.ExternalChecks.ExternalChecksCanEditParcel(remote_client.AgentId, this))
597 { 597 {
598 List<uint> resultLocalIDs = new List<uint>(); 598 List<uint> resultLocalIDs = new List<uint>();
599 foreach (SceneObjectGroup obj in primsOverMe) 599 try
600 { 600 {
601 if (obj.LocalId > 0) 601 lock (primsOverMe)
602 { 602 {
603 if (request_type == LandChannel.LAND_SELECT_OBJECTS_OWNER && obj.OwnerID == landData.ownerID) 603 foreach (SceneObjectGroup obj in primsOverMe)
604 {
605 resultLocalIDs.Add(obj.LocalId);
606 }
607 // else if (request_type == LandManager.LAND_SELECT_OBJECTS_GROUP && ...) // TODO: group support
608 // {
609 // }
610 else if (request_type == LandChannel.LAND_SELECT_OBJECTS_OTHER &&
611 obj.OwnerID != remote_client.AgentId)
612 { 604 {
613 resultLocalIDs.Add(obj.LocalId); 605 if (obj.LocalId > 0)
606 {
607 if (request_type == LandChannel.LAND_SELECT_OBJECTS_OWNER && obj.OwnerID == landData.ownerID)
608 {
609 resultLocalIDs.Add(obj.LocalId);
610 }
611 // else if (request_type == LandManager.LAND_SELECT_OBJECTS_GROUP && ...) // TODO: group support
612 // {
613 // }
614 else if (request_type == LandChannel.LAND_SELECT_OBJECTS_OTHER &&
615 obj.OwnerID != remote_client.AgentId)
616 {
617 resultLocalIDs.Add(obj.LocalId);
618 }
619 }
614 } 620 }
615 } 621 }
622 } catch (InvalidOperationException)
623 {
624 m_log.Error("[LAND]: Unable to force select the parcel objects. Arr.");
616 } 625 }
617 626
618 remote_client.sendForceClientSelectObjects(resultLocalIDs); 627 remote_client.sendForceClientSelectObjects(resultLocalIDs);
@@ -633,26 +642,37 @@ namespace OpenSim.Region.Environment.Modules.World.Land
633 { 642 {
634 Dictionary<LLUUID, int> primCount = new Dictionary<LLUUID, int>(); 643 Dictionary<LLUUID, int> primCount = new Dictionary<LLUUID, int>();
635 644
636 foreach (SceneObjectGroup obj in primsOverMe) 645 lock (primsOverMe)
637 { 646 {
638 try 647 try
639 { 648 {
640 if (!primCount.ContainsKey(obj.OwnerID)) 649
650 foreach (SceneObjectGroup obj in primsOverMe)
641 { 651 {
642 primCount.Add(obj.OwnerID, 0); 652 try
653 {
654 if (!primCount.ContainsKey(obj.OwnerID))
655 {
656 primCount.Add(obj.OwnerID, 0);
657 }
658 }
659 catch (NullReferenceException)
660 {
661 m_log.Info("[LAND]: " + "Got Null Reference when searching land owners from the parcel panel");
662 }
663 try
664 {
665 primCount[obj.OwnerID] += obj.PrimCount;
666 }
667 catch (KeyNotFoundException)
668 {
669 m_log.Error("[LAND]: Unable to match a prim with it's owner.");
670 }
643 } 671 }
644 } 672 }
645 catch (NullReferenceException) 673 catch (InvalidOperationException)
646 {
647 m_log.Info("[LAND]: " + "Got Null Reference when searching land owners from the parcel panel");
648 }
649 try
650 {
651 primCount[obj.OwnerID] += obj.PrimCount;
652 }
653 catch (KeyNotFoundException)
654 { 674 {
655 m_log.Error("[LAND]: Unable to match a prim with it's owner."); 675 m_log.Error("[LAND]: Unable to Enumerate Land object arr.");
656 } 676 }
657 } 677 }
658 678