diff options
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 21 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 20 |
2 files changed, 40 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 4346b08..321e164 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -2447,6 +2447,27 @@ namespace OpenSim.Region.Environment.Scenes | |||
2447 | } | 2447 | } |
2448 | } | 2448 | } |
2449 | 2449 | ||
2450 | public bool HasAttachments() | ||
2451 | { | ||
2452 | return m_attachments.Count > 0; | ||
2453 | } | ||
2454 | |||
2455 | public bool HasScriptedAttachments() | ||
2456 | { | ||
2457 | lock (m_attachments) | ||
2458 | { | ||
2459 | foreach (SceneObjectGroup gobj in m_attachments) | ||
2460 | { | ||
2461 | if (gobj != null) | ||
2462 | { | ||
2463 | if (gobj.RootPart.ContainsScripts()) | ||
2464 | return true; | ||
2465 | } | ||
2466 | } | ||
2467 | } | ||
2468 | return false; | ||
2469 | } | ||
2470 | |||
2450 | public void RemoveAttachment(SceneObjectGroup gobj) | 2471 | public void RemoveAttachment(SceneObjectGroup gobj) |
2451 | { | 2472 | { |
2452 | lock (m_attachments) | 2473 | lock (m_attachments) |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 9745ae6..060fde2 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -4626,6 +4626,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4626 | return 0; | 4626 | return 0; |
4627 | } | 4627 | } |
4628 | 4628 | ||
4629 | /// <summary> | ||
4630 | /// Not fully implemented yet. Still to do:- | ||
4631 | /// AGENT_SITTING | ||
4632 | /// AGENT_ON_OBJECT | ||
4633 | /// AGENT_IN_AIR | ||
4634 | /// AGENT_CROUCHING | ||
4635 | /// AGENT_BUSY | ||
4636 | /// Remove as they are done | ||
4637 | /// </summary> | ||
4629 | public LSL_Integer llGetAgentInfo(string id) | 4638 | public LSL_Integer llGetAgentInfo(string id) |
4630 | { | 4639 | { |
4631 | m_host.AddScriptLPS(1); | 4640 | m_host.AddScriptLPS(1); |
@@ -4651,6 +4660,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4651 | flags |= ScriptBaseClass.AGENT_ALWAYS_RUN; | 4660 | flags |= ScriptBaseClass.AGENT_ALWAYS_RUN; |
4652 | } | 4661 | } |
4653 | 4662 | ||
4663 | if (agent.HasAttachments()) | ||
4664 | { | ||
4665 | flags |= ScriptBaseClass.AGENT_ATTACHMENTS; | ||
4666 | if (agent.HasScriptedAttachments()) | ||
4667 | flags |= ScriptBaseClass.AGENT_SCRIPTED; | ||
4668 | } | ||
4669 | |||
4654 | if ((agent.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) | 4670 | if ((agent.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) |
4655 | { | 4671 | { |
4656 | flags |= ScriptBaseClass.AGENT_FLYING; | 4672 | flags |= ScriptBaseClass.AGENT_FLYING; |
@@ -4900,9 +4916,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4900 | // in edit appearance in SL to find the ones that affected the height and how | 4916 | // in edit appearance in SL to find the ones that affected the height and how |
4901 | // much they affected it. | 4917 | // much they affected it. |
4902 | float avatarHeight = 1.23077f // Shortest possible avatar height | 4918 | float avatarHeight = 1.23077f // Shortest possible avatar height |
4903 | + 0.516945f * (float)parms[25] / 255.0f // Body length | 4919 | + 0.516945f * (float)parms[25] / 255.0f // Body height |
4904 | + 0.072514f * (float)parms[120] / 255.0f // Head size | 4920 | + 0.072514f * (float)parms[120] / 255.0f // Head size |
4905 | + 0.3836f * (float)parms[125] / 255.0f // Leg length | 4921 | + 0.3836f * (float)parms[125] / 255.0f // Leg length |
4922 | + 0.08f * (float)parms[77] / 255.0f // Shoe heel height | ||
4923 | + 0.07f * (float)parms[78] / 255.0f // Shoe platform height | ||
4906 | + 0.076f * (float)parms[148] / 255.0f; // Neck length | 4924 | + 0.076f * (float)parms[148] / 255.0f; // Neck length |
4907 | agentSize = new LSL_Vector(0.45, 0.6, avatarHeight); | 4925 | agentSize = new LSL_Vector(0.45, 0.6, avatarHeight); |
4908 | } | 4926 | } |