diff options
-rw-r--r-- | OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs | 25 |
2 files changed, 26 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs index 89d7045..5a9385f 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs | |||
@@ -357,6 +357,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase | |||
357 | 357 | ||
358 | public void control(uint localID, UUID itemID, UUID agentID, uint held, uint change) | 358 | public void control(uint localID, UUID itemID, UUID agentID, uint held, uint change) |
359 | { | 359 | { |
360 | if ((change == 0) && (myScriptEngine.m_EventQueueManager.CheckEeventQueueForEvent(localID,"control"))) return; | ||
360 | myScriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "control", EventQueueManager.llDetectNull, new object[] { new LSL_Types.LSLString(agentID.ToString()), new LSL_Types.LSLInteger(held), new LSL_Types.LSLInteger(change)}); | 361 | myScriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "control", EventQueueManager.llDetectNull, new object[] { new LSL_Types.LSLString(agentID.ToString()), new LSL_Types.LSLInteger(held), new LSL_Types.LSLInteger(change)}); |
361 | } | 362 | } |
362 | 363 | ||
diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs index 1a08795..af7fca3 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs | |||
@@ -288,6 +288,31 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase | |||
288 | } | 288 | } |
289 | } | 289 | } |
290 | #endregion | 290 | #endregion |
291 | |||
292 | #region " Check execution queue for a specified Event" | ||
293 | /// <summary> | ||
294 | /// checks to see if a specified event type is already in the queue | ||
295 | /// </summary> | ||
296 | /// <param name="localID">Region object ID</param> | ||
297 | /// <param name="FunctionName">Name of the function, will be state + "_event_" + FunctionName</param> | ||
298 | /// <returns>true if event is found , false if not found</returns> | ||
299 | /// | ||
300 | public bool CheckEeventQueueForEvent(uint localID, string FunctionName) | ||
301 | { | ||
302 | if (eventQueue.Count > 0) | ||
303 | { | ||
304 | lock (eventQueue) | ||
305 | { | ||
306 | foreach (EventQueueManager.QueueItemStruct QIS in eventQueue) | ||
307 | { | ||
308 | if ((QIS.functionName == FunctionName) && (QIS.localID == localID)) | ||
309 | return true; | ||
310 | } | ||
311 | } | ||
312 | } | ||
313 | return false; | ||
314 | } | ||
315 | #endregion | ||
291 | 316 | ||
292 | #region " Add events to execution queue " | 317 | #region " Add events to execution queue " |
293 | /// <summary> | 318 | /// <summary> |