From 5b752dd4b7fd2600157ec90da5051623afe1dc4d Mon Sep 17 00:00:00 2001 From: onefang Date: Sun, 21 Jul 2019 21:25:11 +1000 Subject: TPs from scripts avoid all that silly raycasting nonsense, just go where we ask. --- OpenSim/Framework/Constants.cs | 4 +++- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 +- OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 8 ++++---- OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 8 ++++---- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/OpenSim/Framework/Constants.cs b/OpenSim/Framework/Constants.cs index a79b7d8..15da7e6 100644 --- a/OpenSim/Framework/Constants.cs +++ b/OpenSim/Framework/Constants.cs @@ -72,7 +72,7 @@ namespace OpenSim.Framework ViaLure = 1 << 2, /// Via Landmark ViaLandmark = 1 << 3, - /// Via Location + /// Via Location, seems to be a catch all, includes scripted TPs. ViaLocation = 1 << 4, /// Via Home ViaHome = 1 << 5, @@ -96,6 +96,8 @@ namespace OpenSim.Framework ResetHome = 1 << 14, /// forced to new location for example when avatar is banned or ejected ForceRedirect = 1 << 15, + /// Via script. + ViaScript = 1 << 16, /// Teleport Finished via a Lure FinishedViaLure = 1 << 26, /// Finished, Sim Changed diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 8055f92..c0543fd 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1370,7 +1370,7 @@ namespace OpenSim.Region.Framework.Scenes || (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0); - if(checkPhysics) + if(checkPhysics && (m_teleportFlags & TeleportFlags.ViaScript) == 0) { // land check was done above RayFilterFlags rayfilter = RayFilterFlags.BackFaceCull; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 8141c17..84e4546 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -4689,7 +4689,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { World.RequestTeleportLocation( presence.ControllingClient, regionInfo.RegionHandle, new Vector3(128, 128, 23), Vector3.Zero, - (uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaHome)); + (uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaHome | Constants.TeleportFlags.ViaScript)); } } } @@ -4768,7 +4768,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_TELEPORT) != 0) { - World.RequestTeleportLocation(presence.ControllingClient, regionHandle, targetPos, targetLookAt, (uint)TeleportFlags.ViaLocation); + World.RequestTeleportLocation(presence.ControllingClient, regionHandle, targetPos, targetLookAt, (uint)(Constants.TeleportFlags.ViaLocation | Constants.TeleportFlags.ViaScript)); } } } @@ -4782,7 +4782,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // Use it as a sim name if (assetID == UUID.Zero) { - World.RequestTeleportLocation(sp.ControllingClient, destination, targetPos, targetLookAt, (uint)TeleportFlags.ViaLocation); + World.RequestTeleportLocation(sp.ControllingClient, destination, targetPos, targetLookAt, (uint)(Constants.TeleportFlags.ViaLocation | Constants.TeleportFlags.ViaScript)); return; } @@ -4795,7 +4795,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api AssetLandmark lm = new AssetLandmark(lma); - World.RequestTeleportLocation(sp.ControllingClient, lm.RegionHandle, targetPos, targetLookAt, (uint)TeleportFlags.ViaLocation); + World.RequestTeleportLocation(sp.ControllingClient, lm.RegionHandle, targetPos, targetLookAt, (uint)(Constants.TeleportFlags.ViaLocation | Constants.TeleportFlags.ViaScript)); } public void llTextBox(string agent, string message, int chatChannel) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index d897098..2be5200 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -880,7 +880,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { // should be faster than going to threadpool World.RequestTeleportLocation(presence.ControllingClient, regionName, position, - lookat, (uint)TPFlags.ViaLocation); + lookat, (uint)(TPFlags.ViaLocation | TPFlags.ViaScript)); } else { @@ -889,7 +889,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api Util.FireAndForget( o => World.RequestTeleportLocation( presence.ControllingClient, regionName, position, - lookat, (uint)TPFlags.ViaLocation), + lookat, (uint)(TPFlags.ViaLocation | TPFlags.ViaScript)), null, "OSSL_Api.TeleportAgentByRegionCoords"); } } @@ -923,7 +923,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api Util.FireAndForget( o => World.RequestTeleportLocation( presence.ControllingClient, regionHandle, - position, lookat, (uint)TPFlags.ViaLocation), + position, lookat, (uint)(TPFlags.ViaLocation | TPFlags.ViaScript)), null, "OSSL_Api.TeleportAgentByRegionName"); } } @@ -942,7 +942,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return; World.RequestTeleportLocation(presence.ControllingClient, World.RegionInfo.RegionName, position, - lookat, (uint)TPFlags.ViaLocation); + lookat, (uint)(TPFlags.ViaLocation | TPFlags.ViaScript)); } } -- cgit v1.1