diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 9dd17f9cc4..5687e01178 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -249,7 +249,7 @@ namespace OpenSim.Framework public delegate void StopAnim(IClientAPI remoteClient, LLUUID animID); - public delegate void LinkObjects(uint parent, List children); + public delegate void LinkObjects(IClientAPI remoteClient, uint parent, List children); public delegate void DelinkObjects(List primIds); diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 3b7923eef5..e4f28db523 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs @@ -3356,7 +3356,7 @@ namespace OpenSim.Region.ClientStack handlerLinkObjects = OnLinkObjects; if (handlerLinkObjects != null) { - handlerLinkObjects(parentprimid, childrenprims); + handlerLinkObjects(this, parentprimid, childrenprims); } break; case PacketType.ObjectDelink: diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index c0095936f3..9a720d93af 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -1081,11 +1081,12 @@ namespace OpenSim.Region.Environment.Scenes } /// - /// + /// Initial method invoked when we receive a link objects request from the client. /// + /// /// /// - public void LinkObjects(uint parentPrim, List childPrims) + public void LinkObjects(IClientAPI client, uint parentPrim, List childPrims) { List EntityList = GetEntities(); @@ -1124,6 +1125,10 @@ namespace OpenSim.Region.Environment.Scenes { parenPrim.LinkToGroup(sceneObj); } + + // We need to explicitly resend the newly link prim's object properties since no other actions + // occur on link to invoke this elsewhere (such as object selection) + parenPrim.GetProperties(client); } /// diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index ca17937b44..2b8f34454a 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -547,7 +547,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// public void RequestTaskInventory(IClientAPI remoteClient, uint primLocalID) - { + { SceneObjectGroup group = GetGroupByPrim(primLocalID); if (group != null) { diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 869c9368d4..ebdb0a6319 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs @@ -69,7 +69,7 @@ namespace OpenSim.Region.Environment.Scenes } /// - /// + /// Invoked when the client selects a prim. /// /// /// @@ -80,8 +80,7 @@ namespace OpenSim.Region.Environment.Scenes foreach (EntityBase ent in EntitieList) { if (ent is SceneObjectGroup) - { - + { if (((SceneObjectGroup) ent).LocalId == primLocalID) { // A prim is only tainted if it's allowed to be edited by the person clicking it. diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs index a73bb76c10..08793574e5 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs @@ -399,7 +399,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// public bool GetInventoryFileName(IClientAPI client, uint localID) - { + { if (m_inventorySerial > 0) { client.SendTaskInventory(m_uuid, (short)m_inventorySerial, diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 5e49314d6a..b42375f871 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -2150,9 +2150,10 @@ namespace OpenSim.Region.Environment.Scenes } /// - /// + /// Sends a full update to the client /// /// + /// public void SendFullUpdateToClient(IClientAPI remoteClient, uint clientflags) { LLVector3 lPos; @@ -2160,6 +2161,12 @@ namespace OpenSim.Region.Environment.Scenes SendFullUpdateToClient(remoteClient, lPos, clientflags); } + /// + /// Sends a full update to the client + /// + /// + /// + /// public void SendFullUpdateToClient(IClientAPI remoteClient, LLVector3 lPos, uint clientFlags) { LLQuaternion lRot;