Switches the direct event postings in the API file over to the Shared/

new style of parameter passing, using the IEventReceiver interface.
This commit is contained in:
Melanie Thielker
2008-09-23 20:02:32 +00:00
parent 0651efaafa
commit 88277366bf
4 changed files with 131 additions and 56 deletions

View File

@@ -355,10 +355,14 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
/// <param name="param">Array of parameters to match event mask</param>
public bool AddToScriptQueue(uint localID, UUID itemID, string FunctionName, Queue_llDetectParams_Struct qParams, params object[] param)
{
List<UUID> keylist = new List<UUID>(m_ScriptEngine.m_ScriptManager.GetScriptKeys(localID));
List<UUID> keylist = m_ScriptEngine.m_ScriptManager.GetScriptKeys(localID);
System.Console.WriteLine("==> got {0} keys", keylist.Count);
if (!keylist.Contains(itemID)) // We don't manage that script
{
System.Console.WriteLine("==> Script not found");
return false;
}
lock (eventQueue)
{
@@ -379,6 +383,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
// Add it to queue
eventQueue.Enqueue(QIS);
System.Console.WriteLine("==> PostedEvent");
}
return true;
}

View File

@@ -197,7 +197,8 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
public bool PostScriptEvent(UUID itemID, EventParams p)
{
return m_EventQueueManager.AddToScriptQueue(0, itemID, p.EventName, EventQueueManager.llDetectNull, p.Params);
uint localID = m_ScriptManager.GetLocalID(itemID);
return m_EventQueueManager.AddToScriptQueue(localID, itemID, p.EventName, EventQueueManager.llDetectNull, p.Params);
}
#endregion

View File

@@ -341,6 +341,16 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
Script.Exec.ExecuteEvent(FunctionName, args);
}
public uint GetLocalID(UUID itemID)
{
foreach (KeyValuePair<uint, Dictionary<UUID, IScript> > k in Scripts)
{
if (k.Value.ContainsKey(itemID))
return k.Key;
}
return 0;
}
public int GetStateEventFlags(uint localID, UUID itemID)
{
// Console.WriteLine("GetStateEventFlags for <" + localID + "," + itemID + ">");
@@ -368,22 +378,8 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
public List<UUID> GetScriptKeys(uint localID)
{
if (localID == 0) // Find it
{
List<UUID> keylist = new List<UUID>();
foreach (Dictionary<UUID, IScript> d in Scripts.Values)
{
foreach (UUID id in d.Keys)
{
if (!keylist.Contains(id))
keylist.Add(id);
}
}
}
if (Scripts.ContainsKey(localID) == false)
return null;
return new List<UUID>();
Dictionary<UUID, IScript> Obj;
Scripts.TryGetValue(localID, out Obj);
@@ -395,6 +391,8 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
{
lock (scriptLock)
{
IScript Script = null;
if (Scripts.ContainsKey(localID) == false)
return null;
@@ -404,7 +402,6 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
return null;
// Get script
IScript Script;
Obj.TryGetValue(itemID, out Script);
return Script;
}