mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 02:36:00 +08:00
Mantis#1439. Thank you kindly, Melanie for a patch that
plumbs in the events for on_rez.
This commit is contained in:
@@ -96,9 +96,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
public event OnPermissionErrorDelegate OnPermissionError;
|
||||
|
||||
public delegate void NewRezScript(uint localID, LLUUID itemID, string script);
|
||||
public delegate void RezEvent(uint localID, LLUUID itemID, int param);
|
||||
|
||||
public event NewRezScript OnRezScript;
|
||||
|
||||
public event RezEvent OnRezEvent;
|
||||
|
||||
public delegate void RemoveScript(uint localID, LLUUID itemID);
|
||||
|
||||
public event RemoveScript OnRemoveScript;
|
||||
@@ -319,6 +322,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
private ObjectDeGrabDelegate handlerObjectDeGrab = null; //OnObjectDeGrab;
|
||||
private ScriptResetDelegate handlerScriptReset = null; // OnScriptReset
|
||||
private NewRezScript handlerRezScript = null; //OnRezScript;
|
||||
private RezEvent handlerOnRezEvent = null; //OnRezEvent;
|
||||
private RemoveScript handlerRemoveScript = null; //OnRemoveScript;
|
||||
private SceneGroupMoved handlerSceneGroupMove = null; //OnSceneGroupMove;
|
||||
private SceneGroupGrabed handlerSceneGroupGrab = null; //OnSceneGroupGrab;
|
||||
@@ -513,6 +517,15 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
}
|
||||
}
|
||||
|
||||
public void TriggerOnRezEvent(uint localID, LLUUID itemID, int param)
|
||||
{
|
||||
handlerOnRezEvent = OnRezEvent;
|
||||
if (handlerOnRezEvent != null)
|
||||
{
|
||||
handlerOnRezEvent(localID, itemID, param);
|
||||
}
|
||||
}
|
||||
|
||||
public void TriggerRemoveScript(uint localID, LLUUID itemID)
|
||||
{
|
||||
handlerRemoveScript = OnRemoveScript;
|
||||
|
||||
@@ -1673,7 +1673,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
group.UpdateGroupRotation(rot);
|
||||
group.ApplyPhysics(m_physicalPrim);
|
||||
group.Velocity = vel;
|
||||
group.StartScripts();
|
||||
group.StartScripts(param);
|
||||
rootPart.ScheduleFullUpdate();
|
||||
return rootPart.ParentGroup;
|
||||
}
|
||||
|
||||
@@ -98,6 +98,21 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Start the scripts contained in all the prims in this group.
|
||||
/// </summary>
|
||||
public void StartScripts(int param)
|
||||
{
|
||||
// Don't start scripts if they're turned off in the region!
|
||||
if (!((m_scene.RegionInfo.EstateSettings.regionFlags & Simulator.RegionFlags.SkipScripts) == Simulator.RegionFlags.SkipScripts))
|
||||
{
|
||||
foreach (SceneObjectPart part in m_parts.Values)
|
||||
{
|
||||
part.StartScripts(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void StopScripts()
|
||||
{
|
||||
lock (m_parts)
|
||||
|
||||
@@ -152,6 +152,24 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Start all the scripts contained in this prim's inventory
|
||||
/// </summary>
|
||||
public void StartScripts(int param)
|
||||
{
|
||||
lock (m_taskInventory)
|
||||
{
|
||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
||||
{
|
||||
// XXX more hardcoding badness. Should be an enum in TaskInventoryItem
|
||||
if (10 == item.Type)
|
||||
{
|
||||
StartScript(item, param);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stop all the scripts in this prim.
|
||||
/// </summary>
|
||||
@@ -175,6 +193,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
public void StartScript(TaskInventoryItem item, int param)
|
||||
{
|
||||
StartScript(item);
|
||||
m_parentGroup.Scene.EventManager.TriggerOnRezEvent(LocalId, item.ItemID, param);
|
||||
}
|
||||
|
||||
public void StartScript(TaskInventoryItem item)
|
||||
{
|
||||
// m_log.InfoFormat(
|
||||
|
||||
Reference in New Issue
Block a user