public void llReleaseControls()
{
if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID)) return;
TaskInventoryItem item;
lock (m_host.TaskInventory)
{
if (!m_host.TaskInventory.ContainsKey(InventorySelf()))
return;
item = m_host.TaskInventory[InventorySelf()];
}
if (item.PermsGranter != UUID.Zero)
{
IScenePresence presence = World.GetScenePresence(item.PermsGranter);
if (presence != null)
{
if ((item.PermsMask & ScriptBaseClass.PERMISSION_TAKE_CONTROLS) != 0)
{
// Unregister controls from Presence
IScriptControllerModule m = presence.RequestModuleInterface<IScriptControllerModule>();
if (m != null)
m.UnRegisterControlEventsToScript(m_localID, m_itemID);
// Remove Take Control permission.
item.PermsMask &= ~ScriptBaseClass.PERMISSION_TAKE_CONTROLS;
}
}
}
}