diff options
author | David Walter Seikel | 2016-11-03 21:44:39 +1000 |
---|---|---|
committer | David Walter Seikel | 2016-11-03 21:44:39 +1000 |
commit | 134f86e8d5c414409631b25b8c6f0ee45fbd8631 (patch) | |
tree | 216b89d3fb89acfb81be1e440c25c41ab09fa96d /OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | |
parent | More changing to production grid. Double oops. (diff) | |
download | opensim-SC_OLD-134f86e8d5c414409631b25b8c6f0ee45fbd8631.zip opensim-SC_OLD-134f86e8d5c414409631b25b8c6f0ee45fbd8631.tar.gz opensim-SC_OLD-134f86e8d5c414409631b25b8c6f0ee45fbd8631.tar.bz2 opensim-SC_OLD-134f86e8d5c414409631b25b8c6f0ee45fbd8631.tar.xz |
Initial update to OpenSim 0.8.2.1 source code.
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | 519 |
1 files changed, 365 insertions, 154 deletions
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 311707b..80fa08a 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | |||
@@ -32,6 +32,7 @@ using System.IO; | |||
32 | using System.Linq; | 32 | using System.Linq; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using System.Security; | 34 | using System.Security; |
35 | using System.Timers; | ||
35 | using log4net; | 36 | using log4net; |
36 | using Mono.Addins; | 37 | using Mono.Addins; |
37 | using Nini.Config; | 38 | using Nini.Config; |
@@ -39,6 +40,7 @@ using OpenMetaverse; | |||
39 | using OpenSim.Framework; | 40 | using OpenSim.Framework; |
40 | using OpenSim.Region.Framework.Interfaces; | 41 | using OpenSim.Region.Framework.Interfaces; |
41 | using OpenSim.Region.Framework.Scenes; | 42 | using OpenSim.Region.Framework.Scenes; |
43 | using OpenSim.Services.Interfaces; | ||
42 | using RegionFlags = OpenMetaverse.RegionFlags; | 44 | using RegionFlags = OpenMetaverse.RegionFlags; |
43 | 45 | ||
44 | namespace OpenSim.Region.CoreModules.World.Estate | 46 | namespace OpenSim.Region.CoreModules.World.Estate |
@@ -48,6 +50,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
48 | { | 50 | { |
49 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 51 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
50 | 52 | ||
53 | private Timer m_regionChangeTimer = new Timer(); | ||
51 | public Scene Scene { get; private set; } | 54 | public Scene Scene { get; private set; } |
52 | public IUserManagement UserManager { get; private set; } | 55 | public IUserManagement UserManager { get; private set; } |
53 | 56 | ||
@@ -112,13 +115,287 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
112 | 115 | ||
113 | #endregion | 116 | #endregion |
114 | 117 | ||
118 | #region IEstateModule Functions | ||
119 | public uint GetRegionFlags() | ||
120 | { | ||
121 | RegionFlags flags = RegionFlags.None; | ||
122 | |||
123 | // Fully implemented | ||
124 | // | ||
125 | if (Scene.RegionInfo.RegionSettings.AllowDamage) | ||
126 | flags |= RegionFlags.AllowDamage; | ||
127 | if (Scene.RegionInfo.RegionSettings.BlockTerraform) | ||
128 | flags |= RegionFlags.BlockTerraform; | ||
129 | if (!Scene.RegionInfo.RegionSettings.AllowLandResell) | ||
130 | flags |= RegionFlags.BlockLandResell; | ||
131 | if (Scene.RegionInfo.RegionSettings.DisableCollisions) | ||
132 | flags |= RegionFlags.SkipCollisions; | ||
133 | if (Scene.RegionInfo.RegionSettings.DisableScripts) | ||
134 | flags |= RegionFlags.SkipScripts; | ||
135 | if (Scene.RegionInfo.RegionSettings.DisablePhysics) | ||
136 | flags |= RegionFlags.SkipPhysics; | ||
137 | if (Scene.RegionInfo.RegionSettings.BlockFly) | ||
138 | flags |= RegionFlags.NoFly; | ||
139 | if (Scene.RegionInfo.RegionSettings.RestrictPushing) | ||
140 | flags |= RegionFlags.RestrictPushObject; | ||
141 | if (Scene.RegionInfo.RegionSettings.AllowLandJoinDivide) | ||
142 | flags |= RegionFlags.AllowParcelChanges; | ||
143 | if (Scene.RegionInfo.RegionSettings.BlockShowInSearch) | ||
144 | flags |= RegionFlags.BlockParcelSearch; | ||
145 | |||
146 | if (Scene.RegionInfo.RegionSettings.FixedSun) | ||
147 | flags |= RegionFlags.SunFixed; | ||
148 | if (Scene.RegionInfo.RegionSettings.Sandbox) | ||
149 | flags |= RegionFlags.Sandbox; | ||
150 | if (Scene.RegionInfo.EstateSettings.AllowVoice) | ||
151 | flags |= RegionFlags.AllowVoice; | ||
152 | if (Scene.RegionInfo.EstateSettings.AllowLandmark) | ||
153 | flags |= RegionFlags.AllowLandmark; | ||
154 | if (Scene.RegionInfo.EstateSettings.AllowSetHome) | ||
155 | flags |= RegionFlags.AllowSetHome; | ||
156 | if (Scene.RegionInfo.EstateSettings.BlockDwell) | ||
157 | flags |= RegionFlags.BlockDwell; | ||
158 | if (Scene.RegionInfo.EstateSettings.ResetHomeOnTeleport) | ||
159 | flags |= RegionFlags.ResetHomeOnTeleport; | ||
160 | |||
161 | |||
162 | // TODO: SkipUpdateInterestList | ||
163 | |||
164 | // Omitted | ||
165 | // | ||
166 | // Omitted: NullLayer (what is that?) | ||
167 | // Omitted: SkipAgentAction (what does it do?) | ||
168 | |||
169 | return (uint)flags; | ||
170 | } | ||
171 | |||
172 | public bool IsManager(UUID avatarID) | ||
173 | { | ||
174 | if (avatarID == Scene.RegionInfo.EstateSettings.EstateOwner) | ||
175 | return true; | ||
176 | |||
177 | List<UUID> ems = new List<UUID>(Scene.RegionInfo.EstateSettings.EstateManagers); | ||
178 | if (ems.Contains(avatarID)) | ||
179 | return true; | ||
180 | |||
181 | return false; | ||
182 | } | ||
183 | |||
184 | public void sendRegionHandshakeToAll() | ||
185 | { | ||
186 | Scene.ForEachClient(sendRegionHandshake); | ||
187 | } | ||
188 | |||
189 | public void TriggerEstateInfoChange() | ||
190 | { | ||
191 | ChangeDelegate change = OnEstateInfoChange; | ||
192 | |||
193 | if (change != null) | ||
194 | change(Scene.RegionInfo.RegionID); | ||
195 | } | ||
196 | |||
197 | public void TriggerRegionInfoChange() | ||
198 | { | ||
199 | m_regionChangeTimer.Stop(); | ||
200 | m_regionChangeTimer.Start(); | ||
201 | |||
202 | ChangeDelegate change = OnRegionInfoChange; | ||
203 | |||
204 | if (change != null) | ||
205 | change(Scene.RegionInfo.RegionID); | ||
206 | } | ||
207 | |||
208 | public void setEstateTerrainBaseTexture(int level, UUID texture) | ||
209 | { | ||
210 | setEstateTerrainBaseTexture(null, level, texture); | ||
211 | sendRegionHandshakeToAll(); | ||
212 | } | ||
213 | |||
214 | public void setEstateTerrainTextureHeights(int corner, float lowValue, float highValue) | ||
215 | { | ||
216 | setEstateTerrainTextureHeights(null, corner, lowValue, highValue); | ||
217 | } | ||
218 | |||
219 | public bool IsTerrainXfer(ulong xferID) | ||
220 | { | ||
221 | lock (this) | ||
222 | { | ||
223 | if (TerrainUploader == null) | ||
224 | return false; | ||
225 | else | ||
226 | return TerrainUploader.XferID == xferID; | ||
227 | } | ||
228 | } | ||
229 | |||
230 | public string SetEstateOwner(int estateID, UserAccount account) | ||
231 | { | ||
232 | string response; | ||
233 | |||
234 | // get the current settings from DB | ||
235 | EstateSettings dbSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | ||
236 | if (dbSettings.EstateID == 0) | ||
237 | { | ||
238 | response = String.Format("No estate found with ID {0}", estateID); | ||
239 | } | ||
240 | else if (account.PrincipalID == dbSettings.EstateOwner) | ||
241 | { | ||
242 | response = String.Format("Estate already belongs to {0} ({1} {2})", account.PrincipalID, account.FirstName, account.LastName); | ||
243 | } | ||
244 | else | ||
245 | { | ||
246 | dbSettings.EstateOwner = account.PrincipalID; | ||
247 | Scene.EstateDataService.StoreEstateSettings(dbSettings); | ||
248 | response = String.Empty; | ||
249 | |||
250 | // make sure there's a log entry to document the change | ||
251 | m_log.InfoFormat("[ESTATE]: Estate Owner for {0} changed to {1} ({2} {3})", dbSettings.EstateName, | ||
252 | account.PrincipalID, account.FirstName, account.LastName); | ||
253 | |||
254 | // propagate the change | ||
255 | List<UUID> regions = Scene.GetEstateRegions(estateID); | ||
256 | UUID regionId = (regions.Count() > 0) ? regions.ElementAt(0) : UUID.Zero; | ||
257 | if (regionId != UUID.Zero) | ||
258 | { | ||
259 | ChangeDelegate change = OnEstateInfoChange; | ||
260 | |||
261 | if (change != null) | ||
262 | change(regionId); | ||
263 | } | ||
264 | |||
265 | } | ||
266 | return response; | ||
267 | } | ||
268 | |||
269 | public string SetEstateName(int estateID, string newName) | ||
270 | { | ||
271 | string response; | ||
272 | |||
273 | // get the current settings from DB | ||
274 | EstateSettings dbSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | ||
275 | |||
276 | if (dbSettings.EstateID == 0) | ||
277 | { | ||
278 | response = String.Format("No estate found with ID {0}", estateID); | ||
279 | } | ||
280 | else if (newName == dbSettings.EstateName) | ||
281 | { | ||
282 | response = String.Format("Estate {0} is already named \"{1}\"", estateID, newName); | ||
283 | } | ||
284 | else | ||
285 | { | ||
286 | List<int> estates = Scene.EstateDataService.GetEstates(newName); | ||
287 | if (estates.Count() > 0) | ||
288 | { | ||
289 | response = String.Format("An estate named \"{0}\" already exists.", newName); | ||
290 | } | ||
291 | else | ||
292 | { | ||
293 | string oldName = dbSettings.EstateName; | ||
294 | dbSettings.EstateName = newName; | ||
295 | Scene.EstateDataService.StoreEstateSettings(dbSettings); | ||
296 | response = String.Empty; | ||
297 | |||
298 | // make sure there's a log entry to document the change | ||
299 | m_log.InfoFormat("[ESTATE]: Estate {0} renamed from \"{1}\" to \"{2}\"", estateID, oldName, newName); | ||
300 | |||
301 | // propagate the change | ||
302 | List<UUID> regions = Scene.GetEstateRegions(estateID); | ||
303 | UUID regionId = (regions.Count() > 0) ? regions.ElementAt(0) : UUID.Zero; | ||
304 | if (regionId != UUID.Zero) | ||
305 | { | ||
306 | ChangeDelegate change = OnEstateInfoChange; | ||
307 | |||
308 | if (change != null) | ||
309 | change(regionId); | ||
310 | } | ||
311 | } | ||
312 | } | ||
313 | return response; | ||
314 | } | ||
315 | |||
316 | public string SetRegionEstate(RegionInfo regionInfo, int estateID) | ||
317 | { | ||
318 | string response; | ||
319 | |||
320 | if (regionInfo.EstateSettings.EstateID == estateID) | ||
321 | { | ||
322 | response = String.Format("\"{0}\" is already part of estate {1}", regionInfo.RegionName, estateID); | ||
323 | } | ||
324 | else | ||
325 | { | ||
326 | // get the current settings from DB | ||
327 | EstateSettings dbSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | ||
328 | if (dbSettings.EstateID == 0) | ||
329 | { | ||
330 | response = String.Format("No estate found with ID {0}", estateID); | ||
331 | } | ||
332 | else if (Scene.EstateDataService.LinkRegion(regionInfo.RegionID, estateID)) | ||
333 | { | ||
334 | // make sure there's a log entry to document the change | ||
335 | m_log.InfoFormat("[ESTATE]: Region {0} ({1}) moved to Estate {2} ({3}).", regionInfo.RegionID, regionInfo.RegionName, estateID, dbSettings.EstateName); | ||
336 | |||
337 | // propagate the change | ||
338 | ChangeDelegate change = OnEstateInfoChange; | ||
339 | |||
340 | if (change != null) | ||
341 | change(regionInfo.RegionID); | ||
342 | |||
343 | response = String.Empty; | ||
344 | } | ||
345 | else | ||
346 | { | ||
347 | response = String.Format("Could not move \"{0}\" to estate {1}", regionInfo.RegionName, estateID); | ||
348 | } | ||
349 | } | ||
350 | return response; | ||
351 | } | ||
352 | |||
353 | public string CreateEstate(string estateName, UUID ownerID) | ||
354 | { | ||
355 | string response; | ||
356 | if (string.IsNullOrEmpty(estateName)) | ||
357 | { | ||
358 | response = "No estate name specified."; | ||
359 | } | ||
360 | else | ||
361 | { | ||
362 | List<int> estates = Scene.EstateDataService.GetEstates(estateName); | ||
363 | if (estates.Count() > 0) | ||
364 | { | ||
365 | response = String.Format("An estate named \"{0}\" already exists.", estateName); | ||
366 | } | ||
367 | else | ||
368 | { | ||
369 | EstateSettings settings = Scene.EstateDataService.CreateNewEstate(); | ||
370 | if (settings == null) | ||
371 | response = String.Format("Unable to create estate \"{0}\" at this simulator", estateName); | ||
372 | else | ||
373 | { | ||
374 | settings.EstateOwner = ownerID; | ||
375 | settings.EstateName = estateName; | ||
376 | Scene.EstateDataService.StoreEstateSettings(settings); | ||
377 | response = String.Empty; | ||
378 | } | ||
379 | } | ||
380 | } | ||
381 | return response; | ||
382 | } | ||
383 | |||
384 | #endregion | ||
385 | |||
115 | #region Packet Data Responders | 386 | #region Packet Data Responders |
116 | 387 | ||
388 | private void clientSendDetailedEstateData(IClientAPI remote_client, UUID invoice) | ||
389 | { | ||
390 | sendDetailedEstateData(remote_client, invoice); | ||
391 | sendEstateLists(remote_client, invoice); | ||
392 | } | ||
393 | |||
117 | private void sendDetailedEstateData(IClientAPI remote_client, UUID invoice) | 394 | private void sendDetailedEstateData(IClientAPI remote_client, UUID invoice) |
118 | { | 395 | { |
119 | uint sun = 0; | 396 | uint sun = 0; |
120 | 397 | ||
121 | if (!Scene.RegionInfo.EstateSettings.UseGlobalTime) | 398 | if (Scene.RegionInfo.EstateSettings.FixedSun) |
122 | sun = (uint)(Scene.RegionInfo.EstateSettings.SunPosition * 1024.0) + 0x1800; | 399 | sun = (uint)(Scene.RegionInfo.EstateSettings.SunPosition * 1024.0) + 0x1800; |
123 | UUID estateOwner; | 400 | UUID estateOwner; |
124 | estateOwner = Scene.RegionInfo.EstateSettings.EstateOwner; | 401 | estateOwner = Scene.RegionInfo.EstateSettings.EstateOwner; |
@@ -136,7 +413,10 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
136 | (uint) Scene.RegionInfo.RegionSettings.CovenantChangedDateTime, | 413 | (uint) Scene.RegionInfo.RegionSettings.CovenantChangedDateTime, |
137 | Scene.RegionInfo.EstateSettings.AbuseEmail, | 414 | Scene.RegionInfo.EstateSettings.AbuseEmail, |
138 | estateOwner); | 415 | estateOwner); |
416 | } | ||
139 | 417 | ||
418 | private void sendEstateLists(IClientAPI remote_client, UUID invoice) | ||
419 | { | ||
140 | remote_client.SendEstateList(invoice, | 420 | remote_client.SendEstateList(invoice, |
141 | (int)Constants.EstateAccessCodex.EstateManagers, | 421 | (int)Constants.EstateAccessCodex.EstateManagers, |
142 | Scene.RegionInfo.EstateSettings.EstateManagers, | 422 | Scene.RegionInfo.EstateSettings.EstateManagers, |
@@ -210,12 +490,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
210 | sendRegionInfoPacketToAll(); | 490 | sendRegionInfoPacketToAll(); |
211 | } | 491 | } |
212 | 492 | ||
213 | public void setEstateTerrainBaseTexture(int level, UUID texture) | ||
214 | { | ||
215 | setEstateTerrainBaseTexture(null, level, texture); | ||
216 | sendRegionHandshakeToAll(); | ||
217 | } | ||
218 | |||
219 | public void setEstateTerrainBaseTexture(IClientAPI remoteClient, int level, UUID texture) | 493 | public void setEstateTerrainBaseTexture(IClientAPI remoteClient, int level, UUID texture) |
220 | { | 494 | { |
221 | if (texture == UUID.Zero) | 495 | if (texture == UUID.Zero) |
@@ -242,11 +516,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
242 | sendRegionInfoPacketToAll(); | 516 | sendRegionInfoPacketToAll(); |
243 | } | 517 | } |
244 | 518 | ||
245 | public void setEstateTerrainTextureHeights(int corner, float lowValue, float highValue) | ||
246 | { | ||
247 | setEstateTerrainTextureHeights(null, corner, lowValue, highValue); | ||
248 | } | ||
249 | |||
250 | public void setEstateTerrainTextureHeights(IClientAPI client, int corner, float lowValue, float highValue) | 519 | public void setEstateTerrainTextureHeights(IClientAPI client, int corner, float lowValue, float highValue) |
251 | { | 520 | { |
252 | switch (corner) | 521 | switch (corner) |
@@ -330,7 +599,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
330 | timeInSeconds -= 15; | 599 | timeInSeconds -= 15; |
331 | } | 600 | } |
332 | 601 | ||
333 | restartModule.ScheduleRestart(UUID.Zero, "Region will restart in {0}", times.ToArray(), true); | 602 | restartModule.ScheduleRestart(UUID.Zero, "Region will restart in {0}", times.ToArray(), false); |
334 | 603 | ||
335 | m_log.InfoFormat( | 604 | m_log.InfoFormat( |
336 | "User {0} requested restart of region {1} in {2} seconds", | 605 | "User {0} requested restart of region {1} in {2} seconds", |
@@ -372,13 +641,13 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
372 | { | 641 | { |
373 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | 642 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); |
374 | estateSettings.AddEstateUser(user); | 643 | estateSettings.AddEstateUser(user); |
375 | estateSettings.Save(); | 644 | Scene.EstateDataService.StoreEstateSettings(estateSettings); |
376 | } | 645 | } |
377 | } | 646 | } |
378 | } | 647 | } |
379 | 648 | ||
380 | Scene.RegionInfo.EstateSettings.AddEstateUser(user); | 649 | Scene.RegionInfo.EstateSettings.AddEstateUser(user); |
381 | Scene.RegionInfo.EstateSettings.Save(); | 650 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
382 | 651 | ||
383 | TriggerEstateInfoChange(); | 652 | TriggerEstateInfoChange(); |
384 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); | 653 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); |
@@ -405,13 +674,13 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
405 | { | 674 | { |
406 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | 675 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); |
407 | estateSettings.RemoveEstateUser(user); | 676 | estateSettings.RemoveEstateUser(user); |
408 | estateSettings.Save(); | 677 | Scene.EstateDataService.StoreEstateSettings(estateSettings); |
409 | } | 678 | } |
410 | } | 679 | } |
411 | } | 680 | } |
412 | 681 | ||
413 | Scene.RegionInfo.EstateSettings.RemoveEstateUser(user); | 682 | Scene.RegionInfo.EstateSettings.RemoveEstateUser(user); |
414 | Scene.RegionInfo.EstateSettings.Save(); | 683 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
415 | 684 | ||
416 | TriggerEstateInfoChange(); | 685 | TriggerEstateInfoChange(); |
417 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); | 686 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); |
@@ -437,13 +706,13 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
437 | { | 706 | { |
438 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | 707 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); |
439 | estateSettings.AddEstateGroup(user); | 708 | estateSettings.AddEstateGroup(user); |
440 | estateSettings.Save(); | 709 | Scene.EstateDataService.StoreEstateSettings(estateSettings); |
441 | } | 710 | } |
442 | } | 711 | } |
443 | } | 712 | } |
444 | 713 | ||
445 | Scene.RegionInfo.EstateSettings.AddEstateGroup(user); | 714 | Scene.RegionInfo.EstateSettings.AddEstateGroup(user); |
446 | Scene.RegionInfo.EstateSettings.Save(); | 715 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
447 | 716 | ||
448 | TriggerEstateInfoChange(); | 717 | TriggerEstateInfoChange(); |
449 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); | 718 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); |
@@ -469,13 +738,13 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
469 | { | 738 | { |
470 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | 739 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); |
471 | estateSettings.RemoveEstateGroup(user); | 740 | estateSettings.RemoveEstateGroup(user); |
472 | estateSettings.Save(); | 741 | Scene.EstateDataService.StoreEstateSettings(estateSettings); |
473 | } | 742 | } |
474 | } | 743 | } |
475 | } | 744 | } |
476 | 745 | ||
477 | Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user); | 746 | Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user); |
478 | Scene.RegionInfo.EstateSettings.Save(); | 747 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
479 | 748 | ||
480 | TriggerEstateInfoChange(); | 749 | TriggerEstateInfoChange(); |
481 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); | 750 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); |
@@ -524,7 +793,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
524 | 793 | ||
525 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | 794 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); |
526 | estateSettings.AddBan(bitem); | 795 | estateSettings.AddBan(bitem); |
527 | estateSettings.Save(); | 796 | Scene.EstateDataService.StoreEstateSettings(estateSettings); |
528 | } | 797 | } |
529 | } | 798 | } |
530 | } | 799 | } |
@@ -537,7 +806,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
537 | item.BannedHostIPMask = "0.0.0.0"; | 806 | item.BannedHostIPMask = "0.0.0.0"; |
538 | 807 | ||
539 | Scene.RegionInfo.EstateSettings.AddBan(item); | 808 | Scene.RegionInfo.EstateSettings.AddBan(item); |
540 | Scene.RegionInfo.EstateSettings.Save(); | 809 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
541 | 810 | ||
542 | TriggerEstateInfoChange(); | 811 | TriggerEstateInfoChange(); |
543 | 812 | ||
@@ -546,7 +815,11 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
546 | { | 815 | { |
547 | if (!s.IsChildAgent) | 816 | if (!s.IsChildAgent) |
548 | { | 817 | { |
549 | Scene.TeleportClientHome(user, s.ControllingClient); | 818 | if (!Scene.TeleportClientHome(user, s.ControllingClient)) |
819 | { | ||
820 | s.ControllingClient.Kick("Your access to the region was revoked and TP home failed - you have been logged out."); | ||
821 | Scene.CloseAgent(s.UUID, false); | ||
822 | } | ||
550 | } | 823 | } |
551 | } | 824 | } |
552 | 825 | ||
@@ -555,7 +828,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
555 | { | 828 | { |
556 | remote_client.SendAlertMessage("User is already on the region ban list"); | 829 | remote_client.SendAlertMessage("User is already on the region ban list"); |
557 | } | 830 | } |
558 | //m_scene.RegionInfo.regionBanlist.Add(Manager(user); | 831 | //Scene.RegionInfo.regionBanlist.Add(Manager(user); |
559 | remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID); | 832 | remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID); |
560 | } | 833 | } |
561 | else | 834 | else |
@@ -596,13 +869,13 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
596 | { | 869 | { |
597 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | 870 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); |
598 | estateSettings.RemoveBan(user); | 871 | estateSettings.RemoveBan(user); |
599 | estateSettings.Save(); | 872 | Scene.EstateDataService.StoreEstateSettings(estateSettings); |
600 | } | 873 | } |
601 | } | 874 | } |
602 | } | 875 | } |
603 | 876 | ||
604 | Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); | 877 | Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); |
605 | Scene.RegionInfo.EstateSettings.Save(); | 878 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
606 | 879 | ||
607 | TriggerEstateInfoChange(); | 880 | TriggerEstateInfoChange(); |
608 | } | 881 | } |
@@ -611,7 +884,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
611 | remote_client.SendAlertMessage("User is not on the region ban list"); | 884 | remote_client.SendAlertMessage("User is not on the region ban list"); |
612 | } | 885 | } |
613 | 886 | ||
614 | //m_scene.RegionInfo.regionBanlist.Add(Manager(user); | 887 | //Scene.RegionInfo.regionBanlist.Add(Manager(user); |
615 | remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID); | 888 | remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID); |
616 | } | 889 | } |
617 | else | 890 | else |
@@ -635,13 +908,13 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
635 | { | 908 | { |
636 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | 909 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); |
637 | estateSettings.AddEstateManager(user); | 910 | estateSettings.AddEstateManager(user); |
638 | estateSettings.Save(); | 911 | Scene.EstateDataService.StoreEstateSettings(estateSettings); |
639 | } | 912 | } |
640 | } | 913 | } |
641 | } | 914 | } |
642 | 915 | ||
643 | Scene.RegionInfo.EstateSettings.AddEstateManager(user); | 916 | Scene.RegionInfo.EstateSettings.AddEstateManager(user); |
644 | Scene.RegionInfo.EstateSettings.Save(); | 917 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
645 | 918 | ||
646 | TriggerEstateInfoChange(); | 919 | TriggerEstateInfoChange(); |
647 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); | 920 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); |
@@ -667,13 +940,13 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
667 | { | 940 | { |
668 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); | 941 | estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); |
669 | estateSettings.RemoveEstateManager(user); | 942 | estateSettings.RemoveEstateManager(user); |
670 | estateSettings.Save(); | 943 | Scene.EstateDataService.StoreEstateSettings(estateSettings); |
671 | } | 944 | } |
672 | } | 945 | } |
673 | } | 946 | } |
674 | 947 | ||
675 | Scene.RegionInfo.EstateSettings.RemoveEstateManager(user); | 948 | Scene.RegionInfo.EstateSettings.RemoveEstateManager(user); |
676 | Scene.RegionInfo.EstateSettings.Save(); | 949 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
677 | 950 | ||
678 | TriggerEstateInfoChange(); | 951 | TriggerEstateInfoChange(); |
679 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); | 952 | remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); |
@@ -685,7 +958,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
685 | } | 958 | } |
686 | } | 959 | } |
687 | 960 | ||
688 | public void handleOnEstateManageTelehub(IClientAPI client, UUID invoice, UUID senderID, string cmd, uint param1) | 961 | public void HandleOnEstateManageTelehub(IClientAPI client, UUID invoice, UUID senderID, string cmd, uint param1) |
689 | { | 962 | { |
690 | SceneObjectPart part; | 963 | SceneObjectPart part; |
691 | 964 | ||
@@ -725,7 +998,9 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
725 | default: | 998 | default: |
726 | break; | 999 | break; |
727 | } | 1000 | } |
728 | SendTelehubInfo(client); | 1001 | |
1002 | if (client != null) | ||
1003 | SendTelehubInfo(client); | ||
729 | } | 1004 | } |
730 | 1005 | ||
731 | private void SendSimulatorBlueBoxMessage( | 1006 | private void SendSimulatorBlueBoxMessage( |
@@ -777,7 +1052,11 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
777 | ScenePresence s = Scene.GetScenePresence(prey); | 1052 | ScenePresence s = Scene.GetScenePresence(prey); |
778 | if (s != null) | 1053 | if (s != null) |
779 | { | 1054 | { |
780 | Scene.TeleportClientHome(prey, s.ControllingClient); | 1055 | if (!Scene.TeleportClientHome(prey, s.ControllingClient)) |
1056 | { | ||
1057 | s.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out."); | ||
1058 | Scene.CloseAgent(s.UUID, false); | ||
1059 | } | ||
781 | } | 1060 | } |
782 | } | 1061 | } |
783 | } | 1062 | } |
@@ -795,33 +1074,36 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
795 | // Also make sure they are actually in the region | 1074 | // Also make sure they are actually in the region |
796 | ScenePresence p; | 1075 | ScenePresence p; |
797 | if(Scene.TryGetScenePresence(client.AgentId, out p)) | 1076 | if(Scene.TryGetScenePresence(client.AgentId, out p)) |
798 | Scene.TeleportClientHome(p.UUID, p.ControllingClient); | 1077 | { |
1078 | if (!Scene.TeleportClientHome(p.UUID, p.ControllingClient)) | ||
1079 | { | ||
1080 | p.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out."); | ||
1081 | Scene.CloseAgent(p.UUID, false); | ||
1082 | } | ||
1083 | } | ||
799 | } | 1084 | } |
800 | }); | 1085 | }); |
801 | } | 1086 | } |
802 | 1087 | ||
803 | private void AbortTerrainXferHandler(IClientAPI remoteClient, ulong XferID) | 1088 | private void AbortTerrainXferHandler(IClientAPI remoteClient, ulong XferID) |
804 | { | 1089 | { |
805 | if (TerrainUploader != null) | 1090 | lock (this) |
806 | { | 1091 | { |
807 | lock (TerrainUploader) | 1092 | if ((TerrainUploader != null) && (XferID == TerrainUploader.XferID)) |
808 | { | 1093 | { |
809 | if (XferID == TerrainUploader.XferID) | 1094 | remoteClient.OnXferReceive -= TerrainUploader.XferReceive; |
810 | { | 1095 | remoteClient.OnAbortXfer -= AbortTerrainXferHandler; |
811 | remoteClient.OnXferReceive -= TerrainUploader.XferReceive; | 1096 | TerrainUploader.TerrainUploadDone -= HandleTerrainApplication; |
812 | remoteClient.OnAbortXfer -= AbortTerrainXferHandler; | ||
813 | TerrainUploader.TerrainUploadDone -= HandleTerrainApplication; | ||
814 | 1097 | ||
815 | TerrainUploader = null; | 1098 | TerrainUploader = null; |
816 | remoteClient.SendAlertMessage("Terrain Upload aborted by the client"); | 1099 | remoteClient.SendAlertMessage("Terrain Upload aborted by the client"); |
817 | } | ||
818 | } | 1100 | } |
819 | } | 1101 | } |
820 | |||
821 | } | 1102 | } |
1103 | |||
822 | private void HandleTerrainApplication(string filename, byte[] terrainData, IClientAPI remoteClient) | 1104 | private void HandleTerrainApplication(string filename, byte[] terrainData, IClientAPI remoteClient) |
823 | { | 1105 | { |
824 | lock (TerrainUploader) | 1106 | lock (this) |
825 | { | 1107 | { |
826 | remoteClient.OnXferReceive -= TerrainUploader.XferReceive; | 1108 | remoteClient.OnXferReceive -= TerrainUploader.XferReceive; |
827 | remoteClient.OnAbortXfer -= AbortTerrainXferHandler; | 1109 | remoteClient.OnAbortXfer -= AbortTerrainXferHandler; |
@@ -829,18 +1111,18 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
829 | 1111 | ||
830 | TerrainUploader = null; | 1112 | TerrainUploader = null; |
831 | } | 1113 | } |
1114 | |||
1115 | m_log.DebugFormat("[CLIENT]: Terrain upload from {0} to {1} complete.", remoteClient.Name, Scene.Name); | ||
832 | remoteClient.SendAlertMessage("Terrain Upload Complete. Loading...."); | 1116 | remoteClient.SendAlertMessage("Terrain Upload Complete. Loading...."); |
1117 | |||
833 | ITerrainModule terr = Scene.RequestModuleInterface<ITerrainModule>(); | 1118 | ITerrainModule terr = Scene.RequestModuleInterface<ITerrainModule>(); |
834 | 1119 | ||
835 | if (terr != null) | 1120 | if (terr != null) |
836 | { | 1121 | { |
837 | m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + Scene.RegionInfo.RegionName); | ||
838 | |||
839 | try | 1122 | try |
840 | { | 1123 | { |
841 | MemoryStream terrainStream = new MemoryStream(terrainData); | 1124 | using (MemoryStream terrainStream = new MemoryStream(terrainData)) |
842 | terr.LoadFromStream(filename, terrainStream); | 1125 | terr.LoadFromStream(filename, terrainStream); |
843 | terrainStream.Close(); | ||
844 | 1126 | ||
845 | FileInfo x = new FileInfo(filename); | 1127 | FileInfo x = new FileInfo(filename); |
846 | remoteClient.SendAlertMessage("Your terrain was loaded as a " + x.Extension + " file. It may take a few moments to appear."); | 1128 | remoteClient.SendAlertMessage("Your terrain was loaded as a " + x.Extension + " file. It may take a few moments to appear."); |
@@ -880,25 +1162,27 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
880 | 1162 | ||
881 | private void handleUploadTerrain(IClientAPI remote_client, string clientFileName) | 1163 | private void handleUploadTerrain(IClientAPI remote_client, string clientFileName) |
882 | { | 1164 | { |
883 | if (TerrainUploader == null) | 1165 | lock (this) |
884 | { | 1166 | { |
885 | 1167 | if (TerrainUploader == null) | |
886 | TerrainUploader = new EstateTerrainXferHandler(remote_client, clientFileName); | ||
887 | lock (TerrainUploader) | ||
888 | { | 1168 | { |
1169 | m_log.DebugFormat( | ||
1170 | "[TERRAIN]: Started receiving terrain upload for region {0} from {1}", | ||
1171 | Scene.Name, remote_client.Name); | ||
1172 | |||
1173 | TerrainUploader = new EstateTerrainXferHandler(remote_client, clientFileName); | ||
889 | remote_client.OnXferReceive += TerrainUploader.XferReceive; | 1174 | remote_client.OnXferReceive += TerrainUploader.XferReceive; |
890 | remote_client.OnAbortXfer += AbortTerrainXferHandler; | 1175 | remote_client.OnAbortXfer += AbortTerrainXferHandler; |
891 | TerrainUploader.TerrainUploadDone += HandleTerrainApplication; | 1176 | TerrainUploader.TerrainUploadDone += HandleTerrainApplication; |
1177 | TerrainUploader.RequestStartXfer(remote_client); | ||
1178 | } | ||
1179 | else | ||
1180 | { | ||
1181 | remote_client.SendAlertMessage("Another Terrain Upload is in progress. Please wait your turn!"); | ||
892 | } | 1182 | } |
893 | TerrainUploader.RequestStartXfer(remote_client); | ||
894 | |||
895 | } | ||
896 | else | ||
897 | { | ||
898 | remote_client.SendAlertMessage("Another Terrain Upload is in progress. Please wait your turn!"); | ||
899 | } | 1183 | } |
900 | } | 1184 | } |
901 | 1185 | ||
902 | private void handleTerrainRequest(IClientAPI remote_client, string clientFileName) | 1186 | private void handleTerrainRequest(IClientAPI remote_client, string clientFileName) |
903 | { | 1187 | { |
904 | // Save terrain here | 1188 | // Save terrain here |
@@ -906,7 +1190,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
906 | 1190 | ||
907 | if (terr != null) | 1191 | if (terr != null) |
908 | { | 1192 | { |
909 | m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + Scene.RegionInfo.RegionName); | 1193 | // m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + Scene.RegionInfo.RegionName); |
910 | if (File.Exists(Util.dataDir() + "/terrain.raw")) | 1194 | if (File.Exists(Util.dataDir() + "/terrain.raw")) |
911 | { | 1195 | { |
912 | File.Delete(Util.dataDir() + "/terrain.raw"); | 1196 | File.Delete(Util.dataDir() + "/terrain.raw"); |
@@ -918,8 +1202,9 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
918 | input.Read(bdata, 0, (int)input.Length); | 1202 | input.Read(bdata, 0, (int)input.Length); |
919 | remote_client.SendAlertMessage("Terrain file written, starting download..."); | 1203 | remote_client.SendAlertMessage("Terrain file written, starting download..."); |
920 | Scene.XferManager.AddNewFile("terrain.raw", bdata); | 1204 | Scene.XferManager.AddNewFile("terrain.raw", bdata); |
921 | // Tell client about it | 1205 | |
922 | m_log.Warn("[CLIENT]: Sending Terrain to " + remote_client.Name); | 1206 | m_log.DebugFormat("[CLIENT]: Sending terrain for region {0} to {1}", Scene.Name, remote_client.Name); |
1207 | |||
923 | remote_client.SendInitiateDownload("terrain.raw", clientFileName); | 1208 | remote_client.SendInitiateDownload("terrain.raw", clientFileName); |
924 | } | 1209 | } |
925 | } | 1210 | } |
@@ -1080,11 +1365,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
1080 | remoteClient.SendRegionHandshake(Scene.RegionInfo,args); | 1365 | remoteClient.SendRegionHandshake(Scene.RegionInfo,args); |
1081 | } | 1366 | } |
1082 | 1367 | ||
1083 | public void sendRegionHandshakeToAll() | ||
1084 | { | ||
1085 | Scene.ForEachClient(sendRegionHandshake); | ||
1086 | } | ||
1087 | |||
1088 | public void handleEstateChangeInfo(IClientAPI remoteClient, UUID invoice, UUID senderID, UInt32 parms1, UInt32 parms2) | 1368 | public void handleEstateChangeInfo(IClientAPI remoteClient, UUID invoice, UUID senderID, UInt32 parms1, UInt32 parms2) |
1089 | { | 1369 | { |
1090 | if (parms2 == 0) | 1370 | if (parms2 == 0) |
@@ -1096,6 +1376,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
1096 | { | 1376 | { |
1097 | Scene.RegionInfo.EstateSettings.UseGlobalTime = false; | 1377 | Scene.RegionInfo.EstateSettings.UseGlobalTime = false; |
1098 | Scene.RegionInfo.EstateSettings.SunPosition = (parms2 - 0x1800)/1024.0; | 1378 | Scene.RegionInfo.EstateSettings.SunPosition = (parms2 - 0x1800)/1024.0; |
1379 | // Warning: FixedSun should be set to True, otherwise this sun position won't be used. | ||
1099 | } | 1380 | } |
1100 | 1381 | ||
1101 | if ((parms1 & 0x00000010) != 0) | 1382 | if ((parms1 & 0x00000010) != 0) |
@@ -1138,7 +1419,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
1138 | else | 1419 | else |
1139 | Scene.RegionInfo.EstateSettings.DenyMinors = false; | 1420 | Scene.RegionInfo.EstateSettings.DenyMinors = false; |
1140 | 1421 | ||
1141 | Scene.RegionInfo.EstateSettings.Save(); | 1422 | Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings); |
1142 | TriggerEstateInfoChange(); | 1423 | TriggerEstateInfoChange(); |
1143 | 1424 | ||
1144 | Scene.TriggerEstateSunUpdate(); | 1425 | Scene.TriggerEstateSunUpdate(); |
@@ -1165,11 +1446,12 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
1165 | sendRegionInfoPacketToAll(); | 1446 | sendRegionInfoPacketToAll(); |
1166 | } | 1447 | } |
1167 | 1448 | ||
1168 | #endregion | 1449 | |
1450 | #endregion | ||
1169 | 1451 | ||
1170 | private void EventManager_OnNewClient(IClientAPI client) | 1452 | private void EventManager_OnNewClient(IClientAPI client) |
1171 | { | 1453 | { |
1172 | client.OnDetailedEstateDataRequest += sendDetailedEstateData; | 1454 | client.OnDetailedEstateDataRequest += clientSendDetailedEstateData; |
1173 | client.OnSetEstateFlagsRequest += estateSetRegionInfoHandler; | 1455 | client.OnSetEstateFlagsRequest += estateSetRegionInfoHandler; |
1174 | // client.OnSetEstateTerrainBaseTexture += setEstateTerrainBaseTexture; | 1456 | // client.OnSetEstateTerrainBaseTexture += setEstateTerrainBaseTexture; |
1175 | client.OnSetEstateTerrainDetailTexture += setEstateTerrainBaseTexture; | 1457 | client.OnSetEstateTerrainDetailTexture += setEstateTerrainBaseTexture; |
@@ -1179,7 +1461,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
1179 | client.OnEstateRestartSimRequest += handleEstateRestartSimRequest; | 1461 | client.OnEstateRestartSimRequest += handleEstateRestartSimRequest; |
1180 | client.OnEstateChangeCovenantRequest += handleChangeEstateCovenantRequest; | 1462 | client.OnEstateChangeCovenantRequest += handleChangeEstateCovenantRequest; |
1181 | client.OnEstateChangeInfo += handleEstateChangeInfo; | 1463 | client.OnEstateChangeInfo += handleEstateChangeInfo; |
1182 | client.OnEstateManageTelehub += handleOnEstateManageTelehub; | 1464 | client.OnEstateManageTelehub += HandleOnEstateManageTelehub; |
1183 | client.OnUpdateEstateAccessDeltaRequest += handleEstateAccessDeltaRequest; | 1465 | client.OnUpdateEstateAccessDeltaRequest += handleEstateAccessDeltaRequest; |
1184 | client.OnSimulatorBlueBoxMessageRequest += SendSimulatorBlueBoxMessage; | 1466 | client.OnSimulatorBlueBoxMessageRequest += SendSimulatorBlueBoxMessage; |
1185 | client.OnEstateBlueBoxMessageRequest += SendEstateBlueBoxMessage; | 1467 | client.OnEstateBlueBoxMessageRequest += SendEstateBlueBoxMessage; |
@@ -1195,56 +1477,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
1195 | sendRegionHandshake(client); | 1477 | sendRegionHandshake(client); |
1196 | } | 1478 | } |
1197 | 1479 | ||
1198 | public uint GetRegionFlags() | 1480 | private uint GetEstateFlags() |
1199 | { | ||
1200 | RegionFlags flags = RegionFlags.None; | ||
1201 | |||
1202 | // Fully implemented | ||
1203 | // | ||
1204 | if (Scene.RegionInfo.RegionSettings.AllowDamage) | ||
1205 | flags |= RegionFlags.AllowDamage; | ||
1206 | if (Scene.RegionInfo.RegionSettings.BlockTerraform) | ||
1207 | flags |= RegionFlags.BlockTerraform; | ||
1208 | if (!Scene.RegionInfo.RegionSettings.AllowLandResell) | ||
1209 | flags |= RegionFlags.BlockLandResell; | ||
1210 | if (Scene.RegionInfo.RegionSettings.DisableCollisions) | ||
1211 | flags |= RegionFlags.SkipCollisions; | ||
1212 | if (Scene.RegionInfo.RegionSettings.DisableScripts) | ||
1213 | flags |= RegionFlags.SkipScripts; | ||
1214 | if (Scene.RegionInfo.RegionSettings.DisablePhysics) | ||
1215 | flags |= RegionFlags.SkipPhysics; | ||
1216 | if (Scene.RegionInfo.RegionSettings.BlockFly) | ||
1217 | flags |= RegionFlags.NoFly; | ||
1218 | if (Scene.RegionInfo.RegionSettings.RestrictPushing) | ||
1219 | flags |= RegionFlags.RestrictPushObject; | ||
1220 | if (Scene.RegionInfo.RegionSettings.AllowLandJoinDivide) | ||
1221 | flags |= RegionFlags.AllowParcelChanges; | ||
1222 | if (Scene.RegionInfo.RegionSettings.BlockShowInSearch) | ||
1223 | flags |= RegionFlags.BlockParcelSearch; | ||
1224 | |||
1225 | if (Scene.RegionInfo.RegionSettings.FixedSun) | ||
1226 | flags |= RegionFlags.SunFixed; | ||
1227 | if (Scene.RegionInfo.RegionSettings.Sandbox) | ||
1228 | flags |= RegionFlags.Sandbox; | ||
1229 | if (Scene.RegionInfo.EstateSettings.AllowVoice) | ||
1230 | flags |= RegionFlags.AllowVoice; | ||
1231 | |||
1232 | // Fudge these to always on, so the menu options activate | ||
1233 | // | ||
1234 | flags |= RegionFlags.AllowLandmark; | ||
1235 | flags |= RegionFlags.AllowSetHome; | ||
1236 | |||
1237 | // TODO: SkipUpdateInterestList | ||
1238 | |||
1239 | // Omitted | ||
1240 | // | ||
1241 | // Omitted: NullLayer (what is that?) | ||
1242 | // Omitted: SkipAgentAction (what does it do?) | ||
1243 | |||
1244 | return (uint)flags; | ||
1245 | } | ||
1246 | |||
1247 | public uint GetEstateFlags() | ||
1248 | { | 1481 | { |
1249 | RegionFlags flags = RegionFlags.None; | 1482 | RegionFlags flags = RegionFlags.None; |
1250 | 1483 | ||
@@ -1273,40 +1506,18 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
1273 | flags |= RegionFlags.ResetHomeOnTeleport; | 1506 | flags |= RegionFlags.ResetHomeOnTeleport; |
1274 | if (Scene.RegionInfo.EstateSettings.TaxFree) | 1507 | if (Scene.RegionInfo.EstateSettings.TaxFree) |
1275 | flags |= RegionFlags.TaxFree; | 1508 | flags |= RegionFlags.TaxFree; |
1509 | if (Scene.RegionInfo.EstateSettings.AllowLandmark) | ||
1510 | flags |= RegionFlags.AllowLandmark; | ||
1511 | if (Scene.RegionInfo.EstateSettings.AllowParcelChanges) | ||
1512 | flags |= RegionFlags.AllowParcelChanges; | ||
1513 | if (Scene.RegionInfo.EstateSettings.AllowSetHome) | ||
1514 | flags |= RegionFlags.AllowSetHome; | ||
1276 | if (Scene.RegionInfo.EstateSettings.DenyMinors) | 1515 | if (Scene.RegionInfo.EstateSettings.DenyMinors) |
1277 | flags |= (RegionFlags)(1 << 30); | 1516 | flags |= (RegionFlags)(1 << 30); |
1278 | 1517 | ||
1279 | return (uint)flags; | 1518 | return (uint)flags; |
1280 | } | 1519 | } |
1281 | 1520 | ||
1282 | public bool IsManager(UUID avatarID) | ||
1283 | { | ||
1284 | if (avatarID == Scene.RegionInfo.EstateSettings.EstateOwner) | ||
1285 | return true; | ||
1286 | |||
1287 | List<UUID> ems = new List<UUID>(Scene.RegionInfo.EstateSettings.EstateManagers); | ||
1288 | if (ems.Contains(avatarID)) | ||
1289 | return true; | ||
1290 | |||
1291 | return false; | ||
1292 | } | ||
1293 | |||
1294 | public void TriggerRegionInfoChange() | ||
1295 | { | ||
1296 | ChangeDelegate change = OnRegionInfoChange; | ||
1297 | |||
1298 | if (change != null) | ||
1299 | change(Scene.RegionInfo.RegionID); | ||
1300 | } | ||
1301 | |||
1302 | public void TriggerEstateInfoChange() | ||
1303 | { | ||
1304 | ChangeDelegate change = OnEstateInfoChange; | ||
1305 | |||
1306 | if (change != null) | ||
1307 | change(Scene.RegionInfo.RegionID); | ||
1308 | } | ||
1309 | |||
1310 | public void TriggerEstateMessage(UUID fromID, string fromName, string message) | 1521 | public void TriggerEstateMessage(UUID fromID, string fromName, string message) |
1311 | { | 1522 | { |
1312 | MessageDelegate onmessage = OnEstateMessage; | 1523 | MessageDelegate onmessage = OnEstateMessage; |