aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Framework/ILandChannel.cs1
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandChannel.cs8
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs26
-rw-r--r--OpenSim/Tests/Common/Mock/TestLandChannel.cs1
4 files changed, 31 insertions, 5 deletions
diff --git a/OpenSim/Framework/ILandChannel.cs b/OpenSim/Framework/ILandChannel.cs
index 12a8228..8667837 100644
--- a/OpenSim/Framework/ILandChannel.cs
+++ b/OpenSim/Framework/ILandChannel.cs
@@ -88,6 +88,7 @@ namespace OpenSim.Region.Framework.Interfaces
88 88
89 bool IsForcefulBansAllowed(); 89 bool IsForcefulBansAllowed();
90 void UpdateLandObject(int localID, LandData data); 90 void UpdateLandObject(int localID, LandData data);
91 void SendParcelsOverlay(IClientAPI client);
91 void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient); 92 void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient);
92 void setParcelObjectMaxOverride(overrideParcelMaxPrimCountDelegate overrideDel); 93 void setParcelObjectMaxOverride(overrideParcelMaxPrimCountDelegate overrideDel);
93 void setSimulatorObjectMaxOverride(overrideSimulatorMaxPrimCountDelegate overrideDel); 94 void setSimulatorObjectMaxOverride(overrideSimulatorMaxPrimCountDelegate overrideDel);
diff --git a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
index b59e2af..5ff063b 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
@@ -176,6 +176,14 @@ namespace OpenSim.Region.CoreModules.World.Land
176 } 176 }
177 } 177 }
178 178
179 public void SendParcelsOverlay(IClientAPI client)
180 {
181 if (m_landManagementModule != null)
182 {
183 m_landManagementModule.SendParcelOverlay(client);
184 }
185 }
186
179 public void Join(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id) 187 public void Join(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id)
180 { 188 {
181 if (m_landManagementModule != null) 189 if (m_landManagementModule != null)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index f274cd3..79367fb 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -1617,6 +1617,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1617 1617
1618 bool changed = false; 1618 bool changed = false;
1619 bool changedSeeAvs = false; 1619 bool changedSeeAvs = false;
1620 bool changedoverlay = false;
1621 bool changedneedupdate = false;
1620 1622
1621 // Process the rules, not sure what the impact would be of changing owner or group 1623 // Process the rules, not sure what the impact would be of changing owner or group
1622 for (int idx = 0; idx < rules.Length;) 1624 for (int idx = 0; idx < rules.Length;)
@@ -1719,6 +1721,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1719 { 1721 {
1720 changed = true; 1722 changed = true;
1721 changedSeeAvs = true; 1723 changedSeeAvs = true;
1724 changedoverlay = true;
1725 changedneedupdate = true;
1722 newLand.SeeAVs = newavs; 1726 newLand.SeeAVs = newavs;
1723 } 1727 }
1724 break; 1728 break;
@@ -1744,19 +1748,31 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1744 } 1748 }
1745 if(changed) 1749 if(changed)
1746 { 1750 {
1747 World.LandChannel.UpdateLandObject(newLand.LocalID,newLand); 1751 World.LandChannel.UpdateLandObject(newLand.LocalID, newLand);
1748 1752
1749 if(changedSeeAvs) 1753 if(changedneedupdate)
1750 { 1754 {
1751 UUID parcelID= newLand.GlobalID; 1755 UUID parcelID= newLand.GlobalID;
1752 World.ForEachScenePresence(delegate (ScenePresence avatar) 1756 World.ForEachRootScenePresence(delegate (ScenePresence avatar)
1753 { 1757 {
1754 if (avatar != null && !avatar.IsDeleted && avatar.currentParcelUUID == parcelID ) 1758 if (avatar == null || avatar.IsDeleted || avatar.IsInTransit)
1759 return;
1760
1761 if(changedSeeAvs && avatar.currentParcelUUID == parcelID )
1755 avatar.currentParcelUUID = parcelID; // force parcel flags review 1762 avatar.currentParcelUUID = parcelID; // force parcel flags review
1763
1764 if(avatar.ControllingClient == null)
1765 return;
1766
1767 // this will be needed for some things like damage etc
1768// if(avatar.currentParcelUUID == parcelID)
1769// startLandObject.SendLandUpdateToClient(avatar.ControllingClient);
1770
1771 if(changedoverlay && !avatar.IsNPC)
1772 World.LandChannel.SendParcelsOverlay(avatar.ControllingClient);
1756 }); 1773 });
1757 } 1774 }
1758 } 1775 }
1759
1760 } 1776 }
1761 1777
1762 public double osList2Double(LSL_Types.list src, int index) 1778 public double osList2Double(LSL_Types.list src, int index)
diff --git a/OpenSim/Tests/Common/Mock/TestLandChannel.cs b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
index 48dc840..05db03fe 100644
--- a/OpenSim/Tests/Common/Mock/TestLandChannel.cs
+++ b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
@@ -109,6 +109,7 @@ namespace OpenSim.Tests.Common
109 public bool IsLandPrimCountTainted() { return false; } 109 public bool IsLandPrimCountTainted() { return false; }
110 public bool IsForcefulBansAllowed() { return false; } 110 public bool IsForcefulBansAllowed() { return false; }
111 public void UpdateLandObject(int localID, LandData data) {} 111 public void UpdateLandObject(int localID, LandData data) {}
112 public void SendParcelsOverlay(IClientAPI client) {}
112 public void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient) {} 113 public void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient) {}
113 public void setParcelObjectMaxOverride(overrideParcelMaxPrimCountDelegate overrideDel) {} 114 public void setParcelObjectMaxOverride(overrideParcelMaxPrimCountDelegate overrideDel) {}
114 public void setSimulatorObjectMaxOverride(overrideSimulatorMaxPrimCountDelegate overrideDel) {} 115 public void setSimulatorObjectMaxOverride(overrideSimulatorMaxPrimCountDelegate overrideDel) {}