aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs34
1 files changed, 30 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 4c8e2d2..d2a8ad0 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -3259,8 +3259,11 @@ namespace OpenSim.Region.Framework.Scenes
3259 /// also return a reason.</returns> 3259 /// also return a reason.</returns>
3260 public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason, bool requirePresenceLookup) 3260 public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason, bool requirePresenceLookup)
3261 { 3261 {
3262 bool vialogin = ((teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0 || 3262 bool vialogin = ((teleportFlags & (uint)TPFlags.ViaLogin) != 0 ||
3263 (teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0); 3263 (teleportFlags & (uint)TPFlags.ViaHGLogin) != 0);
3264 bool viahome = ((teleportFlags & (uint)TPFlags.ViaHome) != 0);
3265 bool godlike = ((teleportFlags & (uint)TPFlags.Godlike) != 0);
3266
3264 reason = String.Empty; 3267 reason = String.Empty;
3265 3268
3266 //Teleport flags: 3269 //Teleport flags:
@@ -3272,9 +3275,9 @@ namespace OpenSim.Region.Framework.Scenes
3272 3275
3273 // Don't disable this log message - it's too helpful 3276 // Don't disable this log message - it's too helpful
3274 m_log.DebugFormat( 3277 m_log.DebugFormat(
3275 "[SCENE]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5}, IP {6}, viewer {7}, teleportflags {8}, position {9})", 3278 "[SCENE]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5}, IP {6}, viewer {7}, teleportflags ({8}), position {9})",
3276 RegionInfo.RegionName, (agent.child ? "child" : "root"),agent.firstname, agent.lastname, 3279 RegionInfo.RegionName, (agent.child ? "child" : "root"),agent.firstname, agent.lastname,
3277 agent.AgentID, agent.circuitcode, agent.IPAddress, agent.Viewer, teleportFlags, agent.startpos); 3280 agent.AgentID, agent.circuitcode, agent.IPAddress, agent.Viewer, ((TPFlags)teleportFlags).ToString(), agent.startpos);
3278 3281
3279 if (LoginsDisabled) 3282 if (LoginsDisabled)
3280 { 3283 {
@@ -3427,6 +3430,29 @@ namespace OpenSim.Region.Framework.Scenes
3427 agent.startpos.Z = 720; 3430 agent.startpos.Z = 720;
3428 } 3431 }
3429 } 3432 }
3433
3434 // Honor Estate teleport routing via Telehubs excluding ViaHome and GodLike TeleportFlags
3435 if (RegionInfo.RegionSettings.TelehubObject != UUID.Zero &&
3436 RegionInfo.EstateSettings.AllowDirectTeleport == false &&
3437 !viahome && !godlike)
3438 {
3439 SceneObjectGroup telehub = GetSceneObjectGroup(RegionInfo.RegionSettings.TelehubObject);
3440 // Can have multiple SpawnPoints
3441 List<SpawnPoint> spawnpoints = RegionInfo.RegionSettings.SpawnPoints();
3442 if ( spawnpoints.Count > 1)
3443 {
3444 // We have multiple SpawnPoints, Route the agent to a random one
3445 agent.startpos = spawnpoints[Util.RandomClass.Next(spawnpoints.Count)].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation);
3446 }
3447 else
3448 {
3449 // We have a single SpawnPoint and will route the agent to it
3450 agent.startpos = spawnpoints[0].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation);
3451 }
3452
3453 return true;
3454 }
3455
3430 // Honor parcel landing type and position. 3456 // Honor parcel landing type and position.
3431 if (land != null) 3457 if (land != null)
3432 { 3458 {