diff options
author | Homer Horwitz | 2008-10-16 21:46:03 +0000 |
---|---|---|
committer | Homer Horwitz | 2008-10-16 21:46:03 +0000 |
commit | ae9e38bf3fdc27144e0f3fa377c60506526e4c13 (patch) | |
tree | db9515714c731464576c415d8d37021abbe9f469 /OpenSim/Region | |
parent | Split the currency module into currency and a new Combat module, because (diff) | |
download | opensim-SC_OLD-ae9e38bf3fdc27144e0f3fa377c60506526e4c13.zip opensim-SC_OLD-ae9e38bf3fdc27144e0f3fa377c60506526e4c13.tar.gz opensim-SC_OLD-ae9e38bf3fdc27144e0f3fa377c60506526e4c13.tar.bz2 opensim-SC_OLD-ae9e38bf3fdc27144e0f3fa377c60506526e4c13.tar.xz |
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.
Diffstat (limited to 'OpenSim/Region')
3 files changed, 40 insertions, 4 deletions
diff --git a/OpenSim/Region/Environment/Modules/Framework/EventQueueHelper.cs b/OpenSim/Region/Environment/Modules/Framework/EventQueueHelper.cs index 93ee4f8..1e7eb59 100644 --- a/OpenSim/Region/Environment/Modules/Framework/EventQueueHelper.cs +++ b/OpenSim/Region/Environment/Modules/Framework/EventQueueHelper.cs | |||
@@ -146,6 +146,23 @@ namespace OpenSim.Region.Environment | |||
146 | return buildEvent("TeleportFinish", body); | 146 | return buildEvent("TeleportFinish", body); |
147 | } | 147 | } |
148 | 148 | ||
149 | public static LLSD ScriptRunningReplyEvent(UUID objectID, UUID itemID, bool running, bool mono) | ||
150 | { | ||
151 | LLSDMap script = new LLSDMap(); | ||
152 | script.Add("ObjectID", LLSD.FromUUID(objectID)); | ||
153 | script.Add("ItemID", LLSD.FromUUID(itemID)); | ||
154 | script.Add("Running", LLSD.FromBoolean(running)); | ||
155 | script.Add("Mono", LLSD.FromBoolean(mono)); | ||
156 | |||
157 | LLSDArray scriptArr = new LLSDArray(); | ||
158 | scriptArr.Add(script); | ||
159 | |||
160 | LLSDMap body = new LLSDMap(); | ||
161 | body.Add("Script", scriptArr); | ||
162 | |||
163 | return buildEvent("ScriptRunningReply", body); | ||
164 | } | ||
165 | |||
149 | public static LLSD KeepAliveEvent() | 166 | public static LLSD KeepAliveEvent() |
150 | { | 167 | { |
151 | return buildEvent("FAKEEVENT", new LLSDMap()); | 168 | return buildEvent("FAKEEVENT", new LLSDMap()); |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs index 1c1d42f..d3269e1 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs | |||
@@ -32,6 +32,7 @@ using log4net; | |||
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Region.Interfaces; | 33 | using OpenSim.Region.Interfaces; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Region.Environment; | ||
35 | using OpenSim.Region.Environment.Interfaces; | 36 | using OpenSim.Region.Environment.Interfaces; |
36 | using OpenSim.Region.Environment.Scenes; | 37 | using OpenSim.Region.Environment.Scenes; |
37 | using OpenSim.Region.ScriptEngine.Interfaces; | 38 | using OpenSim.Region.ScriptEngine.Interfaces; |
@@ -369,8 +370,17 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
369 | if (id == null) | 370 | if (id == null) |
370 | return; | 371 | return; |
371 | 372 | ||
372 | controllingClient.SendScriptRunningReply(objectID, itemID, | 373 | IEventQueue eq = World.RequestModuleInterface<IEventQueue>(); |
373 | id.Running); | 374 | if (eq == null) |
375 | { | ||
376 | controllingClient.SendScriptRunningReply(objectID, itemID, | ||
377 | id.Running); | ||
378 | } | ||
379 | else | ||
380 | { | ||
381 | eq.Enqueue(EventQueueHelper.ScriptRunningReplyEvent(objectID, itemID, id.Running, true), | ||
382 | controllingClient.AgentId); | ||
383 | } | ||
374 | } | 384 | } |
375 | 385 | ||
376 | public IScriptApi GetApi(UUID itemID, string name) | 386 | public IScriptApi GetApi(UUID itemID, string name) |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 9b78d53..86dc824 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -972,8 +972,17 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
972 | IScriptInstance instance = GetInstance(itemID); | 972 | IScriptInstance instance = GetInstance(itemID); |
973 | if (instance == null) | 973 | if (instance == null) |
974 | return; | 974 | return; |
975 | controllingClient.SendScriptRunningReply(objectID, itemID, | 975 | IEventQueue eq = World.RequestModuleInterface<IEventQueue>(); |
976 | GetScriptState(itemID)); | 976 | if (eq == null) |
977 | { | ||
978 | controllingClient.SendScriptRunningReply(objectID, itemID, | ||
979 | GetScriptState(itemID)); | ||
980 | } | ||
981 | else | ||
982 | { | ||
983 | eq.Enqueue(EventQueueHelper.ScriptRunningReplyEvent(objectID, itemID, GetScriptState(itemID), true), | ||
984 | controllingClient.AgentId); | ||
985 | } | ||
977 | } | 986 | } |
978 | } | 987 | } |
979 | } | 988 | } |