diff options
5 files changed, 17 insertions, 9 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 7531517..b32c7f6 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -174,7 +174,7 @@ namespace OpenSim.Framework | |||
174 | 174 | ||
175 | public delegate void ParcelPropertiesUpdateRequest(LandUpdateArgs args, int local_id, IClientAPI remote_client); | 175 | public delegate void ParcelPropertiesUpdateRequest(LandUpdateArgs args, int local_id, IClientAPI remote_client); |
176 | 176 | ||
177 | public delegate void ParcelSelectObjects(int land_local_id, int request_type, IClientAPI remote_client); | 177 | public delegate void ParcelSelectObjects(int land_local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client); |
178 | 178 | ||
179 | public delegate void ParcelObjectOwnerRequest(int local_id, IClientAPI remote_client); | 179 | public delegate void ParcelObjectOwnerRequest(int local_id, IClientAPI remote_client); |
180 | 180 | ||
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 25927b6..b11a5e8 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -5713,12 +5713,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5713 | case PacketType.ParcelSelectObjects: | 5713 | case PacketType.ParcelSelectObjects: |
5714 | ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack; | 5714 | ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack; |
5715 | 5715 | ||
5716 | List<UUID> returnIDs = new List<UUID>(); | ||
5717 | |||
5718 | foreach(ParcelSelectObjectsPacket.ReturnIDsBlock rb in | ||
5719 | selectPacket.ReturnIDs) | ||
5720 | { | ||
5721 | returnIDs.Add(rb.ReturnID); | ||
5722 | } | ||
5723 | |||
5716 | handlerParcelSelectObjects = OnParcelSelectObjects; | 5724 | handlerParcelSelectObjects = OnParcelSelectObjects; |
5717 | 5725 | ||
5718 | if (handlerParcelSelectObjects != null) | 5726 | if (handlerParcelSelectObjects != null) |
5719 | { | 5727 | { |
5720 | handlerParcelSelectObjects(selectPacket.ParcelData.LocalID, | 5728 | handlerParcelSelectObjects(selectPacket.ParcelData.LocalID, |
5721 | Convert.ToInt32(selectPacket.ParcelData.ReturnType), this); | 5729 | Convert.ToInt32(selectPacket.ParcelData.ReturnType), returnIDs, this); |
5722 | } | 5730 | } |
5723 | break; | 5731 | break; |
5724 | case PacketType.ParcelObjectOwnersRequest: | 5732 | case PacketType.ParcelObjectOwnersRequest: |
diff --git a/OpenSim/Region/Environment/Interfaces/ILandObject.cs b/OpenSim/Region/Environment/Interfaces/ILandObject.cs index 85da000..9d51109 100644 --- a/OpenSim/Region/Environment/Interfaces/ILandObject.cs +++ b/OpenSim/Region/Environment/Interfaces/ILandObject.cs | |||
@@ -68,7 +68,7 @@ namespace OpenSim.Region.Environment.Interfaces | |||
68 | bool[,] getSquareLandBitmap(int start_x, int start_y, int end_x, int end_y); | 68 | bool[,] getSquareLandBitmap(int start_x, int start_y, int end_x, int end_y); |
69 | bool[,] modifyLandBitmapSquare(bool[,] land_bitmap, int start_x, int start_y, int end_x, int end_y, bool set_value); | 69 | bool[,] modifyLandBitmapSquare(bool[,] land_bitmap, int start_x, int start_y, int end_x, int end_y, bool set_value); |
70 | bool[,] mergeLandBitmaps(bool[,] bitmap_base, bool[,] bitmap_add); | 70 | bool[,] mergeLandBitmaps(bool[,] bitmap_base, bool[,] bitmap_add); |
71 | void sendForceObjectSelect(int local_id, int request_type, IClientAPI remote_client); | 71 | void sendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client); |
72 | void sendLandObjectOwners(IClientAPI remote_client); | 72 | void sendLandObjectOwners(IClientAPI remote_client); |
73 | void returnObject(SceneObjectGroup obj); | 73 | void returnObject(SceneObjectGroup obj); |
74 | void returnLandObjects(uint type, UUID[] owners, IClientAPI remote_client); | 74 | void returnLandObjects(uint type, UUID[] owners, IClientAPI remote_client); |
diff --git a/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs index 89dde26..f656fb6 100644 --- a/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs | |||
@@ -976,9 +976,9 @@ namespace OpenSim.Region.Environment.Modules.World.Land | |||
976 | join(west, south, east, north, remote_client.AgentId); | 976 | join(west, south, east, north, remote_client.AgentId); |
977 | } | 977 | } |
978 | 978 | ||
979 | public void handleParcelSelectObjectsRequest(int local_id, int request_type, IClientAPI remote_client) | 979 | public void handleParcelSelectObjectsRequest(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client) |
980 | { | 980 | { |
981 | m_landList[local_id].sendForceObjectSelect(local_id, request_type, remote_client); | 981 | m_landList[local_id].sendForceObjectSelect(local_id, request_type, returnIDs, remote_client); |
982 | } | 982 | } |
983 | 983 | ||
984 | public void handleParcelObjectOwnersRequest(int local_id, IClientAPI remote_client) | 984 | public void handleParcelObjectOwnersRequest(int local_id, IClientAPI remote_client) |
diff --git a/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs b/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs index 197d5c2..be806c2 100644 --- a/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs +++ b/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs | |||
@@ -645,7 +645,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land | |||
645 | 645 | ||
646 | #region Object Select and Object Owner Listing | 646 | #region Object Select and Object Owner Listing |
647 | 647 | ||
648 | public void sendForceObjectSelect(int local_id, int request_type, IClientAPI remote_client) | 648 | public void sendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client) |
649 | { | 649 | { |
650 | if (m_scene.ExternalChecks.ExternalChecksCanEditParcel(remote_client.AgentId, this)) | 650 | if (m_scene.ExternalChecks.ExternalChecksCanEditParcel(remote_client.AgentId, this)) |
651 | { | 651 | { |
@@ -662,9 +662,9 @@ namespace OpenSim.Region.Environment.Modules.World.Land | |||
662 | { | 662 | { |
663 | resultLocalIDs.Add(obj.LocalId); | 663 | resultLocalIDs.Add(obj.LocalId); |
664 | } | 664 | } |
665 | // else if (request_type == LandManager.LAND_SELECT_OBJECTS_GROUP && ...) // TODO: group support | 665 | else if (request_type == LandChannel.LAND_SELECT_OBJECTS_GROUP && obj.GroupID == landData.GroupID && landData.GroupID != UUID.Zero) |
666 | // { | 666 | { |
667 | // } | 667 | } |
668 | else if (request_type == LandChannel.LAND_SELECT_OBJECTS_OTHER && | 668 | else if (request_type == LandChannel.LAND_SELECT_OBJECTS_OTHER && |
669 | obj.OwnerID != remote_client.AgentId) | 669 | obj.OwnerID != remote_client.AgentId) |
670 | { | 670 | { |