diff options
author | Melanie | 2011-01-27 03:49:32 +0100 |
---|---|---|
committer | Melanie | 2011-01-27 05:32:54 +0000 |
commit | 61b67b2eade480c5fd75c6ba347e117f0e00f055 (patch) | |
tree | c9eb7858d11accd8af7639bb05ee89250db43a9d /OpenSim | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC-61b67b2eade480c5fd75c6ba347e117f0e00f055.zip opensim-SC-61b67b2eade480c5fd75c6ba347e117f0e00f055.tar.gz opensim-SC-61b67b2eade480c5fd75c6ba347e117f0e00f055.tar.bz2 opensim-SC-61b67b2eade480c5fd75c6ba347e117f0e00f055.tar.xz |
Add TeleportFlags.ViaRegionID to the flags sent on login when the region
was entered by hand to determine whether or not to honor the landing
point
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Services/LLLoginService/LLLoginService.cs | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 7568870..1ab63f7 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs | |||
@@ -320,7 +320,8 @@ namespace OpenSim.Services.LLLoginService | |||
320 | Vector3 position = Vector3.Zero; | 320 | Vector3 position = Vector3.Zero; |
321 | Vector3 lookAt = Vector3.Zero; | 321 | Vector3 lookAt = Vector3.Zero; |
322 | GridRegion gatekeeper = null; | 322 | GridRegion gatekeeper = null; |
323 | GridRegion destination = FindDestination(account, scopeID, guinfo, session, startLocation, home, out gatekeeper, out where, out position, out lookAt); | 323 | TeleportFlags flags; |
324 | GridRegion destination = FindDestination(account, scopeID, guinfo, session, startLocation, home, out gatekeeper, out where, out position, out lookAt, out flags); | ||
324 | if (destination == null) | 325 | if (destination == null) |
325 | { | 326 | { |
326 | m_PresenceService.LogoutAgent(session); | 327 | m_PresenceService.LogoutAgent(session); |
@@ -343,7 +344,7 @@ namespace OpenSim.Services.LLLoginService | |||
343 | string reason = string.Empty; | 344 | string reason = string.Empty; |
344 | GridRegion dest; | 345 | GridRegion dest; |
345 | AgentCircuitData aCircuit = LaunchAgentAtGrid(gatekeeper, destination, account, avatar, session, secureSession, position, where, | 346 | AgentCircuitData aCircuit = LaunchAgentAtGrid(gatekeeper, destination, account, avatar, session, secureSession, position, where, |
346 | clientVersion, channel, mac, id0, clientIP, out where, out reason, out dest); | 347 | clientVersion, channel, mac, id0, clientIP, flags, out where, out reason, out dest); |
347 | destination = dest; | 348 | destination = dest; |
348 | if (aCircuit == null) | 349 | if (aCircuit == null) |
349 | { | 350 | { |
@@ -378,8 +379,10 @@ namespace OpenSim.Services.LLLoginService | |||
378 | } | 379 | } |
379 | } | 380 | } |
380 | 381 | ||
381 | protected GridRegion FindDestination(UserAccount account, UUID scopeID, GridUserInfo pinfo, UUID sessionID, string startLocation, GridRegion home, out GridRegion gatekeeper, out string where, out Vector3 position, out Vector3 lookAt) | 382 | protected GridRegion FindDestination(UserAccount account, UUID scopeID, GridUserInfo pinfo, UUID sessionID, string startLocation, GridRegion home, out GridRegion gatekeeper, out string where, out Vector3 position, out Vector3 lookAt, out TeleportFlags flags) |
382 | { | 383 | { |
384 | flags = TeleportFlags.ViaLogin; | ||
385 | |||
383 | m_log.DebugFormat("[LLOGIN SERVICE]: FindDestination for start location {0}", startLocation); | 386 | m_log.DebugFormat("[LLOGIN SERVICE]: FindDestination for start location {0}", startLocation); |
384 | 387 | ||
385 | gatekeeper = null; | 388 | gatekeeper = null; |
@@ -473,6 +476,8 @@ namespace OpenSim.Services.LLLoginService | |||
473 | } | 476 | } |
474 | else | 477 | else |
475 | { | 478 | { |
479 | flags |= TeleportFlags.ViaRegionID; | ||
480 | |||
476 | // free uri form | 481 | // free uri form |
477 | // e.g. New Moon&135&46 New Moon@osgrid.org:8002&153&34 | 482 | // e.g. New Moon&135&46 New Moon@osgrid.org:8002&153&34 |
478 | where = "url"; | 483 | where = "url"; |
@@ -624,7 +629,7 @@ namespace OpenSim.Services.LLLoginService | |||
624 | 629 | ||
625 | protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarAppearance avatar, | 630 | protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarAppearance avatar, |
626 | UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, string channel, string mac, string id0, | 631 | UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, string channel, string mac, string id0, |
627 | IPEndPoint clientIP, out string where, out string reason, out GridRegion dest) | 632 | IPEndPoint clientIP, TeleportFlags flags, out string where, out string reason, out GridRegion dest) |
628 | { | 633 | { |
629 | where = currentWhere; | 634 | where = currentWhere; |
630 | ISimulationService simConnector = null; | 635 | ISimulationService simConnector = null; |
@@ -663,7 +668,7 @@ namespace OpenSim.Services.LLLoginService | |||
663 | { | 668 | { |
664 | circuitCode = (uint)Util.RandomClass.Next(); ; | 669 | circuitCode = (uint)Util.RandomClass.Next(); ; |
665 | aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, clientIP.Address.ToString(), viewer, channel, mac, id0); | 670 | aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, clientIP.Address.ToString(), viewer, channel, mac, id0); |
666 | success = LaunchAgentDirectly(simConnector, destination, aCircuit, out reason); | 671 | success = LaunchAgentDirectly(simConnector, destination, aCircuit, flags, out reason); |
667 | if (!success && m_GridService != null) | 672 | if (!success && m_GridService != null) |
668 | { | 673 | { |
669 | // Try the fallback regions | 674 | // Try the fallback regions |
@@ -672,7 +677,7 @@ namespace OpenSim.Services.LLLoginService | |||
672 | { | 677 | { |
673 | foreach (GridRegion r in fallbacks) | 678 | foreach (GridRegion r in fallbacks) |
674 | { | 679 | { |
675 | success = LaunchAgentDirectly(simConnector, r, aCircuit, out reason); | 680 | success = LaunchAgentDirectly(simConnector, r, aCircuit, flags | TeleportFlags.ViaRegionID, out reason); |
676 | if (success) | 681 | if (success) |
677 | { | 682 | { |
678 | where = "safe"; | 683 | where = "safe"; |
@@ -795,9 +800,9 @@ namespace OpenSim.Services.LLLoginService | |||
795 | 800 | ||
796 | } | 801 | } |
797 | 802 | ||
798 | private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, out string reason) | 803 | private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, TeleportFlags flags, out string reason) |
799 | { | 804 | { |
800 | return simConnector.CreateAgent(region, aCircuit, (int)Constants.TeleportFlags.ViaLogin, out reason); | 805 | return simConnector.CreateAgent(region, aCircuit, (uint)flags, out reason); |
801 | } | 806 | } |
802 | 807 | ||
803 | private bool LaunchAgentIndirectly(GridRegion gatekeeper, GridRegion destination, AgentCircuitData aCircuit, IPEndPoint clientIP, out string reason) | 808 | private bool LaunchAgentIndirectly(GridRegion gatekeeper, GridRegion destination, AgentCircuitData aCircuit, IPEndPoint clientIP, out string reason) |