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(-)
(limited to 'OpenSim')
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