diff options
author | Teravus Ovares | 2008-05-24 09:40:14 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-05-24 09:40:14 +0000 |
commit | 3965fa2ff3fd59dd5bb049b1321468380cf2af2d (patch) | |
tree | a2184de316e69408c27866fa923085b84788bf76 /OpenSim/Region/Environment/Modules/World | |
parent | * an attempt to resolve the teleport + attachment = crash (diff) | |
download | opensim-SC-3965fa2ff3fd59dd5bb049b1321468380cf2af2d.zip opensim-SC-3965fa2ff3fd59dd5bb049b1321468380cf2af2d.tar.gz opensim-SC-3965fa2ff3fd59dd5bb049b1321468380cf2af2d.tar.bz2 opensim-SC-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')
-rw-r--r-- | OpenSim/Region/Environment/Modules/World/Land/LandObject.cs | 70 |
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 | ||