diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 7c8b1aa023..efde5ce4cc 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -99,7 +99,7 @@ namespace OpenSim.Framework public delegate void GenericCall4(Packet packet, IClientAPI remoteClient); public delegate void DeRezObject( - IClientAPI remoteClient, uint localID, UUID groupID, DeRezAction action, UUID destinationID); + IClientAPI remoteClient, List localIDs, UUID groupID, DeRezAction action, UUID destinationID); public delegate void GenericCall5(IClientAPI remoteClient, bool status); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 74a8874113..3fdb386659 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -5065,16 +5065,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP handlerDeRezObject = OnDeRezObject; if (handlerDeRezObject != null) { + List deRezIDs = new List(); + foreach (DeRezObjectPacket.ObjectDataBlock data in DeRezPacket.ObjectData) { + deRezIDs.Add(data.ObjectLocalID); + } // It just so happens that the values on the DeRezAction enumerator match the Destination // values given by a Second Life client - handlerDeRezObject(this, data.ObjectLocalID, + handlerDeRezObject(this, deRezIDs, DeRezPacket.AgentBlock.GroupID, (DeRezAction)DeRezPacket.AgentBlock.Destination, DeRezPacket.AgentBlock.DestinationID); - } + } break; diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index f65f834764..3fe879aecb 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1684,6 +1684,23 @@ namespace OpenSim.Region.Framework.Scenes } } + /// + /// Called when one or more objects are removed from the environment into inventory. + /// + /// + /// + /// + /// + /// + public virtual void DeRezObject(IClientAPI remoteClient, List localIDs, + UUID groupID, DeRezAction action, UUID destinationID) + { + foreach (uint localID in localIDs) + { + DeRezObject(remoteClient, localID, groupID, action, destinationID); + } + } + /// /// Called when an object is removed from the environment into inventory. ///