Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim
						commit
						2e5f7ec926
					
				| 
						 | 
				
			
			@ -91,6 +91,8 @@ namespace OpenSim.Framework
 | 
			
		|||
        /// </exception>
 | 
			
		||||
        bool PresenceChildStatus(UUID agentId);
 | 
			
		||||
 | 
			
		||||
        bool TryGetAvatar(UUID agentID, out object scenePresence);
 | 
			
		||||
 | 
			
		||||
        T RequestModuleInterface<T>();
 | 
			
		||||
        T[] RequestModuleInterfaces<T>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,7 @@ using System;
 | 
			
		|||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Globalization;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.IO.Compression;
 | 
			
		||||
| 
						 | 
				
			
			@ -1443,6 +1444,7 @@ namespace OpenSim.Framework
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion FireAndForget Threading Pattern
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Environment.TickCount is an int but it counts all 32 bits so it goes positive
 | 
			
		||||
        /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap
 | 
			
		||||
| 
						 | 
				
			
			@ -1467,5 +1469,21 @@ namespace OpenSim.Framework
 | 
			
		|||
            Int32 diff = EnvironmentTickCount() - prevValue;
 | 
			
		||||
            return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Prints the call stack at any given point. Useful for debugging.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static void PrintCallStack()
 | 
			
		||||
        {
 | 
			
		||||
            StackTrace stackTrace = new StackTrace();           // get call stack
 | 
			
		||||
            StackFrame[] stackFrames = stackTrace.GetFrames();  // get method calls (frames)
 | 
			
		||||
 | 
			
		||||
            // write call stack method names
 | 
			
		||||
            foreach (StackFrame stackFrame in stackFrames)
 | 
			
		||||
            {
 | 
			
		||||
                m_log.Debug(stackFrame.GetMethod().DeclaringType + "." + stackFrame.GetMethod().Name); // write method name
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,23 +77,28 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
 | 
			
		|||
 | 
			
		||||
        public void OnNewClient(IClientAPI client)
 | 
			
		||||
        {
 | 
			
		||||
            client.OnLogout += OnLogout;
 | 
			
		||||
            client.OnConnectionClosed += OnConnectionClose;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OnLogout(IClientAPI client)
 | 
			
		||||
        public void OnConnectionClose(IClientAPI client)
 | 
			
		||||
        {
 | 
			
		||||
            client.OnLogout -= OnLogout;
 | 
			
		||||
            
 | 
			
		||||
            ScenePresence sp = null;
 | 
			
		||||
            Vector3 position = new Vector3(128, 128, 0);
 | 
			
		||||
            Vector3 lookat = new Vector3(0, 1, 0);
 | 
			
		||||
 | 
			
		||||
            if (m_aScene.TryGetAvatar(client.AgentId, out sp))
 | 
			
		||||
            if (client.IsLoggingOut)
 | 
			
		||||
            {
 | 
			
		||||
                position = sp.AbsolutePosition;
 | 
			
		||||
                lookat = sp.Lookat;
 | 
			
		||||
                object sp = null;
 | 
			
		||||
                Vector3 position = new Vector3(128, 128, 0);
 | 
			
		||||
                Vector3 lookat = new Vector3(0, 1, 0);
 | 
			
		||||
 | 
			
		||||
                if (client.Scene.TryGetAvatar(client.AgentId, out sp))
 | 
			
		||||
                {
 | 
			
		||||
                    if (sp is ScenePresence)
 | 
			
		||||
                    {
 | 
			
		||||
                        position = ((ScenePresence)sp).AbsolutePosition;
 | 
			
		||||
                        lookat = ((ScenePresence)sp).Lookat;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                m_PresenceService.LogoutAgent(client.SessionId, position, lookat);
 | 
			
		||||
            }
 | 
			
		||||
            m_PresenceService.LogoutAgent(client.SessionId, position, lookat);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4216,7 +4216,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            return m_sceneGraph.GetGroupByPrim(localID);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool TryGetAvatar(UUID avatarId, out ScenePresence avatar)
 | 
			
		||||
        public override bool TryGetAvatar(UUID avatarId, out ScenePresence avatar)
 | 
			
		||||
        {
 | 
			
		||||
            return m_sceneGraph.TryGetAvatar(avatarId, out avatar);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -190,6 +190,21 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        /// <param name="agentID"></param>
 | 
			
		||||
        public abstract void RemoveClient(UUID agentID);
 | 
			
		||||
 | 
			
		||||
        public bool TryGetAvatar(UUID agentID, out object scenePresence)
 | 
			
		||||
        {
 | 
			
		||||
            scenePresence = null;
 | 
			
		||||
            ScenePresence sp = null;
 | 
			
		||||
            if (TryGetAvatar(agentID, out sp))
 | 
			
		||||
            {
 | 
			
		||||
                scenePresence = sp;
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public abstract bool TryGetAvatar(UUID agentID, out ScenePresence scenePresence);
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,6 +65,11 @@ namespace OpenSim.Region.Framework.Scenes.Tests
 | 
			
		|||
            {
 | 
			
		||||
                throw new NotImplementedException();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public override bool TryGetAvatar(UUID agentID, out ScenePresence scenePresence)
 | 
			
		||||
            {
 | 
			
		||||
                throw new NotImplementedException();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Test]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue