diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 4bb865a68a..b2786d45e9 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -742,6 +742,8 @@ namespace OpenSim.Framework IScene Scene { get; } + List SelectedObjects { get; } + // [Obsolete("LLClientView Specific - Replace with ???")] int NextAnimationSequenceNumber { get; } diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 849fec3cf7..7b6889ab09 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -474,6 +474,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP set { m_disableFacelights = value; } } + public List SelectedObjects {get; private set;} public bool SendLogoutPacketWhenClosing { set { m_SendLogoutPacketWhenClosing = value; } } @@ -494,6 +495,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // DebugPacketLevel = 1; CloseSyncLock = new Object(); + SelectedObjects = new List(); RegisterInterface(this); RegisterInterface(this); @@ -7347,6 +7349,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < incomingselect.ObjectData.Length; i++) { + if (!SelectedObjects.Contains(incomingselect.ObjectData[i].ObjectLocalID)) + SelectedObjects.Add(incomingselect.ObjectData[i].ObjectLocalID); handlerObjectSelect = OnObjectSelect; if (handlerObjectSelect != null) { @@ -7373,6 +7377,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < incomingdeselect.ObjectData.Length; i++) { + if (!SelectedObjects.Contains(incomingdeselect.ObjectData[i].ObjectLocalID)) + SelectedObjects.Add(incomingdeselect.ObjectData[i].ObjectLocalID); handlerObjectDeselect = OnObjectDeselect; if (handlerObjectDeselect != null) { diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index ed1503cdd5..8c0ad75f7e 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -68,6 +68,8 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server private bool m_connected = true; + public List SelectedObjects {get; private set;} + public IRCClientView(TcpClient client, Scene scene) { m_client = client; diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 0b33c510fa..0b4d03adf2 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -65,6 +65,8 @@ namespace OpenSim.Region.OptionalModules.World.NPC private readonly Scene m_scene; private readonly UUID m_ownerID; + public List SelectedObjects {get; private set;} + public NPCAvatar( string firstname, string lastname, Vector3 position, UUID ownerID, bool senseAsAgent, Scene scene) { diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index d4f29c89b2..96bccd2e47 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -442,6 +442,8 @@ namespace OpenSim.Tests.Common.Mock get { return new IPEndPoint(IPAddress.Loopback, (ushort)m_circuitCode); } } + public List SelectedObjects {get; private set;} + /// /// Constructor ///