diff options
10 files changed, 154 insertions, 63 deletions
diff --git a/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs b/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs index cc799ca..511c8d8 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs | |||
@@ -289,17 +289,17 @@ namespace OpenSim.Framework.Data.MySQL | |||
289 | return terret; | 289 | return terret; |
290 | } | 290 | } |
291 | 291 | ||
292 | public void RemoveLandObject(uint id) | 292 | public void RemoveLandObject(uint id, LLUUID regionUUID) |
293 | { | 293 | { |
294 | } | 294 | } |
295 | 295 | ||
296 | public void StoreParcel(Land parcel) | 296 | public void StoreLandObject(Land parcel, LLUUID regionUUID) |
297 | { | 297 | { |
298 | } | 298 | } |
299 | 299 | ||
300 | public List<Land> LoadLandObjects() | 300 | public List<Framework.LandData> LoadLandObjects(LLUUID regionUUID) |
301 | { | 301 | { |
302 | return new List<Land>(); | 302 | return new List<LandData>(); |
303 | } | 303 | } |
304 | 304 | ||
305 | private void DisplayDataSet(DataSet ds, string title) | 305 | private void DisplayDataSet(DataSet ds, string title) |
diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs index 8b6c654..e35aa0e 100644 --- a/OpenSim/Framework/LandData.cs +++ b/OpenSim/Framework/LandData.cs | |||
@@ -26,7 +26,7 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using libsecondlife; | 28 | using libsecondlife; |
29 | 29 | using System.Collections.Generic; | |
30 | namespace OpenSim.Framework | 30 | namespace OpenSim.Framework |
31 | { | 31 | { |
32 | public class LandData | 32 | public class LandData |
@@ -74,6 +74,8 @@ namespace OpenSim.Framework | |||
74 | public LLVector3 userLocation = new LLVector3(); | 74 | public LLVector3 userLocation = new LLVector3(); |
75 | public LLVector3 userLookAt = new LLVector3(); | 75 | public LLVector3 userLookAt = new LLVector3(); |
76 | 76 | ||
77 | public List<ParcelManager.ParcelAccessEntry> parcelAccessList = new List<ParcelManager.ParcelAccessEntry>(); | ||
78 | |||
77 | public LandData() | 79 | public LandData() |
78 | { | 80 | { |
79 | globalID = LLUUID.Random(); | 81 | globalID = LLUUID.Random(); |
@@ -117,6 +119,17 @@ namespace OpenSim.Framework | |||
117 | landData.userLocation = userLocation; | 119 | landData.userLocation = userLocation; |
118 | landData.userLookAt = userLookAt; | 120 | landData.userLookAt = userLookAt; |
119 | 121 | ||
122 | landData.parcelAccessList.Clear(); | ||
123 | foreach (ParcelManager.ParcelAccessEntry entry in parcelAccessList) | ||
124 | { | ||
125 | ParcelManager.ParcelAccessEntry newEntry = new ParcelManager.ParcelAccessEntry(); | ||
126 | newEntry.AgentID = entry.AgentID; | ||
127 | newEntry.Flags = entry.Flags; | ||
128 | newEntry.Time = entry.Time; | ||
129 | |||
130 | landData.parcelAccessList.Add(newEntry); | ||
131 | } | ||
132 | |||
120 | return landData; | 133 | return landData; |
121 | } | 134 | } |
122 | } | 135 | } |
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs index fd7e04f..d629add 100644 --- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs +++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs | |||
@@ -136,19 +136,17 @@ namespace OpenSim.Region.ClientStack | |||
136 | { | 136 | { |
137 | m_log.Verbose("PARCEL", "Found master avatar [" + masterAvatar.UUID.ToStringHyphenated() + "]"); | 137 | m_log.Verbose("PARCEL", "Found master avatar [" + masterAvatar.UUID.ToStringHyphenated() + "]"); |
138 | scene.RegionInfo.MasterAvatarAssignedUUID = masterAvatar.UUID; | 138 | scene.RegionInfo.MasterAvatarAssignedUUID = masterAvatar.UUID; |
139 | //TODO: Load parcels from storageManager | ||
140 | } | 139 | } |
141 | else | 140 | else |
142 | { | 141 | { |
143 | m_log.Verbose("PARCEL", "No master avatar found, using null."); | 142 | m_log.Verbose("PARCEL", "No master avatar found, using null."); |
144 | scene.RegionInfo.MasterAvatarAssignedUUID = LLUUID.Zero; | 143 | scene.RegionInfo.MasterAvatarAssignedUUID = LLUUID.Zero; |
145 | //TODO: Load parcels from storageManager | ||
146 | } | 144 | } |
147 | 145 | ||
148 | scene.LandManager.resetSimLandObjects(); | 146 | scene.LandManager.resetSimLandObjects(); |
149 | 147 | ||
150 | scene.LoadPrimsFromStorage(m_permissions); | 148 | scene.LoadPrimsFromStorage(m_permissions); |
151 | 149 | scene.loadAllLandObjectsFromStorage(); | |
152 | scene.performParcelPrimCountUpdate(); | 150 | scene.performParcelPrimCountUpdate(); |
153 | scene.StartTimer(); | 151 | scene.StartTimer(); |
154 | return scene; | 152 | return scene; |
diff --git a/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs b/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs index 9c2edb9..919cfdc 100644 --- a/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs +++ b/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs | |||
@@ -50,9 +50,9 @@ namespace OpenSim.Region.Environment.Interfaces | |||
50 | void StoreTerrain(double[,] terrain, LLUUID regionID); | 50 | void StoreTerrain(double[,] terrain, LLUUID regionID); |
51 | double[,] LoadTerrain(LLUUID regionID); | 51 | double[,] LoadTerrain(LLUUID regionID); |
52 | 52 | ||
53 | void StoreParcel(Land Parcel); | 53 | void StoreLandObject(Land Parcel,LLUUID regionUUID); |
54 | void RemoveLandObject(uint ID); | 54 | void RemoveLandObject(uint ID, LLUUID regionUUID); |
55 | List<Land> LoadLandObjects(); | 55 | List<Framework.LandData> LoadLandObjects(LLUUID regionUUID); |
56 | 56 | ||
57 | void Shutdown(); | 57 | void Shutdown(); |
58 | } | 58 | } |
diff --git a/OpenSim/Region/Environment/LandManagement/Land.cs b/OpenSim/Region/Environment/LandManagement/Land.cs index 45e8aac..3f60b1b 100644 --- a/OpenSim/Region/Environment/LandManagement/Land.cs +++ b/OpenSim/Region/Environment/LandManagement/Land.cs | |||
@@ -32,6 +32,7 @@ using libsecondlife; | |||
32 | using libsecondlife.Packets; | 32 | using libsecondlife.Packets; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Region.Environment.Scenes; | 34 | using OpenSim.Region.Environment.Scenes; |
35 | using OpenSim.Region.Environment.Interfaces; | ||
35 | 36 | ||
36 | namespace OpenSim.Region.Environment.LandManagement | 37 | namespace OpenSim.Region.Environment.LandManagement |
37 | { | 38 | { |
@@ -47,7 +48,6 @@ namespace OpenSim.Region.Environment.LandManagement | |||
47 | 48 | ||
48 | public LandData landData = new LandData(); | 49 | public LandData landData = new LandData(); |
49 | public List<SceneObjectGroup> primsOverMe = new List<SceneObjectGroup>(); | 50 | public List<SceneObjectGroup> primsOverMe = new List<SceneObjectGroup>(); |
50 | public List<libsecondlife.ParcelManager.ParcelAccessEntry> parcelAccessList = new List<ParcelManager.ParcelAccessEntry>(); | ||
51 | public Scene m_scene; | 51 | public Scene m_scene; |
52 | 52 | ||
53 | private bool[,] landBitmap = new bool[64,64]; | 53 | private bool[,] landBitmap = new bool[64,64]; |
@@ -93,21 +93,12 @@ namespace OpenSim.Region.Environment.LandManagement | |||
93 | 93 | ||
94 | //Place all new variables here! | 94 | //Place all new variables here! |
95 | newLand.landBitmap = (bool[,]) (landBitmap.Clone()); | 95 | newLand.landBitmap = (bool[,]) (landBitmap.Clone()); |
96 | newLand.parcelAccessList.Clear(); | ||
97 | foreach (ParcelManager.ParcelAccessEntry entry in parcelAccessList) | ||
98 | { | ||
99 | ParcelManager.ParcelAccessEntry newEntry = new ParcelManager.ParcelAccessEntry(); | ||
100 | newEntry.AgentID = entry.AgentID; | ||
101 | newEntry.Flags = entry.Flags; | ||
102 | newEntry.Time = entry.Time; | ||
103 | |||
104 | newLand.parcelAccessList.Add(newEntry); | ||
105 | } | ||
106 | newLand.landData = landData.Copy(); | 96 | newLand.landData = landData.Copy(); |
107 | 97 | ||
108 | return newLand; | 98 | return newLand; |
109 | } | 99 | } |
110 | 100 | ||
101 | |||
111 | #endregion | 102 | #endregion |
112 | 103 | ||
113 | #region Packet Request Handling | 104 | #region Packet Request Handling |
@@ -209,24 +200,30 @@ namespace OpenSim.Region.Environment.LandManagement | |||
209 | if (remote_client.AgentId == landData.ownerID) | 200 | if (remote_client.AgentId == landData.ownerID) |
210 | { | 201 | { |
211 | //Needs later group support | 202 | //Needs later group support |
212 | landData.authBuyerID = packet.ParcelData.AuthBuyerID; | 203 | LandData newData = landData.Copy(); |
213 | landData.category = (Parcel.ParcelCategory) packet.ParcelData.Category; | 204 | newData.authBuyerID = packet.ParcelData.AuthBuyerID; |
214 | landData.landDesc = Helpers.FieldToUTF8String(packet.ParcelData.Desc); | 205 | newData.category = (Parcel.ParcelCategory)packet.ParcelData.Category; |
215 | landData.groupID = packet.ParcelData.GroupID; | 206 | newData.landDesc = Helpers.FieldToUTF8String(packet.ParcelData.Desc); |
216 | landData.landingType = packet.ParcelData.LandingType; | 207 | newData.groupID = packet.ParcelData.GroupID; |
217 | landData.mediaAutoScale = packet.ParcelData.MediaAutoScale; | 208 | newData.landingType = packet.ParcelData.LandingType; |
218 | landData.mediaID = packet.ParcelData.MediaID; | 209 | newData.mediaAutoScale = packet.ParcelData.MediaAutoScale; |
219 | landData.mediaURL = Helpers.FieldToUTF8String(packet.ParcelData.MediaURL); | 210 | newData.mediaID = packet.ParcelData.MediaID; |
220 | landData.musicURL = Helpers.FieldToUTF8String(packet.ParcelData.MusicURL); | 211 | newData.mediaURL = Helpers.FieldToUTF8String(packet.ParcelData.MediaURL); |
221 | landData.landName = Helpers.FieldToUTF8String(packet.ParcelData.Name); | 212 | newData.musicURL = Helpers.FieldToUTF8String(packet.ParcelData.MusicURL); |
222 | landData.landFlags = packet.ParcelData.ParcelFlags; | 213 | newData.landName = Helpers.FieldToUTF8String(packet.ParcelData.Name); |
223 | landData.passHours = packet.ParcelData.PassHours; | 214 | newData.landFlags = packet.ParcelData.ParcelFlags; |
224 | landData.passPrice = packet.ParcelData.PassPrice; | 215 | newData.passHours = packet.ParcelData.PassHours; |
225 | landData.salePrice = packet.ParcelData.SalePrice; | 216 | newData.passPrice = packet.ParcelData.PassPrice; |
226 | landData.snapshotID = packet.ParcelData.SnapshotID; | 217 | newData.salePrice = packet.ParcelData.SalePrice; |
227 | landData.userLocation = packet.ParcelData.UserLocation; | 218 | newData.snapshotID = packet.ParcelData.SnapshotID; |
228 | landData.userLookAt = packet.ParcelData.UserLookAt; | 219 | newData.userLocation = packet.ParcelData.UserLocation; |
220 | newData.userLookAt = packet.ParcelData.UserLookAt; | ||
221 | |||
222 | m_scene.LandManager.updateLandObject(landData.localID, newData); | ||
223 | |||
229 | sendLandUpdateToAvatarsOverMe(); | 224 | sendLandUpdateToAvatarsOverMe(); |
225 | |||
226 | |||
230 | } | 227 | } |
231 | } | 228 | } |
232 | 229 | ||
@@ -257,7 +254,7 @@ namespace OpenSim.Region.Environment.LandManagement | |||
257 | public ParcelAccessListReplyPacket.ListBlock[] createAccessListArrayByFlag(ParcelManager.AccessList flag) | 254 | public ParcelAccessListReplyPacket.ListBlock[] createAccessListArrayByFlag(ParcelManager.AccessList flag) |
258 | { | 255 | { |
259 | List<ParcelAccessListReplyPacket.ListBlock> list = new List<ParcelAccessListReplyPacket.ListBlock>(); | 256 | List<ParcelAccessListReplyPacket.ListBlock> list = new List<ParcelAccessListReplyPacket.ListBlock>(); |
260 | foreach (ParcelManager.ParcelAccessEntry entry in parcelAccessList) | 257 | foreach (ParcelManager.ParcelAccessEntry entry in landData.parcelAccessList) |
261 | { | 258 | { |
262 | if (entry.Flags == flag) | 259 | if (entry.Flags == flag) |
263 | { | 260 | { |
@@ -317,13 +314,15 @@ namespace OpenSim.Region.Environment.LandManagement | |||
317 | 314 | ||
318 | public void updateAccessList(uint flags, List<ParcelManager.ParcelAccessEntry> entries, IClientAPI remote_client) | 315 | public void updateAccessList(uint flags, List<ParcelManager.ParcelAccessEntry> entries, IClientAPI remote_client) |
319 | { | 316 | { |
317 | LandData newData = landData.Copy(); | ||
318 | |||
320 | if (entries.Count == 1 && entries[0].AgentID == LLUUID.Zero) | 319 | if (entries.Count == 1 && entries[0].AgentID == LLUUID.Zero) |
321 | { | 320 | { |
322 | entries.Clear(); | 321 | entries.Clear(); |
323 | } | 322 | } |
324 | 323 | ||
325 | List<ParcelManager.ParcelAccessEntry> toRemove = new List<ParcelManager.ParcelAccessEntry>(); | 324 | List<ParcelManager.ParcelAccessEntry> toRemove = new List<ParcelManager.ParcelAccessEntry>(); |
326 | foreach (ParcelManager.ParcelAccessEntry entry in parcelAccessList) | 325 | foreach (ParcelManager.ParcelAccessEntry entry in newData.parcelAccessList) |
327 | { | 326 | { |
328 | if (entry.Flags == (ParcelManager.AccessList)flags) | 327 | if (entry.Flags == (ParcelManager.AccessList)flags) |
329 | { | 328 | { |
@@ -333,7 +332,7 @@ namespace OpenSim.Region.Environment.LandManagement | |||
333 | 332 | ||
334 | foreach (ParcelManager.ParcelAccessEntry entry in toRemove) | 333 | foreach (ParcelManager.ParcelAccessEntry entry in toRemove) |
335 | { | 334 | { |
336 | parcelAccessList.Remove(entry); | 335 | newData.parcelAccessList.Remove(entry); |
337 | } | 336 | } |
338 | foreach (ParcelManager.ParcelAccessEntry entry in entries) | 337 | foreach (ParcelManager.ParcelAccessEntry entry in entries) |
339 | { | 338 | { |
@@ -342,11 +341,14 @@ namespace OpenSim.Region.Environment.LandManagement | |||
342 | temp.Time = new DateTime() ; //Pointless? Yes. | 341 | temp.Time = new DateTime() ; //Pointless? Yes. |
343 | temp.Flags = (ParcelManager.AccessList)flags; | 342 | temp.Flags = (ParcelManager.AccessList)flags; |
344 | 343 | ||
345 | if (!this.parcelAccessList.Contains(temp)) | 344 | if (!newData.parcelAccessList.Contains(temp)) |
346 | { | 345 | { |
347 | this.parcelAccessList.Add(temp); | 346 | newData.parcelAccessList.Add(temp); |
348 | } | 347 | } |
349 | } | 348 | } |
349 | |||
350 | m_scene.LandManager.updateLandObject(landData.localID, newData); | ||
351 | |||
350 | } | 352 | } |
351 | 353 | ||
352 | #endregion | 354 | #endregion |
@@ -385,6 +387,7 @@ namespace OpenSim.Region.Environment.LandManagement | |||
385 | new LLVector3((float) (max_x*4), (float) (max_y*4), | 387 | new LLVector3((float) (max_x*4), (float) (max_y*4), |
386 | (float) m_scene.Terrain.GetHeight((max_x*4), (max_y*4))); | 388 | (float) m_scene.Terrain.GetHeight((max_x*4), (max_y*4))); |
387 | landData.area = tempArea; | 389 | landData.area = tempArea; |
390 | |||
388 | } | 391 | } |
389 | 392 | ||
390 | public void updateLandBitmapByteArray() | 393 | public void updateLandBitmapByteArray() |
diff --git a/OpenSim/Region/Environment/LandManagement/LandManager.cs b/OpenSim/Region/Environment/LandManagement/LandManager.cs index 0fa2c23..11845ae 100644 --- a/OpenSim/Region/Environment/LandManagement/LandManager.cs +++ b/OpenSim/Region/Environment/LandManagement/LandManager.cs | |||
@@ -31,6 +31,7 @@ using libsecondlife; | |||
31 | using libsecondlife.Packets; | 31 | using libsecondlife.Packets; |
32 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
33 | using OpenSim.Region.Environment.Scenes; | 33 | using OpenSim.Region.Environment.Scenes; |
34 | using OpenSim.Region.Environment.Interfaces; | ||
34 | 35 | ||
35 | namespace OpenSim.Region.Environment.LandManagement | 36 | namespace OpenSim.Region.Environment.LandManagement |
36 | { | 37 | { |
@@ -75,6 +76,34 @@ namespace OpenSim.Region.Environment.LandManagement | |||
75 | 76 | ||
76 | #endregion | 77 | #endregion |
77 | 78 | ||
79 | #region Events and Triggers | ||
80 | public delegate void LandObjectAdded(Land newParcel, LLUUID regionUUID); | ||
81 | public delegate void LandObjectRemoved(uint localParcelID, LLUUID regionUUID); | ||
82 | |||
83 | public event LandObjectAdded OnLandObjectAdded; | ||
84 | public event LandObjectRemoved OnLandObjectRemoved; | ||
85 | |||
86 | public void triggerLandObjectAdded(Land newParcel) | ||
87 | { | ||
88 | if (OnLandObjectAdded != null) | ||
89 | { | ||
90 | OnLandObjectAdded(newParcel, m_scene.RegionInfo.RegionID); | ||
91 | } | ||
92 | } | ||
93 | public void triggerLandObjectRemoved(uint localParcelID) | ||
94 | { | ||
95 | if (OnLandObjectRemoved != null) | ||
96 | { | ||
97 | OnLandObjectRemoved(localParcelID, m_scene.RegionInfo.RegionID); | ||
98 | } | ||
99 | } | ||
100 | public void triggerLandObjectUpdated(uint localParcelID, Land newParcel) | ||
101 | { | ||
102 | triggerLandObjectRemoved(localParcelID); | ||
103 | triggerLandObjectAdded(newParcel); | ||
104 | } | ||
105 | |||
106 | #endregion | ||
78 | #region Member Variables | 107 | #region Member Variables |
79 | 108 | ||
80 | public Dictionary<int, Land> landList = new Dictionary<int, Land>(); | 109 | public Dictionary<int, Land> landList = new Dictionary<int, Land>(); |
@@ -100,13 +129,23 @@ namespace OpenSim.Region.Environment.LandManagement | |||
100 | landIDList.Initialize(); | 129 | landIDList.Initialize(); |
101 | } | 130 | } |
102 | 131 | ||
103 | #endregion | ||
104 | 132 | ||
133 | |||
134 | #endregion | ||
135 | |||
105 | #region Member Functions | 136 | #region Member Functions |
106 | 137 | ||
107 | #region Parcel From Storage Functions | 138 | #region Land Object From Storage Functions |
108 | 139 | ||
109 | public void LandFromStorage(LandData data) | 140 | public void IncomingLandObjectsFromStorage(List<LandData> data) |
141 | { | ||
142 | foreach (LandData parcel in data) | ||
143 | { | ||
144 | IncomingLandObjectFromStorage(parcel); | ||
145 | } | ||
146 | } | ||
147 | |||
148 | public void IncomingLandObjectFromStorage(LandData data) | ||
110 | { | 149 | { |
111 | Land new_land = new Land(data.ownerID, data.isGroupOwned, m_scene); | 150 | Land new_land = new Land(data.ownerID, data.isGroupOwned, m_scene); |
112 | new_land.landData = data.Copy(); | 151 | new_land.landData = data.Copy(); |
@@ -116,6 +155,7 @@ namespace OpenSim.Region.Environment.LandManagement | |||
116 | 155 | ||
117 | public void NoLandDataFromStorage() | 156 | public void NoLandDataFromStorage() |
118 | { | 157 | { |
158 | Console.WriteLine("No LandData in storage! Loading a single, flat parcel instead"); | ||
119 | resetSimLandObjects(); | 159 | resetSimLandObjects(); |
120 | } | 160 | } |
121 | 161 | ||
@@ -156,7 +196,7 @@ namespace OpenSim.Region.Environment.LandManagement | |||
156 | } | 196 | } |
157 | } | 197 | } |
158 | landList[lastLandLocalID].forceUpdateLandInfo(); | 198 | landList[lastLandLocalID].forceUpdateLandInfo(); |
159 | 199 | triggerLandObjectAdded(new_land); | |
160 | return new_land; | 200 | return new_land; |
161 | } | 201 | } |
162 | 202 | ||
@@ -177,8 +217,21 @@ namespace OpenSim.Region.Environment.LandManagement | |||
177 | } | 217 | } |
178 | } | 218 | } |
179 | } | 219 | } |
180 | // TODO: Put event here for storage manager to bind to. | ||
181 | landList.Remove(local_id); | 220 | landList.Remove(local_id); |
221 | triggerLandObjectRemoved((uint)local_id); | ||
222 | } | ||
223 | |||
224 | public void updateLandObject(int local_id, LandData newData) | ||
225 | { | ||
226 | if (landList.ContainsKey(local_id)) | ||
227 | { | ||
228 | landList[local_id].landData = newData.Copy(); | ||
229 | triggerLandObjectUpdated((uint)local_id, landList[local_id]); | ||
230 | } | ||
231 | else | ||
232 | { | ||
233 | throw new Exception("Could not update land object. Local ID '" + local_id + "' does not exist"); | ||
234 | } | ||
182 | } | 235 | } |
183 | 236 | ||
184 | private void performFinalLandJoin(Land master, Land slave) | 237 | private void performFinalLandJoin(Land master, Land slave) |
@@ -195,6 +248,7 @@ namespace OpenSim.Region.Environment.LandManagement | |||
195 | } | 248 | } |
196 | } | 249 | } |
197 | } | 250 | } |
251 | |||
198 | removeLandObject(slave.landData.localID); | 252 | removeLandObject(slave.landData.localID); |
199 | } | 253 | } |
200 | 254 | ||
@@ -293,7 +347,6 @@ namespace OpenSim.Region.Environment.LandManagement | |||
293 | Land.modifyLandBitmapSquare(startLandObject.getLandBitmap(), start_x, start_y, end_x, end_y, false)); | 347 | Land.modifyLandBitmapSquare(startLandObject.getLandBitmap(), start_x, start_y, end_x, end_y, false)); |
294 | landList[startLandObjectIndex].forceUpdateLandInfo(); | 348 | landList[startLandObjectIndex].forceUpdateLandInfo(); |
295 | 349 | ||
296 | |||
297 | setPrimsTainted(); | 350 | setPrimsTainted(); |
298 | 351 | ||
299 | //Now add the new land object | 352 | //Now add the new land object |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 828cb75..8277f39 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -225,9 +225,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
225 | m_physicalPrim = physicalPrim; | 225 | m_physicalPrim = physicalPrim; |
226 | m_sendTasksToChild = SendTasksToChild; | 226 | m_sendTasksToChild = SendTasksToChild; |
227 | 227 | ||
228 | m_eventManager = new EventManager(); | ||
229 | |||
228 | m_LandManager = new LandManager(this, m_regInfo); | 230 | m_LandManager = new LandManager(this, m_regInfo); |
231 | |||
232 | //Bind Storage Manager functions to some land manager functions for this scene | ||
233 | m_LandManager.OnLandObjectAdded += new LandManager.LandObjectAdded(m_storageManager.DataStore.StoreLandObject); | ||
234 | m_LandManager.OnLandObjectRemoved += new LandManager.LandObjectRemoved(m_storageManager.DataStore.RemoveLandObject); | ||
235 | |||
229 | m_estateManager = new EstateManager(this, m_regInfo); | 236 | m_estateManager = new EstateManager(this, m_regInfo); |
230 | m_eventManager = new EventManager(); | ||
231 | 237 | ||
232 | m_permissionManager = permissionManager; | 238 | m_permissionManager = permissionManager; |
233 | m_permissionManager.Initialise(this); | 239 | m_permissionManager.Initialise(this); |
@@ -833,6 +839,24 @@ namespace OpenSim.Region.Environment.Scenes | |||
833 | 839 | ||
834 | #endregion | 840 | #endregion |
835 | 841 | ||
842 | #region Load Land | ||
843 | |||
844 | public void loadAllLandObjectsFromStorage() | ||
845 | { | ||
846 | MainLog.Instance.Verbose("SCENE", "Loading land objects from storage"); | ||
847 | List<Framework.LandData> landData = m_storageManager.DataStore.LoadLandObjects(RegionInfo.RegionID); | ||
848 | if (landData.Count == 0) | ||
849 | { | ||
850 | m_LandManager.NoLandDataFromStorage(); | ||
851 | } | ||
852 | else | ||
853 | { | ||
854 | m_LandManager.IncomingLandObjectsFromStorage(landData); | ||
855 | } | ||
856 | } | ||
857 | |||
858 | #endregion | ||
859 | |||
836 | #region Primitives Methods | 860 | #region Primitives Methods |
837 | 861 | ||
838 | /// <summary> | 862 | /// <summary> |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MSSQL/MSSQLDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MSSQL/MSSQLDataStore.cs index 5e4bb89..37fb4ab 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MSSQL/MSSQLDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MSSQL/MSSQLDataStore.cs | |||
@@ -292,19 +292,19 @@ namespace OpenSim.DataStore.MSSQL | |||
292 | return terret; | 292 | return terret; |
293 | } | 293 | } |
294 | 294 | ||
295 | public void RemoveLandObject(uint id) | 295 | public void RemoveLandObject(uint id, LLUUID regionUUID) |
296 | { | 296 | { |
297 | 297 | ||
298 | } | 298 | } |
299 | 299 | ||
300 | public void StoreParcel(Land parcel) | 300 | public void StoreLandObject(Land parcel, LLUUID regionUUID) |
301 | { | 301 | { |
302 | 302 | ||
303 | } | 303 | } |
304 | 304 | ||
305 | public List<Land> LoadLandObjects() | 305 | public List<Framework.LandData> LoadLandObjects(LLUUID regionUUID) |
306 | { | 306 | { |
307 | return new List<Land>(); | 307 | return new List<LandData>(); |
308 | } | 308 | } |
309 | 309 | ||
310 | public void Commit() | 310 | public void Commit() |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs index 5285b82..0a55582 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs | |||
@@ -346,17 +346,17 @@ namespace OpenSim.DataStore.MonoSqlite | |||
346 | } | 346 | } |
347 | } | 347 | } |
348 | 348 | ||
349 | public void RemoveLandObject(uint id) | 349 | public void RemoveLandObject(uint id, LLUUID regionUUID) |
350 | { | 350 | { |
351 | } | 351 | } |
352 | 352 | ||
353 | public void StoreParcel(Land parcel) | 353 | public void StoreLandObject(Land parcel, LLUUID regionUUID) |
354 | { | 354 | { |
355 | } | 355 | } |
356 | 356 | ||
357 | public List<Land> LoadLandObjects() | 357 | public List<Framework.LandData> LoadLandObjects(LLUUID regionUUID) |
358 | { | 358 | { |
359 | return new List<Land>(); | 359 | return new List<LandData>(); |
360 | } | 360 | } |
361 | 361 | ||
362 | public void Commit() | 362 | public void Commit() |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs index 657cfab..e8a22fd 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs | |||
@@ -63,17 +63,17 @@ namespace OpenSim.DataStore.NullStorage | |||
63 | return null; | 63 | return null; |
64 | } | 64 | } |
65 | 65 | ||
66 | public void RemoveLandObject(uint id) | 66 | public void RemoveLandObject(uint id, LLUUID regionUUID) |
67 | { | 67 | { |
68 | } | 68 | } |
69 | 69 | ||
70 | public void StoreParcel(Land land) | 70 | public void StoreLandObject(Land land, LLUUID regionUUID) |
71 | { | 71 | { |
72 | } | 72 | } |
73 | 73 | ||
74 | public List<Land> LoadLandObjects() | 74 | public List<Framework.LandData> LoadLandObjects(LLUUID regionUUID) |
75 | { | 75 | { |
76 | return new List<Land>(); | 76 | return new List<Framework.LandData>(); |
77 | } | 77 | } |
78 | 78 | ||
79 | public void Shutdown() | 79 | public void Shutdown() |