diff options
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | 14 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/EventManager.cs | 26 |
2 files changed, 36 insertions, 4 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 040dc8c..f62ec1b 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -1115,7 +1115,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1115 | m_landList.TryGetValue(localID, out land); | 1115 | m_landList.TryGetValue(localID, out land); |
1116 | } | 1116 | } |
1117 | 1117 | ||
1118 | if (land != null) land.UpdateLandProperties(args, remote_client); | 1118 | if (land != null) |
1119 | { | ||
1120 | land.UpdateLandProperties(args, remote_client); | ||
1121 | m_scene.EventManager.TriggerOnParcelPropertiesUpdateRequest(args, localID, remote_client); | ||
1122 | } | ||
1119 | } | 1123 | } |
1120 | 1124 | ||
1121 | public void ClientOnParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client) | 1125 | public void ClientOnParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client) |
@@ -1433,9 +1437,13 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1433 | m_landList.TryGetValue(parcelID, out land); | 1437 | m_landList.TryGetValue(parcelID, out land); |
1434 | } | 1438 | } |
1435 | 1439 | ||
1436 | if (land != null) { | 1440 | if (land != null) |
1441 | { | ||
1437 | land.UpdateLandProperties(land_update, client); | 1442 | land.UpdateLandProperties(land_update, client); |
1438 | } else { | 1443 | m_scene.EventManager.TriggerOnParcelPropertiesUpdateRequest(land_update, parcelID, client); |
1444 | } | ||
1445 | else | ||
1446 | { | ||
1439 | m_log.WarnFormat("[LAND] unable to find parcelID {0}", parcelID); | 1447 | m_log.WarnFormat("[LAND] unable to find parcelID {0}", parcelID); |
1440 | } | 1448 | } |
1441 | return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); | 1449 | return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); |
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 52e6e92..d4e2736 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -113,6 +113,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
113 | 113 | ||
114 | public event OnSetRootAgentSceneDelegate OnSetRootAgentScene; | 114 | public event OnSetRootAgentSceneDelegate OnSetRootAgentScene; |
115 | 115 | ||
116 | public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest; | ||
117 | |||
116 | /// <summary> | 118 | /// <summary> |
117 | /// Fired when an object is touched/grabbed. | 119 | /// Fired when an object is touched/grabbed. |
118 | /// </summary> | 120 | /// </summary> |
@@ -2128,5 +2130,27 @@ namespace OpenSim.Region.Framework.Scenes | |||
2128 | } | 2130 | } |
2129 | } | 2131 | } |
2130 | } | 2132 | } |
2133 | |||
2134 | public void TriggerOnParcelPropertiesUpdateRequest(LandUpdateArgs args, | ||
2135 | int local_id, IClientAPI remote_client) | ||
2136 | { | ||
2137 | ParcelPropertiesUpdateRequest handler = OnParcelPropertiesUpdateRequest; | ||
2138 | if (handler != null) | ||
2139 | { | ||
2140 | foreach (ParcelPropertiesUpdateRequest d in handler.GetInvocationList()) | ||
2141 | { | ||
2142 | try | ||
2143 | { | ||
2144 | d(args, local_id, remote_client); | ||
2145 | } | ||
2146 | catch (Exception e) | ||
2147 | { | ||
2148 | m_log.ErrorFormat( | ||
2149 | "[EVENT MANAGER]: Delegate for TriggerOnSceneObjectPartCopy failed - continuing. {0} {1}", | ||
2150 | e.Message, e.StackTrace); | ||
2151 | } | ||
2152 | } | ||
2153 | } | ||
2154 | } | ||
2131 | } | 2155 | } |
2132 | } \ No newline at end of file | 2156 | } |