From a65ca24701ac34415bf76f4d9094ab42ae721c9a Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 25 Apr 2012 01:51:40 +0100
Subject: Add regression test TestSameRegionTeleport()
---
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 6 ++++++
1 file changed, 6 insertions(+)
(limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index b5f789b..9005acd 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -990,6 +990,8 @@ namespace OpenSim.Region.Framework.Scenes
///
public void Teleport(Vector3 pos)
{
+// m_log.DebugFormat("[SCENE PRESENCE]: Moving {0} to {1} in {2}", Name, pos, Scene.RegionInfo.RegionName);
+
bool isFlying = Flying;
RemoveFromPhysicalScene();
Velocity = Vector3.Zero;
@@ -1002,6 +1004,10 @@ namespace OpenSim.Region.Framework.Scenes
public void TeleportWithMomentum(Vector3 pos)
{
+// m_log.DebugFormat(
+// "[SCENE PRESENCE]: Moving {0} to {1} with existing momentum {2} in {3} ",
+// Name, pos, Velocity, Scene.RegionInfo.RegionName);
+
bool isFlying = Flying;
RemoveFromPhysicalScene();
CheckLandingPoint(ref pos);
--
cgit v1.1
From 683cfc6f827c15ee70e4651cbcc7b94a01d2f8e3 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 25 Apr 2012 02:07:55 +0100
Subject: refactor: Combine ScenePresence.Teleport() and TeleportWithMomentum()
These are identical apart from setting Velocity = zero, which has no practical effect anyway since this is zeroed when the avatar is added back to the physics scene.
---
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 16 ----------------
1 file changed, 16 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 9005acd..8cb4921 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -994,22 +994,6 @@ namespace OpenSim.Region.Framework.Scenes
bool isFlying = Flying;
RemoveFromPhysicalScene();
- Velocity = Vector3.Zero;
- CheckLandingPoint(ref pos);
- AbsolutePosition = pos;
- AddToPhysicalScene(isFlying);
-
- SendTerseUpdateToAllClients();
- }
-
- public void TeleportWithMomentum(Vector3 pos)
- {
-// m_log.DebugFormat(
-// "[SCENE PRESENCE]: Moving {0} to {1} with existing momentum {2} in {3} ",
-// Name, pos, Velocity, Scene.RegionInfo.RegionName);
-
- bool isFlying = Flying;
- RemoveFromPhysicalScene();
CheckLandingPoint(ref pos);
AbsolutePosition = pos;
AddToPhysicalScene(isFlying);
--
cgit v1.1
From 3be3189ee067b26fa6486535a65a0c0e99a9ef5b Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 25 Apr 2012 04:00:01 +0100
Subject: Commit the avination Teleport() methods (adaptedto justincc's
changes)
---
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 8cb4921..e8178ce 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -990,13 +990,24 @@ namespace OpenSim.Region.Framework.Scenes
///
public void Teleport(Vector3 pos)
{
-// m_log.DebugFormat("[SCENE PRESENCE]: Moving {0} to {1} in {2}", Name, pos, Scene.RegionInfo.RegionName);
+ TeleportWithMomentum(pos, null);
+ }
+ public void TeleportWithMomentum(Vector3 pos, Vector3? v)
+ {
bool isFlying = Flying;
+ Vector3 vel = Velocity;
RemoveFromPhysicalScene();
CheckLandingPoint(ref pos);
AbsolutePosition = pos;
AddToPhysicalScene(isFlying);
+ if (PhysicsActor != null)
+ {
+ if (v.HasValue)
+ PhysicsActor.SetMomentum((Vector3)v);
+ else
+ PhysicsActor.SetMomentum(vel);
+ }
SendTerseUpdateToAllClients();
}
--
cgit v1.1