If a user moves back in sight of a child region before the agent has been closed on teleport, don't unnecessarily resend all avatar and object data about that region.

bullet-2.82
Justin Clark-Casey (justincc) 2014-08-15 21:46:28 +01:00
parent 91e1aaa5d4
commit e0c6bfa81e
3 changed files with 9 additions and 7 deletions

View File

@ -65,6 +65,11 @@ namespace OpenSim.Framework
/// </remarks> /// </remarks>
AvatarAppearance Appearance { get; set; } AvatarAppearance Appearance { get; set; }
/// <summary>
/// Set if initial data about the scene (avatars, objects) has been sent to the client.
/// </summary>
bool SentInitialDataToClient { get; }
/// <summary> /// <summary>
/// Send initial scene data to the client controlling this agent /// Send initial scene data to the client controlling this agent
/// </summary> /// </summary>

View File

@ -1740,7 +1740,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AgentCircuitData aCircuit = m_scene.AuthenticateHandler.GetAgentCircuitData(uccp.CircuitCode.Code); AgentCircuitData aCircuit = m_scene.AuthenticateHandler.GetAgentCircuitData(uccp.CircuitCode.Code);
bool tp = (aCircuit.teleportFlags > 0); bool tp = (aCircuit.teleportFlags > 0);
// Let's delay this for TP agents, otherwise the viewer doesn't know where to get resources from // Let's delay this for TP agents, otherwise the viewer doesn't know where to get resources from
if (!tp) if (!tp && !client.SceneAgent.SentInitialDataToClient)
client.SceneAgent.SendInitialDataToClient(); client.SceneAgent.SendInitialDataToClient();
} }
} }

View File

@ -286,9 +286,6 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
/// <summary>
/// Set if initial data about the scene (avatars, objects) has been sent to the ControllingClient.
/// </summary>
public bool SentInitialDataToClient { get; private set; } public bool SentInitialDataToClient { get; private set; }
/// <summary> /// <summary>
@ -3351,9 +3348,9 @@ namespace OpenSim.Region.Framework.Scenes
// Send all scene object to the new client // Send all scene object to the new client
Util.RunThreadNoTimeout(delegate Util.RunThreadNoTimeout(delegate
{ {
m_log.DebugFormat( // m_log.DebugFormat(
"[SCENE PRESENCE]: Sending initial data to {0} agent {1} in {2}, tp flags {3}", // "[SCENE PRESENCE]: Sending initial data to {0} agent {1} in {2}, tp flags {3}",
IsChildAgent ? "child" : "root", Name, Scene.Name, m_teleportFlags); // IsChildAgent ? "child" : "root", Name, Scene.Name, m_teleportFlags);
// we created a new ScenePresence (a new child agent) in a fresh region. // we created a new ScenePresence (a new child agent) in a fresh region.
// Request info about all the (root) agents in this region // Request info about all the (root) agents in this region