diff options
Diffstat (limited to 'OpenSim')
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) {} |