diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 7300a24..d8ce080 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -121,6 +121,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
121 | private bool m_allowFalling = false; | 121 | private bool m_allowFalling = false; |
122 | private bool m_useFlySlow = false; | 122 | private bool m_useFlySlow = false; |
123 | private bool m_usePreJump = false; | 123 | private bool m_usePreJump = false; |
124 | private bool m_forceFly = false; | ||
125 | private bool m_flyDisabled = false; | ||
124 | 126 | ||
125 | private float m_speedModifier = 1.0f; | 127 | private float m_speedModifier = 1.0f; |
126 | 128 | ||
@@ -571,6 +573,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
571 | set { m_speedModifier = value; } | 573 | set { m_speedModifier = value; } |
572 | } | 574 | } |
573 | 575 | ||
576 | public bool ForceFly | ||
577 | { | ||
578 | get { return m_forceFly; } | ||
579 | set { m_forceFly = value; } | ||
580 | } | ||
581 | |||
582 | public bool FlyDisabled | ||
583 | { | ||
584 | get { return m_flyDisabled; } | ||
585 | set { m_flyDisabled = value; } | ||
586 | } | ||
587 | |||
574 | #endregion | 588 | #endregion |
575 | 589 | ||
576 | #region Constructor(s) | 590 | #region Constructor(s) |
@@ -880,6 +894,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
880 | AbsolutePosition = pos; | 894 | AbsolutePosition = pos; |
881 | 895 | ||
882 | AddToPhysicalScene(isFlying); | 896 | AddToPhysicalScene(isFlying); |
897 | |||
898 | if (m_forceFly) | ||
899 | { | ||
900 | m_physicsActor.Flying = true; | ||
901 | } | ||
902 | else if (m_flyDisabled) | ||
903 | { | ||
904 | m_physicsActor.Flying = false; | ||
905 | } | ||
906 | |||
883 | if (m_appearance != null) | 907 | if (m_appearance != null) |
884 | { | 908 | { |
885 | if (m_appearance.AvatarHeight > 0) | 909 | if (m_appearance.AvatarHeight > 0) |
@@ -1223,7 +1247,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1223 | { | 1247 | { |
1224 | bool oldflying = PhysicsActor.Flying; | 1248 | bool oldflying = PhysicsActor.Flying; |
1225 | 1249 | ||
1226 | PhysicsActor.Flying = ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); | 1250 | if (m_forceFly) |
1251 | PhysicsActor.Flying = true; | ||
1252 | else if (m_flyDisabled) | ||
1253 | PhysicsActor.Flying = false; | ||
1254 | else | ||
1255 | PhysicsActor.Flying = ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); | ||
1227 | 1256 | ||
1228 | if (PhysicsActor.Flying != oldflying) | 1257 | if (PhysicsActor.Flying != oldflying) |
1229 | { | 1258 | { |
@@ -1380,7 +1409,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1380 | // with something with the down arrow pressed. | 1409 | // with something with the down arrow pressed. |
1381 | 1410 | ||
1382 | // Only do this if we're flying | 1411 | // Only do this if we're flying |
1383 | if (m_physicsActor != null && m_physicsActor.Flying) | 1412 | if (m_physicsActor != null && m_physicsActor.Flying && !m_forceFly) |
1384 | { | 1413 | { |
1385 | // Are the landing controls requirements filled? | 1414 | // Are the landing controls requirements filled? |
1386 | bool controlland = (((flags & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || | 1415 | bool controlland = (((flags & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || |