From 240c0eaf1d8886378829e32a68aa9d2534f31a09 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Wed, 26 Jan 2011 13:33:34 -0800 Subject: Remove the RestorePresences functions (which don't seem to be doing anything) and clean up the code in AddNewClient (so Appearance only gets assigned once, not three times). --- OpenSim/Region/Framework/Scenes/Scene.cs | 77 +++++--------------------------- 1 file changed, 10 insertions(+), 67 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs') diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 12fd813..71d0f09 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -498,12 +498,6 @@ namespace OpenSim.Region.Framework.Scenes get { return m_sceneGraph.Entities; } } - public Dictionary<UUID, ScenePresence> m_restorePresences - { - get { return m_sceneGraph.RestorePresences; } - set { m_sceneGraph.RestorePresences = value; } - } - #endregion Properties #region Constructors @@ -2483,56 +2477,24 @@ namespace OpenSim.Region.Framework.Scenes (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0; CheckHeartbeat(); - ScenePresence presence; - if (m_restorePresences.ContainsKey(client.AgentId)) + if (GetScenePresence(client.AgentId) == null) // ensure there is no SP here { - m_log.DebugFormat("[SCENE]: Restoring agent {0} {1} in {2}", client.Name, client.AgentId, RegionInfo.RegionName); + m_log.Debug("[SCENE]: Adding new agent " + client.Name + " to scene " + RegionInfo.RegionName); m_clientManager.Add(client); SubscribeToClientEvents(client); - presence = m_restorePresences[client.AgentId]; - m_restorePresences.Remove(client.AgentId); - - // This is one of two paths to create avatars that are - // used. This tends to get called more in standalone - // than grid, not really sure why, but as such needs - // an explicity appearance lookup here. - AvatarAppearance appearance = null; - GetAvatarAppearance(client, out appearance); - presence.Appearance = appearance; + ScenePresence sp = m_sceneGraph.CreateAndAddChildScenePresence(client, aCircuit.Appearance); + m_eventManager.TriggerOnNewPresence(sp); - presence.initializeScenePresence(client, RegionInfo, this); - - m_sceneGraph.AddScenePresence(presence); - - lock (m_restorePresences) + // HERE!!! Do the initial attachments right here + // first agent upon login is a root agent by design. + // All other AddNewClient calls find aCircuit.child to be true + if (aCircuit.child == false) { - Monitor.PulseAll(m_restorePresences); - } - } - else - { - if (GetScenePresence(client.AgentId) == null) // ensure there is no SP here - { - m_log.Debug("[SCENE]: Adding new agent " + client.Name + " to scene " + RegionInfo.RegionName); - - m_clientManager.Add(client); - SubscribeToClientEvents(client); - - ScenePresence sp = CreateAndAddScenePresence(client); - if (aCircuit != null) - sp.Appearance = aCircuit.Appearance; - - // HERE!!! Do the initial attachments right here - // first agent upon login is a root agent by design. - // All other AddNewClient calls find aCircuit.child to be true - if (aCircuit == null || (aCircuit != null && aCircuit.child == false)) - { - sp.IsChildAgent = false; - Util.FireAndForget(delegate(object o) { sp.RezAttachments(); }); - } + sp.IsChildAgent = false; + Util.FireAndForget(delegate(object o) { sp.RezAttachments(); }); } } @@ -2997,25 +2959,6 @@ namespace OpenSim.Region.Framework.Scenes } /// <summary> - /// Create a child agent scene presence and add it to this scene. - /// </summary> - /// <param name="client"></param> - /// <returns></returns> - protected virtual ScenePresence CreateAndAddScenePresence(IClientAPI client) - { - CheckHeartbeat(); - AvatarAppearance appearance = null; - GetAvatarAppearance(client, out appearance); - - ScenePresence avatar = m_sceneGraph.CreateAndAddChildScenePresence(client, appearance); - //avatar.KnownRegions = GetChildrenSeeds(avatar.UUID); - - m_eventManager.TriggerOnNewPresence(avatar); - - return avatar; - } - - /// <summary> /// Get the avatar apperance for the given client. /// </summary> /// <param name="client"></param> -- cgit v1.1