aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs15
1 files changed, 13 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 7db9c07..5160e73 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -547,6 +547,9 @@ namespace OpenSim.Region.Framework.Scenes
547 } 547 }
548 548
549 private bool m_inTransit; 549 private bool m_inTransit;
550 private bool m_mouseLook;
551 private bool m_leftButtonDown;
552
550 public bool IsInTransit 553 public bool IsInTransit
551 { 554 {
552 get { return m_inTransit; } 555 get { return m_inTransit; }
@@ -1141,6 +1144,8 @@ namespace OpenSim.Region.Framework.Scenes
1141 { 1144 {
1142 StandUp(); 1145 StandUp();
1143 } 1146 }
1147 m_mouseLook = (flags & (uint) AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0;
1148 m_leftButtonDown = (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0;
1144 lock (scriptedcontrols) 1149 lock (scriptedcontrols)
1145 { 1150 {
1146 if (scriptedcontrols.Count > 0) 1151 if (scriptedcontrols.Count > 0)
@@ -1206,8 +1211,14 @@ namespace OpenSim.Region.Framework.Scenes
1206 bool bResetMoveToPosition = false; 1211 bool bResetMoveToPosition = false;
1207 1212
1208 Vector3[] dirVectors; 1213 Vector3[] dirVectors;
1209 if (m_physicsActor.Flying) dirVectors = Dir_Vectors; 1214
1210 else dirVectors = GetWalkDirectionVectors(); 1215 // use camera up angle when in mouselook and not flying or when holding the left mouse button down and not flying
1216 // this prevents 'jumping' in inappropriate situations.
1217 if ((m_mouseLook && !m_physicsActor.Flying) || (m_leftButtonDown && !m_physicsActor.Flying))
1218 dirVectors = GetWalkDirectionVectors();
1219 else
1220 dirVectors = Dir_Vectors;
1221
1211 1222
1212 foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof (Dir_ControlFlags))) 1223 foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof (Dir_ControlFlags)))
1213 { 1224 {