diff --git a/OpenSim/Framework/ILandChannel.cs b/OpenSim/Framework/ILandChannel.cs index e5ea596327..0efd9085ec 100644 --- a/OpenSim/Framework/ILandChannel.cs +++ b/OpenSim/Framework/ILandChannel.cs @@ -98,6 +98,6 @@ namespace OpenSim.Region.Framework.Interfaces void Join(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id); void Subdivide(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id); - void sendClientInitialLandInfo(IClientAPI remoteClient); + void sendClientInitialLandInfo(IClientAPI remoteClient, bool overlay = true); } } diff --git a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs index 993b7825c0..eaa5292ced 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs @@ -247,11 +247,11 @@ namespace OpenSim.Region.CoreModules.World.Land m_landManagementModule.setParcelOtherCleanTime(remoteClient, localID, otherCleanTime); } } - public void sendClientInitialLandInfo(IClientAPI remoteClient) + public void sendClientInitialLandInfo(IClientAPI remoteClient, bool overlay = true) { if (m_landManagementModule != null) { - m_landManagementModule.sendClientInitialLandInfo(remoteClient); + m_landManagementModule.sendClientInitialLandInfo(remoteClient, overlay); } } #endregion diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index d693d21f42..c7b45ef291 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -491,7 +491,7 @@ namespace OpenSim.Region.CoreModules.World.Land return; } - public void sendClientInitialLandInfo(IClientAPI remoteClient) + public void sendClientInitialLandInfo(IClientAPI remoteClient, bool overlay = true) { ScenePresence avatar; @@ -507,7 +507,8 @@ namespace OpenSim.Region.CoreModules.World.Land avatar.currentParcelUUID = over.LandData.GlobalID; over.SendLandUpdateToClient(avatar.ControllingClient); } - SendParcelOverlay(remoteClient); + if(overlay) + SendParcelOverlay(remoteClient); } public void SendLandUpdate(ScenePresence avatar, ILandObject over) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index e66305598c..a67d701c1e 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -2244,11 +2244,12 @@ namespace OpenSim.Region.Framework.Scenes // start sending terrain patchs if (!gotCrossUpdate) Scene.SendLayerData(ControllingClient); + + // send initial land overlay and parcel + ILandChannel landch = m_scene.LandChannel; + if (landch != null) + landch.sendClientInitialLandInfo(client, !gotCrossUpdate); } - // send initial land overlay and parcel - ILandChannel landch = m_scene.LandChannel; - if (landch != null) - landch.sendClientInitialLandInfo(client); if (!IsChildAgent) { diff --git a/OpenSim/Tests/Common/Mock/TestLandChannel.cs b/OpenSim/Tests/Common/Mock/TestLandChannel.cs index cb16f55edd..87cbede58b 100644 --- a/OpenSim/Tests/Common/Mock/TestLandChannel.cs +++ b/OpenSim/Tests/Common/Mock/TestLandChannel.cs @@ -119,6 +119,6 @@ namespace OpenSim.Tests.Common public void Join(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id) {} public void Subdivide(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id) {} - public void sendClientInitialLandInfo(IClientAPI remoteClient) { } + public void sendClientInitialLandInfo(IClientAPI remoteClient, bool overlay = true) { } } } \ No newline at end of file