diff options
Diffstat (limited to 'OpenSim/Region')
-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 268e2ee..da7a284 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -1103,7 +1103,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1103 | m_landList.TryGetValue(localID, out land); | 1103 | m_landList.TryGetValue(localID, out land); |
1104 | } | 1104 | } |
1105 | 1105 | ||
1106 | if (land != null) land.UpdateLandProperties(args, remote_client); | 1106 | if (land != null) |
1107 | { | ||
1108 | land.UpdateLandProperties(args, remote_client); | ||
1109 | m_scene.EventManager.TriggerOnParcelPropertiesUpdateRequest(args, localID, remote_client); | ||
1110 | } | ||
1107 | } | 1111 | } |
1108 | 1112 | ||
1109 | public void ClientOnParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client) | 1113 | public void ClientOnParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client) |
@@ -1408,9 +1412,13 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1408 | m_landList.TryGetValue(parcelID, out land); | 1412 | m_landList.TryGetValue(parcelID, out land); |
1409 | } | 1413 | } |
1410 | 1414 | ||
1411 | if (land != null) { | 1415 | if (land != null) |
1416 | { | ||
1412 | land.UpdateLandProperties(land_update, client); | 1417 | land.UpdateLandProperties(land_update, client); |
1413 | } else { | 1418 | m_scene.EventManager.TriggerOnParcelPropertiesUpdateRequest(land_update, parcelID, client); |
1419 | } | ||
1420 | else | ||
1421 | { | ||
1414 | m_log.WarnFormat("[LAND] unable to find parcelID {0}", parcelID); | 1422 | m_log.WarnFormat("[LAND] unable to find parcelID {0}", parcelID); |
1415 | } | 1423 | } |
1416 | return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); | 1424 | return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); |
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 0ae3146..7bcc4db 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -109,6 +109,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
109 | 109 | ||
110 | public event OnSetRootAgentSceneDelegate OnSetRootAgentScene; | 110 | public event OnSetRootAgentSceneDelegate OnSetRootAgentScene; |
111 | 111 | ||
112 | public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest; | ||
113 | |||
112 | /// <summary> | 114 | /// <summary> |
113 | /// Fired when an object is touched/grabbed. | 115 | /// Fired when an object is touched/grabbed. |
114 | /// </summary> | 116 | /// </summary> |
@@ -2104,5 +2106,27 @@ namespace OpenSim.Region.Framework.Scenes | |||
2104 | } | 2106 | } |
2105 | } | 2107 | } |
2106 | } | 2108 | } |
2109 | |||
2110 | public void TriggerOnParcelPropertiesUpdateRequest(LandUpdateArgs args, | ||
2111 | int local_id, IClientAPI remote_client) | ||
2112 | { | ||
2113 | ParcelPropertiesUpdateRequest handler = OnParcelPropertiesUpdateRequest; | ||
2114 | if (handler != null) | ||
2115 | { | ||
2116 | foreach (ParcelPropertiesUpdateRequest d in handler.GetInvocationList()) | ||
2117 | { | ||
2118 | try | ||
2119 | { | ||
2120 | d(args, local_id, remote_client); | ||
2121 | } | ||
2122 | catch (Exception e) | ||
2123 | { | ||
2124 | m_log.ErrorFormat( | ||
2125 | "[EVENT MANAGER]: Delegate for TriggerOnSceneObjectPartCopy failed - continuing. {0} {1}", | ||
2126 | e.Message, e.StackTrace); | ||
2127 | } | ||
2128 | } | ||
2129 | } | ||
2130 | } | ||
2107 | } | 2131 | } |
2108 | } \ No newline at end of file | 2132 | } |