Can't detach an object from within the script thread because it will throw. Use FireAndForget for that.
parent
98ba079e95
commit
5329e3b9b7
|
@ -2983,17 +2983,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
if ((item.PermsMask & ScriptBaseClass.PERMISSION_ATTACH) != 0)
|
if ((item.PermsMask & ScriptBaseClass.PERMISSION_ATTACH) != 0)
|
||||||
{
|
{
|
||||||
SceneObjectGroup grp = m_host.ParentGroup;
|
|
||||||
UUID itemID = grp.GetFromItemID();
|
|
||||||
|
|
||||||
ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
|
|
||||||
|
|
||||||
IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
|
IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
|
||||||
if (attachmentsModule != null)
|
if (attachmentsModule != null)
|
||||||
attachmentsModule.ShowDetachInUserInventory(itemID, presence.ControllingClient);
|
Util.FireAndForget(DetachWrapper, m_host);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DetachWrapper(object o)
|
||||||
|
{
|
||||||
|
SceneObjectPart host = (SceneObjectPart)o;
|
||||||
|
|
||||||
|
SceneObjectGroup grp = host.ParentGroup;
|
||||||
|
UUID itemID = grp.GetFromItemID();
|
||||||
|
ScenePresence presence = World.GetScenePresence(host.OwnerID);
|
||||||
|
|
||||||
|
IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
|
||||||
|
if (attachmentsModule != null)
|
||||||
|
attachmentsModule.ShowDetachInUserInventory(itemID, presence.ControllingClient);
|
||||||
|
}
|
||||||
|
|
||||||
public void llTakeCamera(string avatar)
|
public void llTakeCamera(string avatar)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
Loading…
Reference in New Issue