Fix script "Running" behavior
Unchecking "Running" box in script editor now persists. This fixes http://opensimulator.org/mantis/view.php?id=6057integration
							parent
							
								
									4290ae59f4
								
							
						
					
					
						commit
						a8ce8709f2
					
				|  | @ -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
	
	 BlueWall
						BlueWall