diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index f2a2f325bf..0e86c86f3d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -2206,5 +2206,32 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_LSL_Api.SetPrimitiveParamsEx(prim, rules);
}
+
+ ///
+ /// Like osGetAgents but returns enough info for a radar
+ ///
+ /// Strided list of the UUID, position and name of each avatar in the region
+ 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 1ab7f103da..c8f3623602 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 7af5d432c8..6cc5f518ae 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();
+ }
}
}