OpenSim.Region.ScriptEngine.Shared.Api.OSSL_Api.osNpcTouch C# (CSharp) Method

osNpcTouch() public method

public osNpcTouch ( OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString npcLSL_Key, OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString object_key, OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger link_num ) : void
npcLSL_Key OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString
object_key OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString
link_num OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger
return void
        public void osNpcTouch(LSL_Key npcLSL_Key, LSL_Key object_key, LSL_Integer link_num)
        {
            CheckThreatLevel(ThreatLevel.High, "osNpcTouch");
            m_host.AddScriptLPS(1);
            
            INPCModule module = World.RequestModuleInterface<INPCModule>();
            int linkNum = link_num.value;
            if (module != null || (linkNum < 0 && linkNum != ScriptBaseClass.LINK_THIS))
            {
                UUID npcId;
                if (!UUID.TryParse(npcLSL_Key, out npcId) || !module.CheckPermissions(npcId, m_host.OwnerID))
                    return;

                SceneObjectPart part = null;
                UUID objectId;
                if (UUID.TryParse(LSL_String.ToString(object_key), out objectId))
                    part = World.GetSceneObjectPart(objectId);

                if (part == null)
                    return;

                if (linkNum != ScriptBaseClass.LINK_THIS)
                {
                    if (linkNum == 0 || linkNum == ScriptBaseClass.LINK_ROOT)
                    { // 0 and 1 are treated as root, find the root if the current part isnt it
                        if (!part.IsRoot)
                            part = part.ParentGroup.RootPart;
                    }
                    else
                    { // Find the prim with the given link number if not found then fail silently
                        part = part.ParentGroup.GetLinkNumPart(linkNum);
                        if (part == null)
                            return;
                    }
                }

                module.Touch(npcId, part.UUID);
            }
        }
OSSL_Api