diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Land')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandObject.cs | 12 |
2 files changed, 17 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 6f32a77..057e204 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -274,6 +274,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
274 | //Remove all the land objects in the sim and add a blank, full sim land object set to public | 274 | //Remove all the land objects in the sim and add a blank, full sim land object set to public |
275 | lock (m_landList) | 275 | lock (m_landList) |
276 | { | 276 | { |
277 | foreach(ILandObject parcel in m_landList.Values) | ||
278 | parcel.Clear(); | ||
279 | |||
277 | m_landList.Clear(); | 280 | m_landList.Clear(); |
278 | m_landUUIDList.Clear(); | 281 | m_landUUIDList.Clear(); |
279 | m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1; | 282 | m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1; |
@@ -696,6 +699,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
696 | m_landList.Remove(local_id); | 699 | m_landList.Remove(local_id); |
697 | if(land.LandData != null) | 700 | if(land.LandData != null) |
698 | m_landUUIDList.Remove(land.LandData.GlobalID); | 701 | m_landUUIDList.Remove(land.LandData.GlobalID); |
702 | land.Clear(); | ||
699 | } | 703 | } |
700 | 704 | ||
701 | m_scene.EventManager.TriggerLandObjectRemoved(land.LandData.GlobalID); | 705 | m_scene.EventManager.TriggerLandObjectRemoved(land.LandData.GlobalID); |
@@ -746,7 +750,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
746 | } | 750 | } |
747 | } | 751 | } |
748 | } | 752 | } |
749 | 753 | master.LandData.Dwell += slave.LandData.Dwell; | |
750 | removeLandObject(slave.LandData.LocalID); | 754 | removeLandObject(slave.LandData.LocalID); |
751 | UpdateLandObject(master.LandData.LocalID, master.LandData); | 755 | UpdateLandObject(master.LandData.LocalID, master.LandData); |
752 | } | 756 | } |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index ccb85f6..b534a2b 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -269,6 +269,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
269 | { | 269 | { |
270 | LandData = landData.Copy(); | 270 | LandData = landData.Copy(); |
271 | m_scene = scene; | 271 | m_scene = scene; |
272 | m_scene.EventManager.OnFrame += OnFrame; | ||
272 | m_dwellModule = m_scene.RequestModuleInterface<IDwellModule>(); | 273 | m_dwellModule = m_scene.RequestModuleInterface<IDwellModule>(); |
273 | } | 274 | } |
274 | 275 | ||
@@ -296,9 +297,20 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
296 | 297 | ||
297 | LandData.IsGroupOwned = is_group_owned; | 298 | LandData.IsGroupOwned = is_group_owned; |
298 | 299 | ||
300 | if(m_dwellModule == null) | ||
301 | LandData.Dwell = 0; | ||
302 | |||
299 | m_scene.EventManager.OnFrame += OnFrame; | 303 | m_scene.EventManager.OnFrame += OnFrame; |
300 | } | 304 | } |
301 | 305 | ||
306 | public void Clear() | ||
307 | { | ||
308 | if(m_scene != null) | ||
309 | m_scene.EventManager.OnFrame -= OnFrame; | ||
310 | LandData = null; | ||
311 | } | ||
312 | |||
313 | |||
302 | #endregion | 314 | #endregion |
303 | 315 | ||
304 | #region Member Functions | 316 | #region Member Functions |