diff options
author | David Walter Seikel | 2013-02-23 07:23:24 +1000 |
---|---|---|
committer | David Walter Seikel | 2013-02-23 07:23:24 +1000 |
commit | c0c153d09340c117aea2f06ecbdd288ee017bd8e (patch) | |
tree | 71e0c2787a60de911fd87dffbd6b479a8658a15e /OpenSim | |
parent | Crude hack for simplified economy. (diff) | |
download | opensim-SC_OLD-c0c153d09340c117aea2f06ecbdd288ee017bd8e.zip opensim-SC_OLD-c0c153d09340c117aea2f06ecbdd288ee017bd8e.tar.gz opensim-SC_OLD-c0c153d09340c117aea2f06ecbdd288ee017bd8e.tar.bz2 opensim-SC_OLD-c0c153d09340c117aea2f06ecbdd288ee017bd8e.tar.xz |
No, we don't need to enshrine viewer bugs in the server, we need to fix the viewer, which is half done.
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 46 | ||||
-rw-r--r-- | OpenSim/Services/GridService/HypergridLinker.cs | 62 |
2 files changed, 0 insertions, 108 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 3cb1901..c43edd2 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -52,15 +52,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
52 | { | 52 | { |
53 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 53 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
54 | 54 | ||
55 | public const int DefaultMaxTransferDistance = 4095; | ||
56 | public const bool WaitForAgentArrivedAtDestinationDefault = true; | 55 | public const bool WaitForAgentArrivedAtDestinationDefault = true; |
57 | 56 | ||
58 | /// <summary> | 57 | /// <summary> |
59 | /// The maximum distance, in standard region units (256m) that an agent is allowed to transfer. | ||
60 | /// </summary> | ||
61 | public int MaxTransferDistance { get; set; } | ||
62 | |||
63 | /// <summary> | ||
64 | /// If true then on a teleport, the source region waits for a callback from the destination region. If | 58 | /// If true then on a teleport, the source region waits for a callback from the destination region. If |
65 | /// a callback fails to arrive within a set time then the user is pulled back into the source region. | 59 | /// a callback fails to arrive within a set time then the user is pulled back into the source region. |
66 | /// </summary> | 60 | /// </summary> |
@@ -118,12 +112,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
118 | { | 112 | { |
119 | WaitForAgentArrivedAtDestination | 113 | WaitForAgentArrivedAtDestination |
120 | = transferConfig.GetBoolean("wait_for_callback", WaitForAgentArrivedAtDestinationDefault); | 114 | = transferConfig.GetBoolean("wait_for_callback", WaitForAgentArrivedAtDestinationDefault); |
121 | |||
122 | MaxTransferDistance = transferConfig.GetInt("max_distance", DefaultMaxTransferDistance); | ||
123 | } | ||
124 | else | ||
125 | { | ||
126 | MaxTransferDistance = DefaultMaxTransferDistance; | ||
127 | } | 115 | } |
128 | 116 | ||
129 | m_entityTransferStateMachine = new EntityTransferStateMachine(this); | 117 | m_entityTransferStateMachine = new EntityTransferStateMachine(this); |
@@ -371,26 +359,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
371 | return true; | 359 | return true; |
372 | } | 360 | } |
373 | 361 | ||
374 | /// <summary> | ||
375 | /// Determines whether this instance is within the max transfer distance. | ||
376 | /// </summary> | ||
377 | /// <param name="sourceRegion"></param> | ||
378 | /// <param name="destRegion"></param> | ||
379 | /// <returns> | ||
380 | /// <c>true</c> if this instance is within max transfer distance; otherwise, <c>false</c>. | ||
381 | /// </returns> | ||
382 | private bool IsWithinMaxTeleportDistance(RegionInfo sourceRegion, GridRegion destRegion) | ||
383 | { | ||
384 | // m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Source co-ords are x={0} y={1}", curRegionX, curRegionY); | ||
385 | // | ||
386 | // m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Final dest is x={0} y={1} {2}@{3}", | ||
387 | // destRegionX, destRegionY, finalDestination.RegionID, finalDestination.ServerURI); | ||
388 | |||
389 | // Insanely, RegionLoc on RegionInfo is the 256m map co-ord whilst GridRegion.RegionLoc is the raw meters position. | ||
390 | return Math.Abs(sourceRegion.RegionLocX - destRegion.RegionCoordX) <= MaxTransferDistance | ||
391 | && Math.Abs(sourceRegion.RegionLocY - destRegion.RegionCoordY) <= MaxTransferDistance; | ||
392 | } | ||
393 | |||
394 | public void DoTeleport( | 362 | public void DoTeleport( |
395 | ScenePresence sp, GridRegion reg, GridRegion finalDestination, | 363 | ScenePresence sp, GridRegion reg, GridRegion finalDestination, |
396 | Vector3 position, Vector3 lookAt, uint teleportFlags) | 364 | Vector3 position, Vector3 lookAt, uint teleportFlags) |
@@ -421,20 +389,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
421 | 389 | ||
422 | RegionInfo sourceRegion = sp.Scene.RegionInfo; | 390 | RegionInfo sourceRegion = sp.Scene.RegionInfo; |
423 | 391 | ||
424 | if (!IsWithinMaxTeleportDistance(sourceRegion, finalDestination)) | ||
425 | { | ||
426 | sp.ControllingClient.SendTeleportFailed( | ||
427 | string.Format( | ||
428 | "Can't teleport to {0} ({1},{2}) from {3} ({4},{5}), destination is more than {6} regions way", | ||
429 | finalDestination.RegionName, finalDestination.RegionCoordX, finalDestination.RegionCoordY, | ||
430 | sourceRegion.RegionName, sourceRegion.RegionLocX, sourceRegion.RegionLocY, | ||
431 | MaxTransferDistance)); | ||
432 | |||
433 | m_entityTransferStateMachine.ResetFromTransit(sp.UUID); | ||
434 | |||
435 | return; | ||
436 | } | ||
437 | |||
438 | uint newRegionX = (uint)(reg.RegionHandle >> 40); | 392 | uint newRegionX = (uint)(reg.RegionHandle >> 40); |
439 | uint newRegionY = (((uint)(reg.RegionHandle)) >> 8); | 393 | uint newRegionY = (((uint)(reg.RegionHandle)) >> 8); |
440 | uint oldRegionX = (uint)(sp.Scene.RegionInfo.RegionHandle >> 40); | 394 | uint oldRegionX = (uint)(sp.Scene.RegionInfo.RegionHandle >> 40); |
diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 743d089..7abed20 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs | |||
@@ -63,7 +63,6 @@ namespace OpenSim.Services.GridService | |||
63 | protected GatekeeperServiceConnector m_GatekeeperConnector; | 63 | protected GatekeeperServiceConnector m_GatekeeperConnector; |
64 | 64 | ||
65 | protected UUID m_ScopeID = UUID.Zero; | 65 | protected UUID m_ScopeID = UUID.Zero; |
66 | // protected bool m_Check4096 = true; | ||
67 | protected string m_MapTileDirectory = string.Empty; | 66 | protected string m_MapTileDirectory = string.Empty; |
68 | protected string m_ThisGatekeeper = string.Empty; | 67 | protected string m_ThisGatekeeper = string.Empty; |
69 | protected Uri m_ThisGatekeeperURI = null; | 68 | protected Uri m_ThisGatekeeperURI = null; |
@@ -124,8 +123,6 @@ namespace OpenSim.Services.GridService | |||
124 | if (scope != string.Empty) | 123 | if (scope != string.Empty) |
125 | UUID.TryParse(scope, out m_ScopeID); | 124 | UUID.TryParse(scope, out m_ScopeID); |
126 | 125 | ||
127 | // m_Check4096 = gridConfig.GetBoolean("Check4096", true); | ||
128 | |||
129 | m_MapTileDirectory = gridConfig.GetString("MapTileDirectory", "maptiles"); | 126 | m_MapTileDirectory = gridConfig.GetString("MapTileDirectory", "maptiles"); |
130 | 127 | ||
131 | m_ThisGatekeeper = gridConfig.GetString("Gatekeeper", string.Empty); | 128 | m_ThisGatekeeper = gridConfig.GetString("Gatekeeper", string.Empty); |
@@ -349,19 +346,6 @@ namespace OpenSim.Services.GridService | |||
349 | return true; | 346 | return true; |
350 | } | 347 | } |
351 | 348 | ||
352 | // We are now performing this check for each individual teleport in the EntityTransferModule instead. This | ||
353 | // allows us to give better feedback when teleports fail because of the distance reason (which can't be | ||
354 | // done here) and it also hypergrid teleports that are within range (possibly because the source grid | ||
355 | // itself has regions that are very far apart). | ||
356 | // uint x, y; | ||
357 | // if (m_Check4096 && !Check4096(handle, out x, out y)) | ||
358 | // { | ||
359 | // //RemoveHyperlinkRegion(regInfo.RegionID); | ||
360 | // reason = "Region is too far (" + x + ", " + y + ")"; | ||
361 | // m_log.Info("[HYPERGRID LINKER]: Unable to link, region is too far (" + x + ", " + y + ")"); | ||
362 | // //return false; | ||
363 | // } | ||
364 | |||
365 | regInfo.RegionID = regionID; | 349 | regInfo.RegionID = regionID; |
366 | 350 | ||
367 | if (externalName == string.Empty) | 351 | if (externalName == string.Empty) |
@@ -411,52 +395,6 @@ namespace OpenSim.Services.GridService | |||
411 | } | 395 | } |
412 | } | 396 | } |
413 | 397 | ||
414 | // Not currently used | ||
415 | // /// <summary> | ||
416 | // /// Cope with this viewer limitation. | ||
417 | // /// </summary> | ||
418 | // /// <param name="regInfo"></param> | ||
419 | // /// <returns></returns> | ||
420 | // public bool Check4096(ulong realHandle, out uint x, out uint y) | ||
421 | // { | ||
422 | // uint ux = 0, uy = 0; | ||
423 | // Utils.LongToUInts(realHandle, out ux, out uy); | ||
424 | // x = ux / Constants.RegionSize; | ||
425 | // y = uy / Constants.RegionSize; | ||
426 | // | ||
427 | // const uint limit = (4096 - 1) * Constants.RegionSize; | ||
428 | // uint xmin = ux - limit; | ||
429 | // uint xmax = ux + limit; | ||
430 | // uint ymin = uy - limit; | ||
431 | // uint ymax = uy + limit; | ||
432 | // // World map boundary checks | ||
433 | // if (xmin < 0 || xmin > ux) | ||
434 | // xmin = 0; | ||
435 | // if (xmax > int.MaxValue || xmax < ux) | ||
436 | // xmax = int.MaxValue; | ||
437 | // if (ymin < 0 || ymin > uy) | ||
438 | // ymin = 0; | ||
439 | // if (ymax > int.MaxValue || ymax < uy) | ||
440 | // ymax = int.MaxValue; | ||
441 | // | ||
442 | // // Check for any regions that are within the possible teleport range to the linked region | ||
443 | // List<GridRegion> regions = m_GridService.GetRegionRange(m_ScopeID, (int)xmin, (int)xmax, (int)ymin, (int)ymax); | ||
444 | // if (regions.Count == 0) | ||
445 | // { | ||
446 | // return false; | ||
447 | // } | ||
448 | // else | ||
449 | // { | ||
450 | // // Check for regions which are not linked regions | ||
451 | // List<GridRegion> hyperlinks = m_GridService.GetHyperlinks(m_ScopeID); | ||
452 | // IEnumerable<GridRegion> availableRegions = regions.Except(hyperlinks); | ||
453 | // if (availableRegions.Count() == 0) | ||
454 | // return false; | ||
455 | // } | ||
456 | // | ||
457 | // return true; | ||
458 | // } | ||
459 | |||
460 | private void AddHyperlinkRegion(GridRegion regionInfo, ulong regionHandle) | 398 | private void AddHyperlinkRegion(GridRegion regionInfo, ulong regionHandle) |
461 | { | 399 | { |
462 | RegionData rdata = m_GridService.RegionInfo2RegionData(regionInfo); | 400 | RegionData rdata = m_GridService.RegionInfo2RegionData(regionInfo); |