diff options
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index ef281a6..840bdef 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1117,21 +1117,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
1117 | } | 1117 | } |
1118 | else | 1118 | else |
1119 | { | 1119 | { |
1120 | if (rotateToVelXY) | ||
1121 | { | ||
1122 | float x = ((Vector3)newvel).X; | ||
1123 | float y = ((Vector3)newvel).Y; | ||
1124 | |||
1125 | x = 0.5f * (float)Math.Atan2(y, x); | ||
1126 | y = (float)Math.Cos(x); | ||
1127 | x = (float)Math.Sin(x); | ||
1128 | Rotation = new Quaternion(0f, 0f, x, y); | ||
1129 | m_log.DebugFormat("[avnLocalTeleport] final rotation {0}", Rotation); | ||
1130 | } | ||
1131 | |||
1132 | if (PhysicsActor != null) | 1120 | if (PhysicsActor != null) |
1133 | PhysicsActor.SetMomentum((Vector3)newvel); | 1121 | PhysicsActor.SetMomentum((Vector3)newvel); |
1134 | m_velocity = (Vector3)newvel; | 1122 | m_velocity = (Vector3)newvel; |
1123 | |||
1124 | if (rotateToVelXY) | ||
1125 | { | ||
1126 | Vector3 lookAt = (Vector3)newvel; | ||
1127 | lookAt.Z = 0; | ||
1128 | lookAt.Normalize(); | ||
1129 | ControllingClient.SendLocalTeleport(newpos, lookAt, (uint)TeleportFlags.ViaLocation); | ||
1130 | return; | ||
1131 | } | ||
1135 | } | 1132 | } |
1136 | } | 1133 | } |
1137 | 1134 | ||