Aurora.ScriptEngine.AuroraDotNetEngine.APIs.LSL_Api.llCreateLink C# (CSharp) Method

llCreateLink() public method

public llCreateLink ( string target, int parent ) : System.DateTime
target string
parent int
return System.DateTime
        public DateTime llCreateLink(string target, int parent)
        {
            if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID))
                return DateTime.Now;

            UUID invItemID = InventorySelf();
            UUID targetID;

            if (!UUID.TryParse(target, out targetID))
                return DateTime.Now;

            TaskInventoryItem item;
            lock (m_host.TaskInventory)
            {
                item = m_host.TaskInventory[invItemID];
            }

            if ((item.PermsMask & ScriptBaseClass.PERMISSION_CHANGE_LINKS) == 0
                && !m_automaticLinkPermission)
            {
                ShoutError("Script trying to link but PERMISSION_CHANGE_LINKS permission not set!");
                return DateTime.Now;
            }

            IClientAPI client = null;
            IScenePresence sp = World.GetScenePresence(item.PermsGranter);
            if (sp != null)
                client = sp.ControllingClient;

            ISceneChildEntity targetPart = World.GetSceneObjectPart(targetID);

            if (targetPart.ParentEntity.RootChild.AttachmentPoint != 0)
                return DateTime.Now;
            // Fail silently if attached
            ISceneEntity parentPrim = null;
            ISceneEntity childPrim = null;
            if (parent != 0)
            {
                parentPrim = m_host.ParentEntity;
                childPrim = targetPart.ParentEntity;
            }
            else
            {
                parentPrim = targetPart.ParentEntity;
                childPrim = m_host.ParentEntity;
            }
            //                byte uf = childPrim.RootPart.UpdateFlag;
            parentPrim.LinkToGroup(childPrim);
            //                if (uf != (Byte)0)
            //                    parent.RootPart.UpdateFlag = uf;

            parentPrim.TriggerScriptChangedEvent(Changed.LINK);
            parentPrim.RootChild.CreateSelected = true;
            parentPrim.ScheduleGroupUpdate(PrimUpdateFlags.ForcedFullUpdate);

            if (client != null)
                parentPrim.GetProperties(client);

            return PScriptSleep(1000);
        }
LSL_Api