diff options
Diffstat (limited to '')
5 files changed, 22 insertions, 16 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index e544703..97442fd 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2229,7 +2229,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2229 | 2229 | ||
2230 | #region Add/Remove Avatar Methods | 2230 | #region Add/Remove Avatar Methods |
2231 | 2231 | ||
2232 | public override void AddNewClient(IClientAPI client, bool child) | 2232 | public override void AddNewClient(IClientAPI client) |
2233 | { | 2233 | { |
2234 | SubscribeToClientEvents(client); | 2234 | SubscribeToClientEvents(client); |
2235 | ScenePresence presence; | 2235 | ScenePresence presence; |
@@ -2261,12 +2261,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
2261 | else | 2261 | else |
2262 | { | 2262 | { |
2263 | m_log.DebugFormat( | 2263 | m_log.DebugFormat( |
2264 | "[SCENE]: Adding new {0} agent {1} {2} in {3}", | 2264 | "[SCENE]: Adding new child agent {0} for new user connection in {1}", |
2265 | (child ? "child" : "root"), client.Name, client.AgentId, RegionInfo.RegionName); | 2265 | client.Name, RegionInfo.RegionName); |
2266 | 2266 | ||
2267 | CommsManager.UserProfileCacheService.AddNewUser(client.AgentId); | 2267 | CommsManager.UserProfileCacheService.AddNewUser(client.AgentId); |
2268 | 2268 | ||
2269 | CreateAndAddScenePresence(client, child); | 2269 | CreateAndAddScenePresence(client); |
2270 | } | 2270 | } |
2271 | 2271 | ||
2272 | m_LastLogin = System.Environment.TickCount; | 2272 | m_LastLogin = System.Environment.TickCount; |
@@ -2547,17 +2547,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
2547 | } | 2547 | } |
2548 | 2548 | ||
2549 | /// <summary> | 2549 | /// <summary> |
2550 | /// Create a scene presence and add it to this scene. | 2550 | /// Create a child agent scene presence and add it to this scene. |
2551 | /// </summary> | 2551 | /// </summary> |
2552 | /// <param name="client"></param> | 2552 | /// <param name="client"></param> |
2553 | /// <param name="child"></param> | ||
2554 | /// <returns></returns> | 2553 | /// <returns></returns> |
2555 | protected virtual ScenePresence CreateAndAddScenePresence(IClientAPI client, bool child) | 2554 | protected virtual ScenePresence CreateAndAddScenePresence(IClientAPI client) |
2556 | { | 2555 | { |
2557 | AvatarAppearance appearance = null; | 2556 | AvatarAppearance appearance = null; |
2558 | GetAvatarAppearance(client, out appearance); | 2557 | GetAvatarAppearance(client, out appearance); |
2559 | 2558 | ||
2560 | ScenePresence avatar = m_sceneGraph.CreateAndAddScenePresence(client, child, appearance); | 2559 | ScenePresence avatar = m_sceneGraph.CreateAndAddChildScenePresence(client, appearance); |
2561 | 2560 | ||
2562 | return avatar; | 2561 | return avatar; |
2563 | } | 2562 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneBase.cs b/OpenSim/Region/Environment/Scenes/SceneBase.cs index 7137c2f..6d1e808 100644 --- a/OpenSim/Region/Environment/Scenes/SceneBase.cs +++ b/OpenSim/Region/Environment/Scenes/SceneBase.cs | |||
@@ -142,14 +142,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
142 | #region Add/Remove Agent/Avatar | 142 | #region Add/Remove Agent/Avatar |
143 | 143 | ||
144 | /// <summary> | 144 | /// <summary> |
145 | /// Register the new client with the scene | 145 | /// Register the new client with the scene. The client starts off as a child agent - the later agent crossing |
146 | /// will promote it to a root agent during login. | ||
146 | /// </summary> | 147 | /// </summary> |
147 | /// <param name="client"></param | 148 | /// <param name="client"></param |
148 | /// <param name="child"></param> | 149 | public abstract void AddNewClient(IClientAPI client); |
149 | public abstract void AddNewClient(IClientAPI client, bool child); | ||
150 | 150 | ||
151 | /// <summary> | 151 | /// <summary> |
152 | /// | 152 | /// Remove a client from the scene |
153 | /// </summary> | 153 | /// </summary> |
154 | /// <param name="agentID"></param> | 154 | /// <param name="agentID"></param> |
155 | public abstract void RemoveClient(UUID agentID); | 155 | public abstract void RemoveClient(UUID agentID); |
diff --git a/OpenSim/Region/Environment/Scenes/SceneGraph.cs b/OpenSim/Region/Environment/Scenes/SceneGraph.cs index 8c9fdd4..da3be08 100644 --- a/OpenSim/Region/Environment/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Environment/Scenes/SceneGraph.cs | |||
@@ -574,12 +574,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
574 | } | 574 | } |
575 | } | 575 | } |
576 | 576 | ||
577 | protected internal ScenePresence CreateAndAddScenePresence(IClientAPI client, bool child, AvatarAppearance appearance) | 577 | protected internal ScenePresence CreateAndAddChildScenePresence(IClientAPI client, AvatarAppearance appearance) |
578 | { | 578 | { |
579 | ScenePresence newAvatar = null; | 579 | ScenePresence newAvatar = null; |
580 | 580 | ||
581 | newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, appearance); | 581 | newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, appearance); |
582 | newAvatar.IsChildAgent = child; | 582 | newAvatar.IsChildAgent = true; |
583 | 583 | ||
584 | AddScenePresence(newAvatar); | 584 | AddScenePresence(newAvatar); |
585 | 585 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs index a16c26a..a19dbf7 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs | |||
@@ -62,7 +62,7 @@ namespace OpenSim.Region.Environment.Scenes.Tests | |||
62 | agent.CapsPath = "http://wibble.com"; | 62 | agent.CapsPath = "http://wibble.com"; |
63 | 63 | ||
64 | scene.NewUserConnection(agent); | 64 | scene.NewUserConnection(agent); |
65 | scene.AddNewClient(new TestClient(agent), false); | 65 | scene.AddNewClient(new TestClient(agent)); |
66 | 66 | ||
67 | ScenePresence presence = scene.GetScenePresence(agentId); | 67 | ScenePresence presence = scene.GetScenePresence(agentId); |
68 | 68 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs index 468a4ad..b169d9a 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs | |||
@@ -97,9 +97,16 @@ namespace OpenSim.Region.Environment.Scenes.Tests | |||
97 | agent.startpos = Vector3.Zero; | 97 | agent.startpos = Vector3.Zero; |
98 | agent.CapsPath = "http://wibble.com"; | 98 | agent.CapsPath = "http://wibble.com"; |
99 | 99 | ||
100 | // We emulate the proper login sequence here by doing things in three stages | ||
101 | // Stage 1: simulate login by telling the scene to expect a new user connection | ||
100 | scene.NewUserConnection(agent); | 102 | scene.NewUserConnection(agent); |
103 | |||
104 | // Stage 2: add the new client as a child agent to the scene | ||
101 | IClientAPI client = new TestClient(agent); | 105 | IClientAPI client = new TestClient(agent); |
102 | scene.AddNewClient(client, true); | 106 | scene.AddNewClient(client); |
107 | |||
108 | // Stage 3: Invoke agent crossing, which converts the child agent into a root agent (with appearance, | ||
109 | // inventory, etc.) | ||
103 | scene.AgentCrossing(agent.AgentID, new Vector3(90, 90, 90), false); | 110 | scene.AgentCrossing(agent.AgentID, new Vector3(90, 90, 90), false); |
104 | 111 | ||
105 | return client; | 112 | return client; |