Fix script "Running" behavior
Unchecking "Running" box in script editor now persists. This fixes http://opensimulator.org/mantis/view.php?id=60570.7.4.1
parent
78143769bf
commit
6d3ee8bb39
|
@ -75,6 +75,8 @@ namespace OpenSim.Region.Framework.Interfaces
|
|||
/// <param name="itemID">The item ID of the script.</param>
|
||||
bool GetScriptState(UUID itemID);
|
||||
|
||||
void SetRunEnable(UUID instanceID, bool enable);
|
||||
|
||||
void SaveAllState();
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -2143,10 +2143,24 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (part == null)
|
||||
return;
|
||||
|
||||
IScriptModule[] engines = RequestModuleInterfaces<IScriptModule>();
|
||||
|
||||
if (running)
|
||||
{
|
||||
foreach (IScriptModule engine in engines)
|
||||
{
|
||||
engine.SetRunEnable(itemID, true);
|
||||
}
|
||||
EventManager.TriggerStartScript(part.LocalId, itemID);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (IScriptModule engine in engines)
|
||||
{
|
||||
engine.SetRunEnable(itemID, false);
|
||||
}
|
||||
EventManager.TriggerStopScript(part.LocalId, itemID);
|
||||
}
|
||||
}
|
||||
|
||||
public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
|
||||
|
|
|
@ -63,6 +63,16 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
|
|||
/// </summary>
|
||||
bool Running { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this
|
||||
/// <see cref="OpenSim.Region.ScriptEngine.Interfaces.IScriptInstance"/> is run.
|
||||
/// For viewer script editor control
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <c>true</c> if run; otherwise, <c>false</c>.
|
||||
/// </value>
|
||||
bool Run { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Is the script suspended?
|
||||
/// </summary>
|
||||
|
|
|
@ -120,6 +120,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
|
||||
public bool Running { get; set; }
|
||||
|
||||
public bool Run { get; set; }
|
||||
|
||||
public bool Suspended
|
||||
{
|
||||
get { return m_Suspended; }
|
||||
|
@ -215,6 +217,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
m_postOnRez = postOnRez;
|
||||
m_AttachedAvatar = part.ParentGroup.AttachedAvatar;
|
||||
m_RegionID = part.ParentGroup.Scene.RegionInfo.RegionID;
|
||||
Run = true;
|
||||
|
||||
if (part != null)
|
||||
{
|
||||
|
@ -359,6 +362,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
|
||||
if (m_startedFromSavedState)
|
||||
{
|
||||
if (!Run)
|
||||
return;
|
||||
|
||||
Start();
|
||||
if (m_postOnRez)
|
||||
{
|
||||
|
@ -391,6 +397,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
}
|
||||
else
|
||||
{
|
||||
if (!Run)
|
||||
return;
|
||||
|
||||
Start();
|
||||
PostEvent(new EventParams("state_entry",
|
||||
new Object[0], new DetectParams[0]));
|
||||
|
|
|
@ -55,6 +55,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
public static string Serialize(ScriptInstance instance)
|
||||
{
|
||||
bool running = instance.Running;
|
||||
bool enabled = instance.Run;
|
||||
|
||||
XmlDocument xmldoc = new XmlDocument();
|
||||
|
||||
|
@ -77,6 +78,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
|
||||
rootElement.AppendChild(run);
|
||||
|
||||
XmlElement run_enable = xmldoc.CreateElement("", "Run", "");
|
||||
run_enable.AppendChild(xmldoc.CreateTextNode(
|
||||
enabled.ToString()));
|
||||
|
||||
rootElement.AppendChild(run_enable);
|
||||
|
||||
Dictionary<string, Object> vars = instance.GetVars();
|
||||
|
||||
XmlElement variables = xmldoc.CreateElement("", "Variables", "");
|
||||
|
@ -225,6 +232,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
{
|
||||
object varValue;
|
||||
XmlNodeList partL = rootNode.ChildNodes;
|
||||
instance.Run = true;
|
||||
|
||||
foreach (XmlNode part in partL)
|
||||
{
|
||||
|
@ -236,6 +244,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
case "Running":
|
||||
instance.Running=bool.Parse(part.InnerText);
|
||||
break;
|
||||
case "Run":
|
||||
instance.Run = bool.Parse(part.InnerText);
|
||||
break;
|
||||
case "Variables":
|
||||
XmlNodeList varL = part.ChildNodes;
|
||||
foreach (XmlNode var in varL)
|
||||
|
|
|
@ -1503,6 +1503,13 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
}
|
||||
}
|
||||
|
||||
public void SetRunEnable(UUID instanceID, bool enable)
|
||||
{
|
||||
IScriptInstance instance = GetInstance(instanceID);
|
||||
if (instance != null)
|
||||
instance.Run = enable;
|
||||
}
|
||||
|
||||
public bool GetScriptState(UUID itemID)
|
||||
{
|
||||
IScriptInstance instance = GetInstance(itemID);
|
||||
|
|
Loading…
Reference in New Issue