From 6c2302637f22ac522de6dd76ffcd2dd05ee04ea8 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Wed, 13 May 2009 02:21:21 +0000 Subject: Implement llAttachToAvatar() --- .../Shared/Api/Implementation/LSL_Api.cs | 28 +++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 5700be5..a6080d6 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -2706,7 +2706,33 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void llAttachToAvatar(int attachment) { m_host.AddScriptLPS(1); - NotImplemented("llAttachToAvatar"); + + if (m_host.ParentGroup.RootPart.AttachmentPoint == 0) + return; + + TaskInventoryItem item; + + lock (m_host.TaskInventory) + { + if (!m_host.TaskInventory.ContainsKey(InventorySelf())) + return; + else + item = m_host.TaskInventory[InventorySelf()]; + } + + if (item.PermsGranter != m_host.OwnerID) + return; + + if ((item.PermsMask & ScriptBaseClass.PERMISSION_ATTACH) != 0) + { + SceneObjectGroup grp = m_host.ParentGroup; + + ScenePresence presence = World.GetScenePresence(m_host.OwnerID); + + m_ScriptEngine.World.AttachObject(presence.ControllingClient, + grp.LocalId, (uint)attachment, Quaternion.Identity, + Vector3.Zero, false); + } } public void llDetachFromAvatar() -- cgit v1.1