aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs25
1 files changed, 22 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 93782ce..4148d4b 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -965,6 +965,11 @@ namespace OpenSim.Region.Framework.Scenes
965 presence.Animator.SendAnimPackToClient(ControllingClient); 965 presence.Animator.SendAnimPackToClient(ControllingClient);
966 }); 966 });
967 967
968 // If we don't reset the movement flag here, an avatar that crosses to a neighbouring sim and returns will
969 // stall on the border crossing since the existing child agent will still have the last movement
970 // recorded, which stops the input from being processed.
971 m_movementflag = 0;
972
968 m_scene.EventManager.TriggerOnMakeRootAgent(this); 973 m_scene.EventManager.TriggerOnMakeRootAgent(this);
969 } 974 }
970 975
@@ -1247,6 +1252,8 @@ namespace OpenSim.Region.Framework.Scenes
1247 /// </summary> 1252 /// </summary>
1248 public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData) 1253 public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData)
1249 { 1254 {
1255// m_log.DebugFormat("[SCENE PRESENCE]: Received agent update from {0}", remoteClient.Name);
1256
1250 //if (m_isChildAgent) 1257 //if (m_isChildAgent)
1251 //{ 1258 //{
1252 // // m_log.Debug("DEBUG: HandleAgentUpdate: child agent"); 1259 // // m_log.Debug("DEBUG: HandleAgentUpdate: child agent");
@@ -1445,6 +1452,8 @@ namespace OpenSim.Region.Framework.Scenes
1445 { 1452 {
1446 m_movementflag |= (byte)nudgehack; 1453 m_movementflag |= (byte)nudgehack;
1447 } 1454 }
1455
1456// m_log.DebugFormat("[SCENE PRESENCE]: Updating m_movementflag for {0} with {1}", Name, DCF);
1448 m_movementflag += (byte)(uint)DCF; 1457 m_movementflag += (byte)(uint)DCF;
1449 update_movementflag = true; 1458 update_movementflag = true;
1450 } 1459 }
@@ -1456,6 +1465,7 @@ namespace OpenSim.Region.Framework.Scenes
1456 && ((m_movementflag & (byte)nudgehack) == nudgehack)) 1465 && ((m_movementflag & (byte)nudgehack) == nudgehack))
1457 ) // This or is for Nudge forward 1466 ) // This or is for Nudge forward
1458 { 1467 {
1468// m_log.DebugFormat("[SCENE PRESENCE]: Updating m_movementflag for {0} with lack of {1}", Name, DCF);
1459 m_movementflag -= ((byte)(uint)DCF); 1469 m_movementflag -= ((byte)(uint)DCF);
1460 update_movementflag = true; 1470 update_movementflag = true;
1461 1471
@@ -1520,12 +1530,21 @@ namespace OpenSim.Region.Framework.Scenes
1520 // which occurs later in the main scene loop 1530 // which occurs later in the main scene loop
1521 if (update_movementflag || (update_rotation && DCFlagKeyPressed)) 1531 if (update_movementflag || (update_rotation && DCFlagKeyPressed))
1522 { 1532 {
1523 // m_log.DebugFormat("{0} {1}", update_movementflag, (update_rotation && DCFlagKeyPressed)); 1533// m_log.DebugFormat(
1524 // m_log.DebugFormat( 1534// "[SCENE PRESENCE]: In {0} adding velocity of {1} to {2}, umf = {3}, ur = {4}",
1525 // "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3); 1535// m_scene.RegionInfo.RegionName, agent_control_v3, Name, update_movementflag, update_rotation);
1526 1536
1527 AddNewMovement(agent_control_v3); 1537 AddNewMovement(agent_control_v3);
1528 } 1538 }
1539// else
1540// {
1541// if (!update_movementflag)
1542// {
1543// m_log.DebugFormat(
1544// "[SCENE PRESENCE]: In {0} ignoring requested update of {1} for {2} as update_movementflag = false",
1545// m_scene.RegionInfo.RegionName, agent_control_v3, Name);
1546// }
1547// }
1529 1548
1530 if (update_movementflag && m_parentID == 0) 1549 if (update_movementflag && m_parentID == 0)
1531 Animator.UpdateMovementAnimations(); 1550 Animator.UpdateMovementAnimations();