diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 548dfd3..98afb75 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1385,17 +1385,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
1385 | bool DCFlagKeyPressed = false; | 1385 | bool DCFlagKeyPressed = false; |
1386 | Vector3 agent_control_v3 = Vector3.Zero; | 1386 | Vector3 agent_control_v3 = Vector3.Zero; |
1387 | 1387 | ||
1388 | bool oldflying = Flying; | 1388 | bool newFlying = actor.Flying; |
1389 | 1389 | ||
1390 | if (ForceFly) | 1390 | if (ForceFly) |
1391 | actor.Flying = true; | 1391 | newFlying = true; |
1392 | else if (FlyDisabled) | 1392 | else if (FlyDisabled) |
1393 | actor.Flying = false; | 1393 | newFlying = false; |
1394 | else | 1394 | else |
1395 | actor.Flying = ((flags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); | 1395 | newFlying = ((flags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); |
1396 | 1396 | ||
1397 | if (actor.Flying != oldflying) | 1397 | if (actor.Flying != newFlying) |
1398 | update_movementflag = true; | 1398 | { |
1399 | // Note: ScenePresence.Flying is actually fetched from the physical actor | ||
1400 | // so setting PhysActor.Flying here also sets the ScenePresence's value. | ||
1401 | actor.Flying = newFlying; | ||
1402 | update_movementflag = true; | ||
1403 | } | ||
1399 | 1404 | ||
1400 | if (ParentID == 0) | 1405 | if (ParentID == 0) |
1401 | { | 1406 | { |