diff options
author | diva | 2008-12-15 16:23:34 +0000 |
---|---|---|
committer | diva | 2008-12-15 16:23:34 +0000 |
commit | 4b71b88114c6ac149571512c57ea005d85147f54 (patch) | |
tree | 18b638632d5a85b1670c9e1832398fa2d0dfb6e7 /OpenSim/Region/Environment/Scenes/Scene.cs | |
parent | Update svn properties. (diff) | |
download | opensim-SC_OLD-4b71b88114c6ac149571512c57ea005d85147f54.zip opensim-SC_OLD-4b71b88114c6ac149571512c57ea005d85147f54.tar.gz opensim-SC_OLD-4b71b88114c6ac149571512c57ea005d85147f54.tar.bz2 opensim-SC_OLD-4b71b88114c6ac149571512c57ea005d85147f54.tar.xz |
Bug fix in new child agents management. Thanks DigiDaz for helping identify this issue.
We need to update all child agents whenever the root agent crosses regions. The update
now includes child agents in common neighbours. This is so that those get updated with the
seeds of the new child agents that are spawned from the receiving region.
This also fixes some timing issues. We need to close child agents from the originating region
before we update child agents in the receiving region.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 6ce19c6..9497043 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2657,7 +2657,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2657 | GetAvatarAppearance(client, out appearance); | 2657 | GetAvatarAppearance(client, out appearance); |
2658 | 2658 | ||
2659 | ScenePresence avatar = m_sceneGraph.CreateAndAddChildScenePresence(client, appearance); | 2659 | ScenePresence avatar = m_sceneGraph.CreateAndAddChildScenePresence(client, appearance); |
2660 | avatar.KnownRegions = GetChildrenSeeds(avatar.UUID); | 2660 | //avatar.KnownRegions = GetChildrenSeeds(avatar.UUID); |
2661 | return avatar; | 2661 | return avatar; |
2662 | } | 2662 | } |
2663 | 2663 | ||
@@ -2871,9 +2871,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
2871 | /// <param name="agent"></param> | 2871 | /// <param name="agent"></param> |
2872 | public void NewUserConnection(AgentCircuitData agent) | 2872 | public void NewUserConnection(AgentCircuitData agent) |
2873 | { | 2873 | { |
2874 | m_log.DebugFormat("[CONNECTION DEBUGGING] Adding NewUserConnection for {0} in {1} with CC of {2}", agent.AgentID, | ||
2875 | RegionInfo.RegionName, agent.circuitcode); | ||
2876 | |||
2877 | if (m_regInfo.EstateSettings.IsBanned(agent.AgentID)) | 2874 | if (m_regInfo.EstateSettings.IsBanned(agent.AgentID)) |
2878 | { | 2875 | { |
2879 | m_log.WarnFormat( | 2876 | m_log.WarnFormat( |
@@ -2883,9 +2880,19 @@ namespace OpenSim.Region.Environment.Scenes | |||
2883 | 2880 | ||
2884 | /// Diva: Horrible stuff! | 2881 | /// Diva: Horrible stuff! |
2885 | capsPaths[agent.AgentID] = agent.CapsPath; | 2882 | capsPaths[agent.AgentID] = agent.CapsPath; |
2886 | //m_log.DebugFormat("------------>child seeds in {0}: {1}", RegionInfo.RegionName, ((agent.ChildrenCapSeeds == null) ? "null" : agent.ChildrenCapSeeds.Count.ToString())); | ||
2887 | childrenSeeds[agent.AgentID] = ((agent.ChildrenCapSeeds == null) ? new Dictionary<ulong, string>() : agent.ChildrenCapSeeds); | 2883 | childrenSeeds[agent.AgentID] = ((agent.ChildrenCapSeeds == null) ? new Dictionary<ulong, string>() : agent.ChildrenCapSeeds); |
2888 | 2884 | ||
2885 | ScenePresence sp = m_sceneGraph.GetScenePresence(agent.AgentID); | ||
2886 | if (sp != null) | ||
2887 | { | ||
2888 | m_log.DebugFormat("[CONNECTION DEBUGGING]: Updated agent {0} in {1}", agent.AgentID, RegionInfo.RegionName); | ||
2889 | sp.AdjustKnownSeeds(); | ||
2890 | return; | ||
2891 | } | ||
2892 | |||
2893 | m_log.DebugFormat("[CONNECTION DEBUGGING]: Adding NewUserConnection for {0} in {1} with CC of {2}", agent.AgentID, | ||
2894 | RegionInfo.RegionName, agent.circuitcode); | ||
2895 | |||
2889 | AddCapsHandler(agent.AgentID); | 2896 | AddCapsHandler(agent.AgentID); |
2890 | 2897 | ||
2891 | if (!agent.child) | 2898 | if (!agent.child) |