Add new and updated script events
parent
0e16e0fb6a
commit
6baa13ab7a
|
@ -184,10 +184,62 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
public event ClientClosed OnClientClosed;
|
public event ClientClosed OnClientClosed;
|
||||||
|
|
||||||
|
// Fired when a script is created
|
||||||
|
// The indication that a new script exists in this region.
|
||||||
|
public delegate void NewScript(UUID clientID, SceneObjectPart part, UUID itemID);
|
||||||
|
public event NewScript OnNewScript;
|
||||||
|
public virtual void TriggerNewScript(UUID clientID, SceneObjectPart part, UUID itemID)
|
||||||
|
{
|
||||||
|
NewScript handlerNewScript = OnNewScript;
|
||||||
|
if (handlerNewScript != null)
|
||||||
|
{
|
||||||
|
foreach (NewScript d in handlerNewScript.GetInvocationList())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
d(clientID, part, itemID);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat(
|
||||||
|
"[EVENT MANAGER]: Delegate for TriggerNewScript failed - continuing. {0} {1}",
|
||||||
|
e.Message, e.StackTrace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//TriggerUpdateScript: triggered after Scene receives client's upload of updated script and stores it as asset
|
||||||
|
// An indication that the script has changed.
|
||||||
|
public delegate void UpdateScript(UUID clientID, UUID itemId, UUID primId, bool isScriptRunning, UUID newAssetID);
|
||||||
|
public event UpdateScript OnUpdateScript;
|
||||||
|
public virtual void TriggerUpdateScript(UUID clientId, UUID itemId, UUID primId, bool isScriptRunning, UUID newAssetID)
|
||||||
|
{
|
||||||
|
UpdateScript handlerUpdateScript = OnUpdateScript;
|
||||||
|
if (handlerUpdateScript != null)
|
||||||
|
{
|
||||||
|
foreach (UpdateScript d in handlerUpdateScript.GetInvocationList())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
d(clientId, itemId, primId, isScriptRunning, newAssetID);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat(
|
||||||
|
"[EVENT MANAGER]: Delegate for TriggerUpdateScript failed - continuing. {0} {1}",
|
||||||
|
e.Message, e.StackTrace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This is fired when a scene object property that a script might be interested in (such as color, scale or
|
/// ScriptChangedEvent is fired when a scene object property that a script might be interested
|
||||||
/// inventory) changes. Only enough information is sent for the LSL changed event
|
/// in (such as color, scale or inventory) changes. Only enough information sent is for the LSL changed event.
|
||||||
/// (see http://lslwiki.net/lslwiki/wakka.php?wakka=changed)
|
/// This is not an indication that the script has changed (see OnUpdateScript for that).
|
||||||
|
/// This event is sent to a script to tell it that some property changed on
|
||||||
|
/// the object the script is in. See http://lslwiki.net/lslwiki/wakka.php?wakka=changed .
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event ScriptChangedEvent OnScriptChangedEvent;
|
public event ScriptChangedEvent OnScriptChangedEvent;
|
||||||
public delegate void ScriptChangedEvent(uint localID, uint change);
|
public delegate void ScriptChangedEvent(uint localID, uint change);
|
||||||
|
|
|
@ -283,6 +283,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
remoteClient.SendAgentAlertMessage("Script saved", false);
|
remoteClient.SendAgentAlertMessage("Script saved", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tell anyone managing scripts that a script has been reloaded/changed
|
||||||
|
EventManager.TriggerUpdateScript(remoteClient.AgentId, itemId, primId, isScriptRunning, item.AssetID);
|
||||||
|
|
||||||
part.ParentGroup.ResumeScripts();
|
part.ParentGroup.ResumeScripts();
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
|
@ -1624,9 +1628,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// have state in inventory
|
// have state in inventory
|
||||||
part.Inventory.CreateScriptInstance(copyID, 0, false, DefaultScriptEngine, 0);
|
part.Inventory.CreateScriptInstance(copyID, 0, false, DefaultScriptEngine, 0);
|
||||||
|
|
||||||
|
// tell anyone watching that there is a new script in town
|
||||||
|
EventManager.TriggerNewScript(agentID, part, copyID);
|
||||||
|
|
||||||
// m_log.InfoFormat("[PRIMINVENTORY]: " +
|
// m_log.InfoFormat("[PRIMINVENTORY]: " +
|
||||||
// "Rezzed script {0} into prim local ID {1} for user {2}",
|
// "Rezzed script {0} into prim local ID {1} for user {2}",
|
||||||
// item.inventoryName, localID, remoteClient.Name);
|
// item.inventoryName, localID, remoteClient.Name);
|
||||||
|
|
||||||
part.ParentGroup.ResumeScripts();
|
part.ParentGroup.ResumeScripts();
|
||||||
|
|
||||||
return part;
|
return part;
|
||||||
|
@ -1707,6 +1715,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
part.Inventory.AddInventoryItem(taskItem, false);
|
part.Inventory.AddInventoryItem(taskItem, false);
|
||||||
part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
|
part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
|
||||||
|
|
||||||
|
// tell anyone managing scripts that a new script exists
|
||||||
|
EventManager.TriggerNewScript(agentID, part, taskItem.ItemID);
|
||||||
|
|
||||||
part.ParentGroup.ResumeScripts();
|
part.ParentGroup.ResumeScripts();
|
||||||
|
|
||||||
return part;
|
return part;
|
||||||
|
|
Loading…
Reference in New Issue