From b64f42fa4142a71dffa2639769b9bf2d4584ec30 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Fri, 11 Jun 2010 17:04:54 +0200
Subject: Clone cmGetAvatarList into osGetAvatarList for more generic use.

---
 .../Shared/Api/Implementation/OSSL_Api.cs          | 27 ++++++++++++++++++++++
 .../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs |  1 +
 .../ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs   |  5 ++++
 3 files changed, 33 insertions(+)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index dde664e..cd6d3a3 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -2202,5 +2202,32 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             
             m_LSL_Api.SetPrimitiveParamsEx(prim, rules);
         }
+
+        /// <summary>
+        /// Like osGetAgents but returns enough info for a radar
+        /// </summary>
+        /// <returns>Strided list of the UUID, position and name of each avatar in the region</returns>
+        public LSL_List osGetAvatarList()
+        {
+            CheckThreatLevel(ThreatLevel.None, "osGetAvatarList");
+
+            LSL_List result = new LSL_List();
+            World.ForEachScenePresence(delegate (ScenePresence avatar)
+            {
+                if (avatar != null && avatar.UUID != m_host.OwnerID)
+                {
+                    if (avatar.IsChildAgent == false)
+                    {
+                        if (avatar.PhysicsActor != null && avatar.PhysicsActor.Position != null)
+                        {
+                            result.Add(avatar.UUID);
+                            result.Add(avatar.PhysicsActor.Position);
+                            result.Add(avatar.Name);
+                        }
+                    }
+                }
+            });
+            return result;
+        }
     }
 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index 9785b24..78ee43c 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -176,6 +176,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
         void osCauseDamage(string avatar, double damage);
         LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules);
         void osSetPrimitiveParams(LSL_Key prim, LSL_List rules);
+        LSL_List osGetAvatarList();
 
     }
 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 7af5d43..6cc5f51 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -687,5 +687,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
         {
             m_OSSL_Functions.osSetPrimitiveParams(prim, rules);
         }
+
+        public LSL_List osGetAvatarList()
+        {
+            return m_OSSL_Functions.osGetAvatarList();
+        }
     }
 }
-- 
cgit v1.1