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>
|
/// <param name="itemID">The item ID of the script.</param>
|
||||||
bool GetScriptState(UUID itemID);
|
bool GetScriptState(UUID itemID);
|
||||||
|
|
||||||
|
void SetRunEnable(UUID instanceID, bool enable);
|
||||||
|
|
||||||
void SaveAllState();
|
void SaveAllState();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -2143,10 +2143,24 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (part == null)
|
if (part == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
IScriptModule[] engines = RequestModuleInterfaces<IScriptModule>();
|
||||||
|
|
||||||
if (running)
|
if (running)
|
||||||
|
{
|
||||||
|
foreach (IScriptModule engine in engines)
|
||||||
|
{
|
||||||
|
engine.SetRunEnable(itemID, true);
|
||||||
|
}
|
||||||
EventManager.TriggerStartScript(part.LocalId, itemID);
|
EventManager.TriggerStartScript(part.LocalId, itemID);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
foreach (IScriptModule engine in engines)
|
||||||
|
{
|
||||||
|
engine.SetRunEnable(itemID, false);
|
||||||
|
}
|
||||||
EventManager.TriggerStopScript(part.LocalId, itemID);
|
EventManager.TriggerStopScript(part.LocalId, itemID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
|
public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
|
||||||
|
|
|
@ -63,6 +63,16 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
|
||||||
/// </summary>
|
/// </summary>
|
||||||
bool Running { get; set; }
|
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>
|
/// <summary>
|
||||||
/// Is the script suspended?
|
/// Is the script suspended?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -120,6 +120,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
|
|
||||||
public bool Running { get; set; }
|
public bool Running { get; set; }
|
||||||
|
|
||||||
|
public bool Run { get; set; }
|
||||||
|
|
||||||
public bool Suspended
|
public bool Suspended
|
||||||
{
|
{
|
||||||
get { return m_Suspended; }
|
get { return m_Suspended; }
|
||||||
|
@ -215,6 +217,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
m_postOnRez = postOnRez;
|
m_postOnRez = postOnRez;
|
||||||
m_AttachedAvatar = part.ParentGroup.AttachedAvatar;
|
m_AttachedAvatar = part.ParentGroup.AttachedAvatar;
|
||||||
m_RegionID = part.ParentGroup.Scene.RegionInfo.RegionID;
|
m_RegionID = part.ParentGroup.Scene.RegionInfo.RegionID;
|
||||||
|
Run = true;
|
||||||
|
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
|
@ -359,6 +362,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
|
|
||||||
if (m_startedFromSavedState)
|
if (m_startedFromSavedState)
|
||||||
{
|
{
|
||||||
|
if (!Run)
|
||||||
|
return;
|
||||||
|
|
||||||
Start();
|
Start();
|
||||||
if (m_postOnRez)
|
if (m_postOnRez)
|
||||||
{
|
{
|
||||||
|
@ -391,6 +397,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (!Run)
|
||||||
|
return;
|
||||||
|
|
||||||
Start();
|
Start();
|
||||||
PostEvent(new EventParams("state_entry",
|
PostEvent(new EventParams("state_entry",
|
||||||
new Object[0], new DetectParams[0]));
|
new Object[0], new DetectParams[0]));
|
||||||
|
|
|
@ -55,6 +55,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
public static string Serialize(ScriptInstance instance)
|
public static string Serialize(ScriptInstance instance)
|
||||||
{
|
{
|
||||||
bool running = instance.Running;
|
bool running = instance.Running;
|
||||||
|
bool enabled = instance.Run;
|
||||||
|
|
||||||
XmlDocument xmldoc = new XmlDocument();
|
XmlDocument xmldoc = new XmlDocument();
|
||||||
|
|
||||||
|
@ -77,6 +78,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
|
|
||||||
rootElement.AppendChild(run);
|
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();
|
Dictionary<string, Object> vars = instance.GetVars();
|
||||||
|
|
||||||
XmlElement variables = xmldoc.CreateElement("", "Variables", "");
|
XmlElement variables = xmldoc.CreateElement("", "Variables", "");
|
||||||
|
@ -225,6 +232,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
{
|
{
|
||||||
object varValue;
|
object varValue;
|
||||||
XmlNodeList partL = rootNode.ChildNodes;
|
XmlNodeList partL = rootNode.ChildNodes;
|
||||||
|
instance.Run = true;
|
||||||
|
|
||||||
foreach (XmlNode part in partL)
|
foreach (XmlNode part in partL)
|
||||||
{
|
{
|
||||||
|
@ -236,6 +244,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
case "Running":
|
case "Running":
|
||||||
instance.Running=bool.Parse(part.InnerText);
|
instance.Running=bool.Parse(part.InnerText);
|
||||||
break;
|
break;
|
||||||
|
case "Run":
|
||||||
|
instance.Run = bool.Parse(part.InnerText);
|
||||||
|
break;
|
||||||
case "Variables":
|
case "Variables":
|
||||||
XmlNodeList varL = part.ChildNodes;
|
XmlNodeList varL = part.ChildNodes;
|
||||||
foreach (XmlNode var in varL)
|
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)
|
public bool GetScriptState(UUID itemID)
|
||||||
{
|
{
|
||||||
IScriptInstance instance = GetInstance(itemID);
|
IScriptInstance instance = GetInstance(itemID);
|
||||||
|
|
Loading…
Reference in New Issue