Fixed (mono-)script handling for SL viewer 1.21:

- Added two missing caps (UpdateScriptAgent, UpdateScriptTask)
- Added one missing EventQueue event (ScriptRunningReply)
- Changed DNE and XEngine to use this new event
As we only use the mono engine anyway, the "Mono" checkbox is set by
default but doesn't have any function.
0.6.0-stable
Homer Horwitz 2008-10-16 21:46:03 +00:00
parent 4bbc28e445
commit ae9e38bf3f
4 changed files with 42 additions and 4 deletions

View File

@ -171,6 +171,8 @@ namespace OpenSim.Framework.Communications.Capabilities
m_capsHandlers["UpdateScriptAgentInventory"] = m_capsHandlers["UpdateNotecardAgentInventory"];
m_capsHandlers["UpdateScriptTaskInventory"] =
new RestStreamHandler("POST", capsBase + m_notecardTaskUpdatePath, ScriptTaskInventory);
m_capsHandlers["UpdateScriptAgent"] = m_capsHandlers["UpdateScriptAgentInventory"];
m_capsHandlers["UpdateScriptTask"] = m_capsHandlers["UpdateScriptTaskInventory"];
// justincc: I've disabled the CAPS service for now to fix problems with selecting textures, and
// subsequent inventory breakage, in the edit object pane (such as mantis 1085). This requires

View File

@ -146,6 +146,23 @@ namespace OpenSim.Region.Environment
return buildEvent("TeleportFinish", body);
}
public static LLSD ScriptRunningReplyEvent(UUID objectID, UUID itemID, bool running, bool mono)
{
LLSDMap script = new LLSDMap();
script.Add("ObjectID", LLSD.FromUUID(objectID));
script.Add("ItemID", LLSD.FromUUID(itemID));
script.Add("Running", LLSD.FromBoolean(running));
script.Add("Mono", LLSD.FromBoolean(mono));
LLSDArray scriptArr = new LLSDArray();
scriptArr.Add(script);
LLSDMap body = new LLSDMap();
body.Add("Script", scriptArr);
return buildEvent("ScriptRunningReply", body);
}
public static LLSD KeepAliveEvent()
{
return buildEvent("FAKEEVENT", new LLSDMap());

View File

@ -32,6 +32,7 @@ using log4net;
using Nini.Config;
using OpenSim.Region.Interfaces;
using OpenSim.Framework;
using OpenSim.Region.Environment;
using OpenSim.Region.Environment.Interfaces;
using OpenSim.Region.Environment.Scenes;
using OpenSim.Region.ScriptEngine.Interfaces;
@ -369,8 +370,17 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
if (id == null)
return;
controllingClient.SendScriptRunningReply(objectID, itemID,
id.Running);
IEventQueue eq = World.RequestModuleInterface<IEventQueue>();
if (eq == null)
{
controllingClient.SendScriptRunningReply(objectID, itemID,
id.Running);
}
else
{
eq.Enqueue(EventQueueHelper.ScriptRunningReplyEvent(objectID, itemID, id.Running, true),
controllingClient.AgentId);
}
}
public IScriptApi GetApi(UUID itemID, string name)

View File

@ -972,8 +972,17 @@ namespace OpenSim.Region.ScriptEngine.XEngine
IScriptInstance instance = GetInstance(itemID);
if (instance == null)
return;
controllingClient.SendScriptRunningReply(objectID, itemID,
GetScriptState(itemID));
IEventQueue eq = World.RequestModuleInterface<IEventQueue>();
if (eq == null)
{
controllingClient.SendScriptRunningReply(objectID, itemID,
GetScriptState(itemID));
}
else
{
eq.Enqueue(EventQueueHelper.ScriptRunningReplyEvent(objectID, itemID, GetScriptState(itemID), true),
controllingClient.AgentId);
}
}
}
}