Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
						commit
						0fe756e42c
					
				| 
						 | 
				
			
			@ -279,12 +279,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
 | 
			
		|||
 | 
			
		||||
            HashSet<UUID> receiverIDs = new HashSet<UUID>();
 | 
			
		||||
            
 | 
			
		||||
            ((Scene)c.Scene).ForEachScenePresence(
 | 
			
		||||
            ((Scene)c.Scene).ForEachRootScenePresence(
 | 
			
		||||
                delegate(ScenePresence presence)
 | 
			
		||||
                {
 | 
			
		||||
                    // ignore chat from child agents
 | 
			
		||||
                    if (presence.IsChildAgent) return;
 | 
			
		||||
                    
 | 
			
		||||
                {   
 | 
			
		||||
                    IClientAPI client = presence.ControllingClient;
 | 
			
		||||
                    
 | 
			
		||||
                    // don't forward SayOwner chat from objects to
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -98,10 +98,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
 | 
			
		|||
        
 | 
			
		||||
        public void SendGeneralAlert(string message)
 | 
			
		||||
        {
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            m_scene.ForEachRootScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            {
 | 
			
		||||
                if (!presence.IsChildAgent)
 | 
			
		||||
                    presence.ControllingClient.SendAlertMessage(message);
 | 
			
		||||
                presence.ControllingClient.SendAlertMessage(message);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -163,10 +162,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
 | 
			
		|||
        public void SendNotificationToUsersInRegion(
 | 
			
		||||
            UUID fromAvatarID, string fromAvatarName, string message)
 | 
			
		||||
        {
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            m_scene.ForEachRootScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            {
 | 
			
		||||
                if (!presence.IsChildAgent)
 | 
			
		||||
                    presence.ControllingClient.SendBlueBoxMessage(fromAvatarID, fromAvatarName, message);
 | 
			
		||||
                presence.ControllingClient.SendBlueBoxMessage(fromAvatarID, fromAvatarName, message);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -140,10 +140,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods
 | 
			
		|||
                            // This is a bit crude. It seems the client will be null before it actually stops the thread
 | 
			
		||||
                            // The thread will kill itself eventually :/
 | 
			
		||||
                            // Is there another way to make sure *all* clients get this 'inter region' message?
 | 
			
		||||
                            m_scene.ForEachScenePresence(
 | 
			
		||||
                            m_scene.ForEachRootScenePresence(
 | 
			
		||||
                                delegate(ScenePresence p)
 | 
			
		||||
                                {
 | 
			
		||||
                                    if (p.UUID != godID && !p.IsChildAgent)
 | 
			
		||||
                                    if (p.UUID != godID)
 | 
			
		||||
                                    {
 | 
			
		||||
                                        // Possibly this should really be p.Close() though that method doesn't send a close
 | 
			
		||||
                                        // to the client
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -143,24 +143,19 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
 | 
			
		|||
            // Try root avatar only first
 | 
			
		||||
            foreach (Scene scene in m_Scenes)
 | 
			
		||||
            {
 | 
			
		||||
                if (scene.Entities.ContainsKey(toAgentID) &&
 | 
			
		||||
                        scene.Entities[toAgentID] is ScenePresence)
 | 
			
		||||
                {
 | 
			
		||||
//                    m_log.DebugFormat(
 | 
			
		||||
//                        "[HG INSTANT MESSAGE]: Looking for root agent {0} in {1}", 
 | 
			
		||||
//                        toAgentID.ToString(), scene.RegionInfo.RegionName);
 | 
			
		||||
                                        
 | 
			
		||||
                    ScenePresence user = (ScenePresence) scene.Entities[toAgentID];
 | 
			
		||||
                    if (!user.IsChildAgent)
 | 
			
		||||
                    {
 | 
			
		||||
                        // Local message
 | 
			
		||||
//                        m_log.DebugFormat("[HG INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", user.Name, toAgentID);
 | 
			
		||||
                        user.ControllingClient.SendInstantMessage(im);
 | 
			
		||||
//                m_log.DebugFormat(
 | 
			
		||||
//                    "[HG INSTANT MESSAGE]: Looking for root agent {0} in {1}", 
 | 
			
		||||
//                    toAgentID.ToString(), scene.RegionInfo.RegionName);
 | 
			
		||||
                ScenePresence sp = scene.GetScenePresence(toAgentID); 
 | 
			
		||||
                if (sp != null && !sp.IsChildAgent)
 | 
			
		||||
                {                                        
 | 
			
		||||
                    // Local message
 | 
			
		||||
//                  m_log.DebugFormat("[HG INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", user.Name, toAgentID);
 | 
			
		||||
                    sp.ControllingClient.SendInstantMessage(im);
 | 
			
		||||
 | 
			
		||||
                        // Message sent
 | 
			
		||||
                        result(true);
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                    // Message sent
 | 
			
		||||
                    result(true);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -168,16 +163,14 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
 | 
			
		|||
            foreach (Scene scene in m_Scenes)
 | 
			
		||||
            {
 | 
			
		||||
//                m_log.DebugFormat(
 | 
			
		||||
//                    "[HG INSTANT MESSAGE]: Looking for child of {0} in {1}", toAgentID, scene.RegionInfo.RegionName);
 | 
			
		||||
 | 
			
		||||
                if (scene.Entities.ContainsKey(toAgentID) &&
 | 
			
		||||
                        scene.Entities[toAgentID] is ScenePresence)
 | 
			
		||||
                {
 | 
			
		||||
//                    "[HG INSTANT MESSAGE]: Looking for child of {0} in {1}", 
 | 
			
		||||
//                    toAgentID, scene.RegionInfo.RegionName);
 | 
			
		||||
                ScenePresence sp = scene.GetScenePresence(toAgentID); 
 | 
			
		||||
                if (sp != null)
 | 
			
		||||
                {                   
 | 
			
		||||
                    // Local message
 | 
			
		||||
                    ScenePresence user = (ScenePresence) scene.Entities[toAgentID];
 | 
			
		||||
 | 
			
		||||
//                    m_log.DebugFormat("[HG INSTANT MESSAGE]: Delivering IM to child agent {0} {1}", user.Name, toAgentID);
 | 
			
		||||
                    user.ControllingClient.SendInstantMessage(im);
 | 
			
		||||
                    sp.ControllingClient.SendInstantMessage(im);
 | 
			
		||||
 | 
			
		||||
                    // Message sent
 | 
			
		||||
                    result(true);
 | 
			
		||||
| 
						 | 
				
			
			@ -231,17 +224,11 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
 | 
			
		|||
            bool successful = false;
 | 
			
		||||
            foreach (Scene scene in m_Scenes)
 | 
			
		||||
            {
 | 
			
		||||
                if (scene.Entities.ContainsKey(toAgentID) &&
 | 
			
		||||
                        scene.Entities[toAgentID] is ScenePresence)
 | 
			
		||||
                ScenePresence sp = scene.GetScenePresence(toAgentID);
 | 
			
		||||
                if(!sp.IsChildAgent)
 | 
			
		||||
                {
 | 
			
		||||
                    ScenePresence user =
 | 
			
		||||
                            (ScenePresence)scene.Entities[toAgentID];
 | 
			
		||||
 | 
			
		||||
                    if (!user.IsChildAgent)
 | 
			
		||||
                    {
 | 
			
		||||
                        scene.EventManager.TriggerIncomingInstantMessage(gim);
 | 
			
		||||
                        successful = true;
 | 
			
		||||
                    }
 | 
			
		||||
                    scene.EventManager.TriggerIncomingInstantMessage(gim);
 | 
			
		||||
                    successful = true;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (!successful)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -136,24 +136,19 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
 | 
			
		|||
            // Try root avatar only first
 | 
			
		||||
            foreach (Scene scene in m_Scenes)
 | 
			
		||||
            {
 | 
			
		||||
                if (scene.Entities.ContainsKey(toAgentID) &&
 | 
			
		||||
                        scene.Entities[toAgentID] is ScenePresence)
 | 
			
		||||
//                m_log.DebugFormat(
 | 
			
		||||
//                    "[INSTANT MESSAGE]: Looking for root agent {0} in {1}", 
 | 
			
		||||
//                    toAgentID.ToString(), scene.RegionInfo.RegionName);
 | 
			
		||||
                ScenePresence sp = scene.GetScenePresence(toAgentID);
 | 
			
		||||
                if (sp != null && !sp.IsChildAgent)
 | 
			
		||||
                {
 | 
			
		||||
//                    m_log.DebugFormat(
 | 
			
		||||
//                        "[INSTANT MESSAGE]: Looking for root agent {0} in {1}", 
 | 
			
		||||
//                        toAgentID.ToString(), scene.RegionInfo.RegionName);
 | 
			
		||||
                                        
 | 
			
		||||
                    ScenePresence user = (ScenePresence) scene.Entities[toAgentID];
 | 
			
		||||
                    if (!user.IsChildAgent)
 | 
			
		||||
                    {
 | 
			
		||||
                        // Local message
 | 
			
		||||
//                        m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", user.Name, toAgentID);
 | 
			
		||||
                        user.ControllingClient.SendInstantMessage(im);
 | 
			
		||||
                    // Local message
 | 
			
		||||
//                    m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", user.Name, toAgentID);
 | 
			
		||||
                    sp.ControllingClient.SendInstantMessage(im);
 | 
			
		||||
 | 
			
		||||
                        // Message sent
 | 
			
		||||
                        result(true);
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                    // Message sent
 | 
			
		||||
                    result(true);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -162,15 +157,12 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
 | 
			
		|||
            {
 | 
			
		||||
//                m_log.DebugFormat(
 | 
			
		||||
//                    "[INSTANT MESSAGE]: Looking for child of {0} in {1}", toAgentID, scene.RegionInfo.RegionName);
 | 
			
		||||
 | 
			
		||||
                if (scene.Entities.ContainsKey(toAgentID) &&
 | 
			
		||||
                        scene.Entities[toAgentID] is ScenePresence)
 | 
			
		||||
                ScenePresence sp = scene.GetScenePresence(toAgentID);
 | 
			
		||||
                if (sp != null)
 | 
			
		||||
                {
 | 
			
		||||
                    // Local message
 | 
			
		||||
                    ScenePresence user = (ScenePresence) scene.Entities[toAgentID];
 | 
			
		||||
 | 
			
		||||
//                    m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to child agent {0} {1}", user.Name, toAgentID);
 | 
			
		||||
                    user.ControllingClient.SendInstantMessage(im);
 | 
			
		||||
                    sp.ControllingClient.SendInstantMessage(im);
 | 
			
		||||
 | 
			
		||||
                    // Message sent
 | 
			
		||||
                    result(true);
 | 
			
		||||
| 
						 | 
				
			
			@ -389,17 +381,11 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
 | 
			
		|||
                    // Trigger the Instant message in the scene.
 | 
			
		||||
                    foreach (Scene scene in m_Scenes)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (scene.Entities.ContainsKey(toAgentID) &&
 | 
			
		||||
                                scene.Entities[toAgentID] is ScenePresence)
 | 
			
		||||
                        ScenePresence sp = scene.GetScenePresence(toAgentID);
 | 
			
		||||
                        if (sp != null && !sp.IsChildAgent)
 | 
			
		||||
                        {
 | 
			
		||||
                            ScenePresence user =
 | 
			
		||||
                                    (ScenePresence)scene.Entities[toAgentID];
 | 
			
		||||
 | 
			
		||||
                            if (!user.IsChildAgent)
 | 
			
		||||
                            {
 | 
			
		||||
                                scene.EventManager.TriggerIncomingInstantMessage(gim);
 | 
			
		||||
                                successful = true;
 | 
			
		||||
                            }
 | 
			
		||||
                            scene.EventManager.TriggerIncomingInstantMessage(gim);
 | 
			
		||||
                            successful = true;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    if (!successful)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -658,17 +658,15 @@ namespace OpenSim.Region.CoreModules.World.Estate
 | 
			
		|||
            if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false))
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            Scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            Scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (sp.UUID != senderID)
 | 
			
		||||
                {
 | 
			
		||||
                    ScenePresence p = Scene.GetScenePresence(sp.UUID);
 | 
			
		||||
                    // make sure they are still there, we could be working down a long list
 | 
			
		||||
                    // Also make sure they are actually in the region
 | 
			
		||||
                    if (p != null && !p.IsChildAgent)
 | 
			
		||||
                    {
 | 
			
		||||
                    ScenePresence p;
 | 
			
		||||
                    if(Scene.TryGetScenePresence(sp.UUID, out p))
 | 
			
		||||
                        Scene.TeleportClientHome(p.UUID, p.ControllingClient);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -929,10 +927,9 @@ namespace OpenSim.Region.CoreModules.World.Estate
 | 
			
		|||
 | 
			
		||||
        public void sendRegionInfoPacketToAll()
 | 
			
		||||
        {
 | 
			
		||||
            Scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            Scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (!sp.IsChildAgent)
 | 
			
		||||
                    HandleRegionInfoRequest(sp.ControllingClient);
 | 
			
		||||
                HandleRegionInfoRequest(sp.ControllingClient);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -476,11 +476,8 @@ namespace OpenSim.Region.CoreModules.World.Land
 | 
			
		|||
 | 
			
		||||
        public void SendLandUpdateToAvatarsOverMe(bool snap_selection)
 | 
			
		||||
        {
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence avatar)
 | 
			
		||||
            m_scene.ForEachRootScenePresence(delegate(ScenePresence avatar)
 | 
			
		||||
            {
 | 
			
		||||
                if (avatar.IsChildAgent)
 | 
			
		||||
                    return;
 | 
			
		||||
 | 
			
		||||
                ILandObject over = null;
 | 
			
		||||
                try
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,11 +70,8 @@ namespace OpenSim.Region.CoreModules.World.Sound
 | 
			
		|||
 | 
			
		||||
            SceneObjectGroup grp = part.ParentGroup;
 | 
			
		||||
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            m_scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (sp.IsChildAgent)
 | 
			
		||||
                    return;
 | 
			
		||||
 | 
			
		||||
                double dis = Util.GetDistanceTo(sp.AbsolutePosition, position);
 | 
			
		||||
                if (dis > 100.0) // Max audio distance
 | 
			
		||||
                    return;
 | 
			
		||||
| 
						 | 
				
			
			@ -122,11 +119,8 @@ namespace OpenSim.Region.CoreModules.World.Sound
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            m_scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (sp.IsChildAgent)
 | 
			
		||||
                    return;
 | 
			
		||||
 | 
			
		||||
                double dis = Util.GetDistanceTo(sp.AbsolutePosition, position);
 | 
			
		||||
                if (dis > 100.0) // Max audio distance
 | 
			
		||||
                    return;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -488,12 +488,9 @@ namespace OpenSim.Region.CoreModules
 | 
			
		|||
 | 
			
		||||
        private void SunUpdateToAllClients()
 | 
			
		||||
        {
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            m_scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (!sp.IsChildAgent)
 | 
			
		||||
                {
 | 
			
		||||
                    SunToClient(sp.ControllingClient);
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -435,10 +435,9 @@ namespace OpenSim.Region.CoreModules
 | 
			
		|||
                        m_frameLastUpdateClientArray = m_frame;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    m_scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                    m_scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (!sp.IsChildAgent)
 | 
			
		||||
                            sp.ControllingClient.SendWindData(windSpeeds);
 | 
			
		||||
                        sp.ControllingClient.SendWindData(windSpeeds);
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -401,10 +401,10 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
 | 
			
		|||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        m_scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                        m_scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                        {
 | 
			
		||||
                            // Don't send a green dot for yourself
 | 
			
		||||
                            if (!sp.IsChildAgent && sp.UUID != remoteClient.AgentId)
 | 
			
		||||
                            if (sp.UUID != remoteClient.AgentId)
 | 
			
		||||
                            {
 | 
			
		||||
                                mapitem = new mapItemReply();
 | 
			
		||||
                                mapitem.x = (uint)(xstart + sp.AbsolutePosition.X);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -893,22 +893,17 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
 | 
			
		||||
                    try
 | 
			
		||||
                    {
 | 
			
		||||
                        ForEachScenePresence(delegate(ScenePresence agent)
 | 
			
		||||
                                             {
 | 
			
		||||
                                                 // If agent is a root agent.
 | 
			
		||||
                                                 if (!agent.IsChildAgent)
 | 
			
		||||
                                                 {
 | 
			
		||||
                                                     //agent.ControllingClient.new
 | 
			
		||||
                                                     //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo());
 | 
			
		||||
                        ForEachRootScenePresence(delegate(ScenePresence agent)
 | 
			
		||||
                            {
 | 
			
		||||
                                //agent.ControllingClient.new
 | 
			
		||||
                                //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo());
 | 
			
		||||
 | 
			
		||||
                                                     List<ulong> old = new List<ulong>();
 | 
			
		||||
                                                     old.Add(otherRegion.RegionHandle);
 | 
			
		||||
                                                     agent.DropOldNeighbours(old);
 | 
			
		||||
                                                     if (m_teleportModule != null)
 | 
			
		||||
                                                         m_teleportModule.EnableChildAgent(agent, otherRegion);
 | 
			
		||||
                                                 }
 | 
			
		||||
                                             }
 | 
			
		||||
                            );
 | 
			
		||||
                                List<ulong> old = new List<ulong>();
 | 
			
		||||
                                old.Add(otherRegion.RegionHandle);
 | 
			
		||||
                                agent.DropOldNeighbours(old);
 | 
			
		||||
                                if (m_teleportModule != null)
 | 
			
		||||
                                    m_teleportModule.EnableChildAgent(agent, otherRegion);
 | 
			
		||||
                            });
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (NullReferenceException)
 | 
			
		||||
                    {
 | 
			
		||||
| 
						 | 
				
			
			@ -1043,16 +1038,11 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                    GridRegion r = new GridRegion(region);
 | 
			
		||||
                    try
 | 
			
		||||
                    {
 | 
			
		||||
                        ForEachScenePresence(delegate(ScenePresence agent)
 | 
			
		||||
                                             {
 | 
			
		||||
                                                 // If agent is a root agent.
 | 
			
		||||
                                                 if (!agent.IsChildAgent)
 | 
			
		||||
                                                 {
 | 
			
		||||
                                                     if (m_teleportModule != null)
 | 
			
		||||
                                                         m_teleportModule.EnableChildAgent(agent, r);
 | 
			
		||||
                                                 }
 | 
			
		||||
                                             }
 | 
			
		||||
                            );
 | 
			
		||||
                        ForEachRootScenePresence(delegate(ScenePresence agent)
 | 
			
		||||
                            {
 | 
			
		||||
                                if (m_teleportModule != null)
 | 
			
		||||
                                        m_teleportModule.EnableChildAgent(agent, r);
 | 
			
		||||
                            });
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (NullReferenceException)
 | 
			
		||||
                    {
 | 
			
		||||
| 
						 | 
				
			
			@ -1456,11 +1446,10 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        /// <param name="stats">Stats on the Simulator's performance</param>
 | 
			
		||||
        private void SendSimStatsPackets(SimStats stats)
 | 
			
		||||
        {
 | 
			
		||||
            ForEachScenePresence(
 | 
			
		||||
            ForEachRootScenePresence(
 | 
			
		||||
                delegate(ScenePresence agent)
 | 
			
		||||
                {
 | 
			
		||||
                    if (!agent.IsChildAgent)
 | 
			
		||||
                        agent.ControllingClient.SendSimStats(stats);
 | 
			
		||||
                    agent.ControllingClient.SendSimStats(stats);
 | 
			
		||||
                }
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -4289,6 +4278,19 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            return cp.IsChildAgent;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Performs action on all ROOT (not child) scene presences.
 | 
			
		||||
        /// This is just a shortcut function since frequently actions only appy to root SPs
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="action"></param>
 | 
			
		||||
        public void ForEachRootScenePresence(Action<ScenePresence> action)
 | 
			
		||||
        {
 | 
			
		||||
            if(m_sceneGraph != null)
 | 
			
		||||
            {
 | 
			
		||||
                m_sceneGraph.ForEachRootScenePresence(action);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Performs action on all scene presences.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1190,7 +1190,21 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Performs action on all ROOT (not child) scene presences.
 | 
			
		||||
        /// This is just a shortcut function since frequently actions only appy to root SPs
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="action"></param>
 | 
			
		||||
        public void ForEachRootScenePresence(Action<ScenePresence> action)
 | 
			
		||||
        {
 | 
			
		||||
            ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (!sp.IsChildAgent)
 | 
			
		||||
                    action(sp);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Performs action on all scene presences. This can ultimately run the actions in parallel but
 | 
			
		||||
        /// any delegates passed in will need to implement their own locking on data they reference and
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -458,9 +458,9 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            ForEachCurrentScene(
 | 
			
		||||
                delegate(Scene scene)
 | 
			
		||||
                {
 | 
			
		||||
                    scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                    scene.ForEachRootScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (!scenePresence.IsChildAgent && (name == null || scenePresence.Name == name))
 | 
			
		||||
                        if (name == null || scenePresence.Name == name)
 | 
			
		||||
                        {
 | 
			
		||||
                            m_log.DebugFormat("Packet debug for {0} {1} set to {2}",
 | 
			
		||||
                                              scenePresence.Firstname,
 | 
			
		||||
| 
						 | 
				
			
			@ -481,10 +481,9 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            ForEachCurrentScene(
 | 
			
		||||
                delegate(Scene scene)
 | 
			
		||||
                {
 | 
			
		||||
                    scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                    scene.ForEachRootScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (!scenePresence.IsChildAgent)
 | 
			
		||||
                            avatars.Add(scenePresence);
 | 
			
		||||
                        avatars.Add(scenePresence);
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
            );
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1454,10 +1454,9 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            if (volume < 0)
 | 
			
		||||
                volume = 0;
 | 
			
		||||
 | 
			
		||||
            m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            m_parentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (!sp.IsChildAgent)
 | 
			
		||||
                    sp.ControllingClient.SendAttachedSoundGainChange(UUID, (float)volume);
 | 
			
		||||
                sp.ControllingClient.SendAttachedSoundGainChange(UUID, (float)volume);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2690,10 +2689,8 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            m_parentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (sp.IsChildAgent)
 | 
			
		||||
                    return;
 | 
			
		||||
                if (!(Util.GetDistanceTo(sp.AbsolutePosition, AbsolutePosition) >= 100))
 | 
			
		||||
                    sp.ControllingClient.SendPreLoadSound(objectID, objectID, soundID);
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2598,19 +2598,15 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        public void SendOtherAgentsAvatarDataToMe()
 | 
			
		||||
        {
 | 
			
		||||
            int count = 0;
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                                         {
 | 
			
		||||
                                             // only send information about root agents
 | 
			
		||||
                                             if (scenePresence.IsChildAgent)
 | 
			
		||||
                                                 return;
 | 
			
		||||
            m_scene.ForEachRootScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                        {
 | 
			
		||||
                            // only send information about other root agents
 | 
			
		||||
                            if (scenePresence.UUID == UUID)
 | 
			
		||||
                                return;
 | 
			
		||||
                                             
 | 
			
		||||
                                             // only send information about other root agents
 | 
			
		||||
                                             if (scenePresence.UUID == UUID)
 | 
			
		||||
                                                 return;
 | 
			
		||||
                                             
 | 
			
		||||
                                             scenePresence.SendAvatarDataToAgent(this);
 | 
			
		||||
                                             count++;
 | 
			
		||||
                                         });
 | 
			
		||||
                            scenePresence.SendAvatarDataToAgent(this);
 | 
			
		||||
                            count++;
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
            m_scene.StatsReporter.AddAgentUpdates(count);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -2644,13 +2640,14 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
 | 
			
		||||
            int count = 0;
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                                         {
 | 
			
		||||
                                             if (scenePresence.UUID == UUID)
 | 
			
		||||
                                                 return;
 | 
			
		||||
                        {
 | 
			
		||||
                            // only send information to other root agents
 | 
			
		||||
                            if (scenePresence.UUID == UUID)
 | 
			
		||||
                                return;
 | 
			
		||||
 | 
			
		||||
                                             SendAppearanceToAgent(scenePresence);
 | 
			
		||||
                                             count++;
 | 
			
		||||
                                         });
 | 
			
		||||
                            SendAppearanceToAgent(scenePresence);
 | 
			
		||||
                            count++;
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
            m_scene.StatsReporter.AddAgentUpdates(count);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -2664,19 +2661,15 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            //m_log.DebugFormat("[SCENE PRESENCE] SendOtherAgentsAppearanceToMe: {0} ({1})", Name, UUID);
 | 
			
		||||
 | 
			
		||||
            int count = 0;
 | 
			
		||||
            m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                                         {
 | 
			
		||||
                                             // only send information about root agents
 | 
			
		||||
                                             if (scenePresence.IsChildAgent)
 | 
			
		||||
                                                 return;
 | 
			
		||||
            m_scene.ForEachRootScenePresence(delegate(ScenePresence scenePresence)
 | 
			
		||||
                        {
 | 
			
		||||
                            // only send information about other root agents
 | 
			
		||||
                            if (scenePresence.UUID == UUID)
 | 
			
		||||
                                return;
 | 
			
		||||
                                             
 | 
			
		||||
                                             // only send information about other root agents
 | 
			
		||||
                                             if (scenePresence.UUID == UUID)
 | 
			
		||||
                                                 return;
 | 
			
		||||
                                             
 | 
			
		||||
                                             scenePresence.SendAppearanceToAgent(this);
 | 
			
		||||
                                             count++;
 | 
			
		||||
                                         });
 | 
			
		||||
                            scenePresence.SendAppearanceToAgent(this);
 | 
			
		||||
                            count++;
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
            m_scene.StatsReporter.AddAgentUpdates(count);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -373,13 +373,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Concierge
 | 
			
		|||
                                          scene.GetRootAgentCount(), scene.RegionInfo.RegionName,
 | 
			
		||||
                                          scene.RegionInfo.RegionID,
 | 
			
		||||
                                          DateTime.UtcNow.ToString("s")));
 | 
			
		||||
            scene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            scene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (!sp.IsChildAgent)
 | 
			
		||||
                {
 | 
			
		||||
                    list.Append(String.Format("    <avatar name=\"{0}\" uuid=\"{1}\" />\n", sp.Name, sp.UUID));
 | 
			
		||||
                    list.Append("</avatars>");
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            string payload = list.ToString();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -504,19 +504,18 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
 | 
			
		|||
            // Try root avatar first
 | 
			
		||||
            foreach (Scene scene in m_sceneList)
 | 
			
		||||
            {
 | 
			
		||||
                if (scene.Entities.ContainsKey(agentID) &&
 | 
			
		||||
                    scene.Entities[agentID] is ScenePresence)
 | 
			
		||||
                ScenePresence sp = scene.GetScenePresence(agentID);
 | 
			
		||||
                if (sp != null)
 | 
			
		||||
                {
 | 
			
		||||
                    ScenePresence user = (ScenePresence)scene.Entities[agentID];
 | 
			
		||||
                    if (!user.IsChildAgent)
 | 
			
		||||
                    if (!sp.IsChildAgent)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found root agent for client : {0}", user.ControllingClient.Name);
 | 
			
		||||
                        return user.ControllingClient;
 | 
			
		||||
                        if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found root agent for client : {0}", sp.ControllingClient.Name);
 | 
			
		||||
                        return sp.ControllingClient;
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found child agent for client : {0}", user.ControllingClient.Name);
 | 
			
		||||
                        child = user.ControllingClient;
 | 
			
		||||
                        if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found child agent for client : {0}", sp.ControllingClient.Name);
 | 
			
		||||
                        child = sp.ControllingClient;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1076,17 +1076,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
 | 
			
		|||
            // Try root avatar first
 | 
			
		||||
            foreach (Scene scene in m_sceneList)
 | 
			
		||||
            {
 | 
			
		||||
                if (scene.Entities.ContainsKey(agentID) &&
 | 
			
		||||
                        scene.Entities[agentID] is ScenePresence)
 | 
			
		||||
                ScenePresence sp = scene.GetScenePresence(agentID);
 | 
			
		||||
                if (sp != null)
 | 
			
		||||
                {
 | 
			
		||||
                    ScenePresence user = (ScenePresence)scene.Entities[agentID];
 | 
			
		||||
                    if (!user.IsChildAgent)
 | 
			
		||||
                    if (!sp.IsChildAgent)
 | 
			
		||||
                    {
 | 
			
		||||
                        return user.ControllingClient;
 | 
			
		||||
                        return sp.ControllingClient;
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        child = user.ControllingClient;
 | 
			
		||||
                        child = sp.ControllingClient;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -711,10 +711,8 @@ namespace OpenSim.Region.RegionCombinerModule
 | 
			
		|||
 | 
			
		||||
            List<Vector3> CoarseLocations = new List<Vector3>();
 | 
			
		||||
            List<UUID> AvatarUUIDs = new List<UUID>();
 | 
			
		||||
            connectiondata.RegionScene.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            connectiondata.RegionScene.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (sp.IsChildAgent)
 | 
			
		||||
                    return;
 | 
			
		||||
                if (sp.UUID != presence.UUID)
 | 
			
		||||
                {
 | 
			
		||||
                    if (sp.ParentID != 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3723,9 +3723,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
            m_host.AddScriptLPS(1);
 | 
			
		||||
            List<UUID> keytable = new List<UUID>();
 | 
			
		||||
            // parse for sitting avatare-uuids
 | 
			
		||||
            World.ForEachScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            World.ForEachRootScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            {
 | 
			
		||||
                if (!presence.IsChildAgent && presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID))
 | 
			
		||||
                if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID))
 | 
			
		||||
                    keytable.Add(presence.UUID);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -3785,9 +3785,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
            m_host.AddScriptLPS(1);
 | 
			
		||||
            // parse for sitting avatare-names
 | 
			
		||||
            List<String> nametable = new List<String>();
 | 
			
		||||
            World.ForEachScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            World.ForEachRootScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            {
 | 
			
		||||
                if (!presence.IsChildAgent && presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID))
 | 
			
		||||
                if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID))
 | 
			
		||||
                    nametable.Add(presence.ControllingClient.Name);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -7568,9 +7568,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
        {
 | 
			
		||||
            m_host.AddScriptLPS(1);
 | 
			
		||||
            int avatarCount = 0;
 | 
			
		||||
            World.ForEachScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            World.ForEachRootScenePresence(delegate(ScenePresence presence)
 | 
			
		||||
            {
 | 
			
		||||
                if (!presence.IsChildAgent && presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID))
 | 
			
		||||
                if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID))
 | 
			
		||||
                        avatarCount++;
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -9336,9 +9336,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
                    landObject.SetMediaUrl(url);
 | 
			
		||||
 | 
			
		||||
                    // now send to all (non-child) agents in the parcel
 | 
			
		||||
                    World.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                    World.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (!sp.IsChildAgent && (sp.currentParcelUUID == landData.GlobalID))
 | 
			
		||||
                        if (sp.currentParcelUUID == landData.GlobalID)
 | 
			
		||||
                        {
 | 
			
		||||
                            sp.ControllingClient.SendParcelMediaUpdate(landData.MediaURL,
 | 
			
		||||
                                                                          landData.MediaID,
 | 
			
		||||
| 
						 | 
				
			
			@ -9369,9 +9369,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
                if (presence == null)
 | 
			
		||||
                {
 | 
			
		||||
                    // send to all (non-child) agents in the parcel
 | 
			
		||||
                    World.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                    World.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (!sp.IsChildAgent && (sp.currentParcelUUID == landData.GlobalID))
 | 
			
		||||
                        if (sp.currentParcelUUID == landData.GlobalID)
 | 
			
		||||
                        {
 | 
			
		||||
                            sp.ControllingClient.SendParcelMediaCommand(0x4, // TODO what is this?
 | 
			
		||||
                                                                           (ParcelMediaCommandEnum)commandToSend,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -873,10 +873,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
            CheckThreatLevel(ThreatLevel.None, "osGetAgents");
 | 
			
		||||
 | 
			
		||||
            LSL_List result = new LSL_List();
 | 
			
		||||
            World.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            World.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
            {
 | 
			
		||||
                if (!sp.IsChildAgent)
 | 
			
		||||
                    result.Add(new LSL_String(sp.Name));
 | 
			
		||||
                result.Add(new LSL_String(sp.Name));
 | 
			
		||||
            });
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -2582,11 +2581,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
            CheckThreatLevel(ThreatLevel.Severe, "osKickAvatar");
 | 
			
		||||
            if (World.Permissions.CanRunConsoleCommand(m_host.OwnerID))
 | 
			
		||||
            {
 | 
			
		||||
                World.ForEachScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                World.ForEachRootScenePresence(delegate(ScenePresence sp)
 | 
			
		||||
                {
 | 
			
		||||
                    if (!sp.IsChildAgent &&
 | 
			
		||||
                        sp.Firstname == FirstName &&
 | 
			
		||||
                        sp.Lastname == SurName)
 | 
			
		||||
                    if (sp.Firstname == FirstName && sp.Lastname == SurName)
 | 
			
		||||
                    {
 | 
			
		||||
                        // kick client...
 | 
			
		||||
                        if (alert != null)
 | 
			
		||||
| 
						 | 
				
			
			@ -2718,17 +2715,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
            CheckThreatLevel(ThreatLevel.None, "osGetAvatarList");
 | 
			
		||||
 | 
			
		||||
            LSL_List result = new LSL_List();
 | 
			
		||||
            World.ForEachScenePresence(delegate (ScenePresence avatar)
 | 
			
		||||
            World.ForEachRootScenePresence(delegate (ScenePresence avatar)
 | 
			
		||||
            {
 | 
			
		||||
                if (avatar != null && avatar.UUID != m_host.OwnerID)
 | 
			
		||||
                {
 | 
			
		||||
                    if (avatar.IsChildAgent == false)
 | 
			
		||||
                    {
 | 
			
		||||
                        result.Add(new LSL_String(avatar.UUID.ToString()));
 | 
			
		||||
                        OpenMetaverse.Vector3 ap = avatar.AbsolutePosition;
 | 
			
		||||
                        result.Add(new LSL_Vector(ap.X, ap.Y, ap.Z));
 | 
			
		||||
                        result.Add(new LSL_String(avatar.Name));
 | 
			
		||||
                    }
 | 
			
		||||
                    result.Add(new LSL_String(avatar.UUID.ToString()));
 | 
			
		||||
                    OpenMetaverse.Vector3 ap = avatar.AbsolutePosition;
 | 
			
		||||
                    result.Add(new LSL_Vector(ap.X, ap.Y, ap.Z));
 | 
			
		||||
                    result.Add(new LSL_String(avatar.Name));
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue