From 227fd4eb11db76c7a2da5fdaffd00fc766f38c8c Mon Sep 17 00:00:00 2001 From: Dahlia Trimble Date: Wed, 15 Oct 2008 04:55:13 +0000 Subject: Thanks to T. Sado and nlin for a patch that partially implements llGetAgentInfo (AGENT_FLYING, AGENT_ALWAYS_RUN, AGENT_AWAY, AGENT_MOUSELOOK, AGENT_TYPING). --- .../Shared/Api/Implementation/LSL_Api.cs | 47 +++++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/ScriptEngine') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 826324f..7d3badb 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -4455,8 +4455,51 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public LSL_Integer llGetAgentInfo(string id) { m_host.AddScriptLPS(1); - NotImplemented("llGetAgentInfo"); - return 0; + + // This is partial implementation. + + UUID key = new UUID(); + if (!UUID.TryParse(id, out key)) + { + return 0; + } + + int flags = 0; + + ScenePresence agent = World.GetScenePresence(key); + if (agent == null) + { + return 0; + } + + if (agent.SetAlwaysRun) + { + flags |= ScriptBaseClass.AGENT_ALWAYS_RUN; + } + + if ((agent.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) + { + flags |= ScriptBaseClass.AGENT_FLYING; + } + + if ((agent.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AWAY) != 0) + { + flags |= ScriptBaseClass.AGENT_AWAY; + } + + if ((agent.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0) + { + flags |= ScriptBaseClass.AGENT_MOUSELOOK; + } + + if ((agent.State & (byte)AgentManager.AgentState.Typing) != (byte)0) + { + flags |= ScriptBaseClass.AGENT_TYPING; + } + + //NotImplemented("llGetAgentInfo"); + + return flags; } public LSL_String llGetAgentLanguage(string id) -- cgit v1.1