mirror of
https://github.com/opensim/opensim.git
synced 2026-07-20 22:55:38 +08:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user