diff options
author | Justin Clark-Casey (justincc) | 2011-02-18 20:54:00 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-02-18 20:54:00 +0000 |
commit | 47252214354cb768ecddb50062d650d22f7d1c4f (patch) | |
tree | a86cf92bba4bccafbc32ab41b12455d0054fb2d7 | |
parent | Add support for new naming syntax of linked regions to osTeleportAgent and os... (diff) | |
download | opensim-SC_OLD-47252214354cb768ecddb50062d650d22f7d1c4f.zip opensim-SC_OLD-47252214354cb768ecddb50062d650d22f7d1c4f.tar.gz opensim-SC_OLD-47252214354cb768ecddb50062d650d22f7d1c4f.tar.bz2 opensim-SC_OLD-47252214354cb768ecddb50062d650d22f7d1c4f.tar.xz |
Stop the avatar sometimes pausing for more than a second on the border when region crossing.
This restores a RemoveFromPhysicalScene() call in ScenePresence.CheckForBorderCrossing() when the agent has been placed in transit.
If we don't remove the agent from the physical scene, then the method continues to be called via ScenePresence.Update()
until the handover of the client between regions is completed. Since this handover can take more than 1000ms (due to the 1000ms
event queue polling response from the server), this results in the avatar pausing on the border for the entire handover period.
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index cd70de8..4150f4a 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -2776,6 +2776,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
2776 | } | 2776 | } |
2777 | else | 2777 | else |
2778 | { | 2778 | { |
2779 | // We must remove the agent from the physical scene if it has been placed in transit. If we don't, | ||
2780 | // then this method continues to be called from ScenePresence.Update() until the handover of the client between | ||
2781 | // regions is completed. Since this handover can take more than 1000ms (due to the 1000ms | ||
2782 | // event queue polling response from the server), this results in the avatar pausing on the border | ||
2783 | // for the handover period. | ||
2784 | RemoveFromPhysicalScene(); | ||
2785 | |||
2779 | // This constant has been inferred from experimentation | 2786 | // This constant has been inferred from experimentation |
2780 | // I'm not sure what this value should be, so I tried a few values. | 2787 | // I'm not sure what this value should be, so I tried a few values. |
2781 | timeStep = 0.04f; | 2788 | timeStep = 0.04f; |