Add OnScriptMovingStartEvent and OnScriptMovingEndEvent to EventManager so that these can be triggered by future code (not yet implemented).

Also hooks up moving_start and moving_end script events, eliminating itemID on XEngine EventManager methods since this is completely unused.
An adaptation of the patch in http://opensimulator.org/mantis/view.php?id=6515
Thanks Garmin Kawaguichi and Signpost Marv.
This commit is contained in:
Justin Clark-Casey (justincc)
2013-01-26 03:57:51 +00:00
parent 8ea112a5b2
commit 53833babf9
2 changed files with 60 additions and 2 deletions

View File

@@ -549,6 +549,20 @@ namespace OpenSim.Region.Framework.Scenes
/// </remarks>
public event ScriptControlEvent OnScriptControlEvent;
public delegate void ScriptMovingStartEvent(uint localID);
/// <summary>
/// TODO: Should be triggered when a physics object starts moving.
/// </summary>
public event ScriptMovingStartEvent OnScriptMovingStartEvent;
public delegate void ScriptMovingEndEvent(uint localID);
/// <summary>
/// TODO: Should be triggered when a physics object stops moving.
/// </summary>
public event ScriptMovingEndEvent OnScriptMovingEndEvent;
public delegate void ScriptAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 atpos);
/// <summary>
@@ -2212,6 +2226,48 @@ namespace OpenSim.Region.Framework.Scenes
}
}
public void TriggerMovingStartEvent(uint localID)
{
ScriptMovingStartEvent handlerScriptMovingStartEvent = OnScriptMovingStartEvent;
if (handlerScriptMovingStartEvent != null)
{
foreach (ScriptMovingStartEvent d in handlerScriptMovingStartEvent.GetInvocationList())
{
try
{
d(localID);
}
catch (Exception e)
{
m_log.ErrorFormat(
"[EVENT MANAGER]: Delegate for TriggerMovingStartEvent failed - continuing. {0} {1}",
e.Message, e.StackTrace);
}
}
}
}
public void TriggerMovingEndEvent(uint localID)
{
ScriptMovingEndEvent handlerScriptMovingEndEvent = OnScriptMovingEndEvent;
if (handlerScriptMovingEndEvent != null)
{
foreach (ScriptMovingEndEvent d in handlerScriptMovingEndEvent.GetInvocationList())
{
try
{
d(localID);
}
catch (Exception e)
{
m_log.ErrorFormat(
"[EVENT MANAGER]: Delegate for TriggerMovingEndEvent failed - continuing. {0} {1}",
e.Message, e.StackTrace);
}
}
}
}
public void TriggerRequestChangeWaterHeight(float height)
{
if (height < 0)