Instead of passing separate engine, part and item components to script APIs, pass down IScriptInstance instead.
This is to allow the future co-operative script thread terminate feature to detect and act upon termination requests. This splits the assembly and state loading out from the ScriptInstance() constructor to a separate Load() method in order to facilititate continued script logic regression testing.0.7.4-extended
							parent
							
								
									5054a07be2
								
							
						
					
					
						commit
						44901f0b31
					
				|  | @ -29,6 +29,7 @@ using System; | ||||||
| using OpenMetaverse; | using OpenMetaverse; | ||||||
| using OpenSim.Framework; | using OpenSim.Framework; | ||||||
| using OpenSim.Region.Framework.Scenes; | using OpenSim.Region.Framework.Scenes; | ||||||
|  | using OpenSim.Region.ScriptEngine.Shared; | ||||||
| 
 | 
 | ||||||
| namespace OpenSim.Region.ScriptEngine.Interfaces | namespace OpenSim.Region.ScriptEngine.Interfaces | ||||||
| { | { | ||||||
|  | @ -38,11 +39,8 @@ namespace OpenSim.Region.ScriptEngine.Interfaces | ||||||
|         /// Initialize the API |         /// Initialize the API | ||||||
|         /// </summary> |         /// </summary> | ||||||
|         /// <remarks> |         /// <remarks> | ||||||
|         /// Each API has an identifier, which is used to load the |         /// Each API has an identifier, which is used to load the proper runtime assembly at load time. | ||||||
|         /// proper runtime assembly at load time. |         /// <param name='scriptInstance'>/param> | ||||||
|         /// <param name='engine'>/param> |         void Initialize(IScriptInstance scriptInstance); | ||||||
|         /// <param name='part'></param> |  | ||||||
|         /// <param name='item'></param> |  | ||||||
|         void Initialize(IScriptEngine engine, SceneObjectPart part, TaskInventoryItem item); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -31,6 +31,7 @@ using System.Collections.Generic; | ||||||
| using OpenMetaverse; | using OpenMetaverse; | ||||||
| using log4net; | using log4net; | ||||||
| using OpenSim.Framework; | using OpenSim.Framework; | ||||||
|  | using OpenSim.Region.Framework.Scenes; | ||||||
| using OpenSim.Region.ScriptEngine.Shared; | using OpenSim.Region.ScriptEngine.Shared; | ||||||
| using OpenSim.Region.ScriptEngine.Interfaces; | using OpenSim.Region.ScriptEngine.Interfaces; | ||||||
| 
 | 
 | ||||||
|  | @ -105,6 +106,11 @@ namespace OpenSim.Region.ScriptEngine.Interfaces | ||||||
|         /// </summary> |         /// </summary> | ||||||
|         long MeasurementPeriodExecutionTime { get; } |         long MeasurementPeriodExecutionTime { get; } | ||||||
| 
 | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// Scene part in which this script instance is contained. | ||||||
|  |         /// </summary> | ||||||
|  |         SceneObjectPart Part { get; } | ||||||
|  | 
 | ||||||
|         IScriptEngine Engine { get; } |         IScriptEngine Engine { get; } | ||||||
|         UUID AppDomain { get; set; } |         UUID AppDomain { get; set; } | ||||||
|         string PrimName { get; } |         string PrimName { get; } | ||||||
|  | @ -124,6 +130,12 @@ namespace OpenSim.Region.ScriptEngine.Interfaces | ||||||
| 
 | 
 | ||||||
|         uint LocalID { get; } |         uint LocalID { get; } | ||||||
|         UUID AssetID { get; } |         UUID AssetID { get; } | ||||||
|  | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// Inventory item containing the script used. | ||||||
|  |         /// </summary> | ||||||
|  |         TaskInventoryItem ScriptTask { get; } | ||||||
|  | 
 | ||||||
|         Queue EventQueue { get; } |         Queue EventQueue { get; } | ||||||
| 
 | 
 | ||||||
|         /// <summary> |         /// <summary> | ||||||
|  |  | ||||||
|  | @ -107,11 +107,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|         protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache = new Dictionary<UUID, UserInfoCacheEntry>(); |         protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache = new Dictionary<UUID, UserInfoCacheEntry>(); | ||||||
|         protected int EMAIL_PAUSE_TIME = 20;  // documented delay value for smtp. |         protected int EMAIL_PAUSE_TIME = 20;  // documented delay value for smtp. | ||||||
| 
 | 
 | ||||||
|         public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item) |         public void Initialize(IScriptInstance scriptInstance) | ||||||
|         { |         { | ||||||
|             m_ScriptEngine = ScriptEngine; |             m_ScriptEngine = scriptInstance.Engine; | ||||||
|             m_host = host; |             m_host = scriptInstance.Part; | ||||||
|             m_item = item; |             m_item = scriptInstance.ScriptTask; | ||||||
| 
 | 
 | ||||||
|             LoadLimits();  // read script limits from config. |             LoadLimits();  // read script limits from config. | ||||||
| 
 | 
 | ||||||
|  | @ -119,10 +119,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|                     m_ScriptEngine.World.RequestModuleInterface<IMessageTransferModule>(); |                     m_ScriptEngine.World.RequestModuleInterface<IMessageTransferModule>(); | ||||||
|             m_UrlModule = m_ScriptEngine.World.RequestModuleInterface<IUrlModule>(); |             m_UrlModule = m_ScriptEngine.World.RequestModuleInterface<IUrlModule>(); | ||||||
| 
 | 
 | ||||||
|             AsyncCommands = new AsyncCommandManager(ScriptEngine); |             AsyncCommands = new AsyncCommandManager(m_ScriptEngine); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         /* load configuration items that affect script, object and run-time behavior. */ |         /// <summary> | ||||||
|  |         /// Load configuration items that affect script, object and run-time behavior. */ | ||||||
|  |         /// </summary> | ||||||
|         private void LoadLimits() |         private void LoadLimits() | ||||||
|         { |         { | ||||||
|             m_ScriptDelayFactor = |             m_ScriptDelayFactor = | ||||||
|  | @ -137,6 +139,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|                 m_ScriptEngine.Config.GetInt("NotecardLineReadCharsMax", 255); |                 m_ScriptEngine.Config.GetInt("NotecardLineReadCharsMax", 255); | ||||||
|             if (m_notecardLineReadCharsMax > 65535) |             if (m_notecardLineReadCharsMax > 65535) | ||||||
|                 m_notecardLineReadCharsMax = 65535; |                 m_notecardLineReadCharsMax = 65535; | ||||||
|  | 
 | ||||||
|             // load limits for particular subsystems. |             // load limits for particular subsystems. | ||||||
|             IConfig SMTPConfig; |             IConfig SMTPConfig; | ||||||
|             if ((SMTPConfig = m_ScriptEngine.ConfigSource.Configs["SMTP"]) != null) { |             if ((SMTPConfig = m_ScriptEngine.ConfigSource.Configs["SMTP"]) != null) { | ||||||
|  |  | ||||||
|  | @ -61,10 +61,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|         internal bool m_LSFunctionsEnabled = false; |         internal bool m_LSFunctionsEnabled = false; | ||||||
|         internal IScriptModuleComms m_comms = null; |         internal IScriptModuleComms m_comms = null; | ||||||
| 
 | 
 | ||||||
|         public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item) |         public void Initialize(IScriptInstance scriptInstance) | ||||||
|         { |         { | ||||||
|             m_ScriptEngine = ScriptEngine; |             m_ScriptEngine = scriptInstance.Engine; | ||||||
|             m_host = host; |             m_host = scriptInstance.Part; | ||||||
| 
 | 
 | ||||||
|             if (m_ScriptEngine.Config.GetBoolean("AllowLightShareFunctions", false)) |             if (m_ScriptEngine.Config.GetBoolean("AllowLightShareFunctions", false)) | ||||||
|                 m_LSFunctionsEnabled = true; |                 m_LSFunctionsEnabled = true; | ||||||
|  | @ -92,10 +92,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|             get { return m_ScriptEngine.World; } |             get { return m_ScriptEngine.World; } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // |         /// <summary> | ||||||
|         //Dumps an error message on the debug console. |         /// Dumps an error message on the debug console. | ||||||
|         // |         /// </summary> | ||||||
| 
 |  | ||||||
|         internal void LSShoutError(string message) |         internal void LSShoutError(string message) | ||||||
|         { |         { | ||||||
|             if (message.Length > 1023) |             if (message.Length > 1023) | ||||||
|  |  | ||||||
|  | @ -61,11 +61,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|         internal bool m_MODFunctionsEnabled = false; |         internal bool m_MODFunctionsEnabled = false; | ||||||
|         internal IScriptModuleComms m_comms = null; |         internal IScriptModuleComms m_comms = null; | ||||||
| 
 | 
 | ||||||
|         public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item) |         public void Initialize(IScriptInstance scriptInstance) | ||||||
|         { |         { | ||||||
|             m_ScriptEngine = ScriptEngine; |             m_ScriptEngine = scriptInstance.Engine; | ||||||
|             m_host = host; |             m_host = scriptInstance.Part; | ||||||
|             m_item = item; |             m_item = scriptInstance.ScriptTask; | ||||||
| 
 | 
 | ||||||
|             if (m_ScriptEngine.Config.GetBoolean("AllowMODFunctions", false)) |             if (m_ScriptEngine.Config.GetBoolean("AllowMODFunctions", false)) | ||||||
|                 m_MODFunctionsEnabled = true; |                 m_MODFunctionsEnabled = true; | ||||||
|  |  | ||||||
|  | @ -140,11 +140,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|         internal float m_ScriptDistanceFactor = 1.0f; |         internal float m_ScriptDistanceFactor = 1.0f; | ||||||
|         internal Dictionary<string, FunctionPerms > m_FunctionPerms = new Dictionary<string, FunctionPerms >(); |         internal Dictionary<string, FunctionPerms > m_FunctionPerms = new Dictionary<string, FunctionPerms >(); | ||||||
| 
 | 
 | ||||||
|         public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item) |         public void Initialize(IScriptInstance scriptInstance) | ||||||
|         { |         { | ||||||
|             m_ScriptEngine = ScriptEngine; |             m_ScriptEngine = scriptInstance.Engine; | ||||||
|             m_host = host; |             m_host = scriptInstance.Part; | ||||||
|             m_item = item; |             m_item = scriptInstance.ScriptTask; | ||||||
| 
 | 
 | ||||||
|             if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false)) |             if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false)) | ||||||
|                 m_OSFunctionsEnabled = true; |                 m_OSFunctionsEnabled = true; | ||||||
|  |  | ||||||
|  | @ -157,9 +157,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | ||||||
| 
 | 
 | ||||||
|         public UUID AppDomain { get; set; } |         public UUID AppDomain { get; set; } | ||||||
| 
 | 
 | ||||||
|         /// <summary> |  | ||||||
|         /// Scene part in which this script instance is contained. |  | ||||||
|         /// </summary> |  | ||||||
|         public SceneObjectPart Part { get; private set; } |         public SceneObjectPart Part { get; private set; } | ||||||
| 
 | 
 | ||||||
|         public string PrimName { get; private set; } |         public string PrimName { get; private set; } | ||||||
|  | @ -209,43 +206,52 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | ||||||
|             EventQueue.Clear(); |             EventQueue.Clear(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public ScriptInstance(IScriptEngine engine, SceneObjectPart part, |         public ScriptInstance( | ||||||
|                 UUID itemID, UUID assetID, string assembly, |             IScriptEngine engine, SceneObjectPart part, TaskInventoryItem item, | ||||||
|                 AppDomain dom, string primName, string scriptName, |             int startParam, bool postOnRez, | ||||||
|                 int startParam, bool postOnRez, StateSource stateSource, |             int maxScriptQueue) | ||||||
|                 int maxScriptQueue) |  | ||||||
|         { |         { | ||||||
|             State = "default"; |             State = "default"; | ||||||
|             EventQueue = new Queue(32); |             EventQueue = new Queue(32); | ||||||
| 
 | 
 | ||||||
|             Engine = engine; |             Engine = engine; | ||||||
|             Part = part; |             Part = part; | ||||||
|             ItemID = itemID; |             ScriptTask = item; | ||||||
|             AssetID = assetID; | 
 | ||||||
|             PrimName = primName; |             // This is currently only here to allow regression tests to get away without specifying any inventory | ||||||
|             ScriptName = scriptName; |             // item when they are testing script logic that doesn't require an item. | ||||||
|             m_Assembly = assembly; |             if (ScriptTask != null) | ||||||
|  |             { | ||||||
|  |                 ScriptName = ScriptTask.Name; | ||||||
|  |                 ItemID = ScriptTask.ItemID; | ||||||
|  |                 AssetID = ScriptTask.AssetID; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             PrimName = part.ParentGroup.Name; | ||||||
|             StartParam = startParam; |             StartParam = startParam; | ||||||
|             m_MaxScriptQueue = maxScriptQueue; |             m_MaxScriptQueue = maxScriptQueue; | ||||||
|             m_stateSource = stateSource; |  | ||||||
|             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; | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|             lock (Part.TaskInventory) |         /// <summary> | ||||||
|             { |         /// Load the script from an assembly into an AppDomain. | ||||||
|                 if (Part.TaskInventory.ContainsKey(ItemID)) |         /// </summary> | ||||||
|                 { |         /// <param name='dom'></param> | ||||||
|                     ScriptTask = Part.TaskInventory[ItemID]; |         /// <param name='assembly'></param> | ||||||
|                 } |         /// <param name='stateSource'></param> | ||||||
|             } |         public void Load(AppDomain dom, string assembly, StateSource stateSource) | ||||||
|  |         { | ||||||
|  |             m_Assembly = assembly; | ||||||
|  |             m_stateSource = stateSource; | ||||||
| 
 | 
 | ||||||
|             ApiManager am = new ApiManager(); |             ApiManager am = new ApiManager(); | ||||||
| 
 | 
 | ||||||
|             foreach (string api in am.GetApis()) |             foreach (string api in am.GetApis()) | ||||||
|             { |             { | ||||||
|                 m_Apis[api] = am.CreateApi(api); |                 m_Apis[api] = am.CreateApi(api); | ||||||
|                 m_Apis[api].Initialize(engine, part, ScriptTask); |                 m_Apis[api].Initialize(this); | ||||||
|             } |             } | ||||||
|      |      | ||||||
|             try |             try | ||||||
|  | @ -279,7 +285,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | ||||||
| 
 | 
 | ||||||
| //                // m_log.Debug("[Script] Script instance created"); | //                // m_log.Debug("[Script] Script instance created"); | ||||||
| 
 | 
 | ||||||
|                 part.SetScriptEvents(ItemID, |                 Part.SetScriptEvents(ItemID, | ||||||
|                                      (int)m_Script.GetStateEventFlags(State)); |                                      (int)m_Script.GetStateEventFlags(State)); | ||||||
|             } |             } | ||||||
|             catch (Exception e) |             catch (Exception e) | ||||||
|  |  | ||||||
|  | @ -41,6 +41,7 @@ using OpenSim.Region.OptionalModules.World.NPC; | ||||||
| using OpenSim.Region.Framework.Scenes; | using OpenSim.Region.Framework.Scenes; | ||||||
| using OpenSim.Region.ScriptEngine.Shared; | using OpenSim.Region.ScriptEngine.Shared; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.Api; | using OpenSim.Region.ScriptEngine.Shared.Api; | ||||||
|  | using OpenSim.Region.ScriptEngine.Shared.Instance; | ||||||
| using OpenSim.Services.Interfaces; | using OpenSim.Services.Interfaces; | ||||||
| using OpenSim.Tests.Common; | using OpenSim.Tests.Common; | ||||||
| using OpenSim.Tests.Common.Mock; | using OpenSim.Tests.Common.Mock; | ||||||
|  | @ -93,7 +94,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             TaskInventoryHelpers.AddSceneObject(m_scene, so1.RootPart, inventoryItemName, itemId, userId); |             TaskInventoryHelpers.AddSceneObject(m_scene, so1.RootPart, inventoryItemName, itemId, userId); | ||||||
| 
 | 
 | ||||||
|             LSL_Api api = new LSL_Api(); |             LSL_Api api = new LSL_Api(); | ||||||
|             api.Initialize(m_engine, so1.RootPart, null); |             api.Initialize(new ScriptInstance(m_engine, so1.RootPart, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             // Create a second object |             // Create a second object | ||||||
|             SceneObjectGroup so2 = SceneHelpers.CreateSceneObject(1, userId, "so2", 0x100); |             SceneObjectGroup so2 = SceneHelpers.CreateSceneObject(1, userId, "so2", 0x100); | ||||||
|  | @ -126,7 +127,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             SceneObjectGroup so1 = SceneHelpers.CreateSceneObject(1, user1Id, "so1", 0x10); |             SceneObjectGroup so1 = SceneHelpers.CreateSceneObject(1, user1Id, "so1", 0x10); | ||||||
|             m_scene.AddSceneObject(so1); |             m_scene.AddSceneObject(so1); | ||||||
|             LSL_Api api = new LSL_Api(); |             LSL_Api api = new LSL_Api(); | ||||||
|             api.Initialize(m_engine, so1.RootPart, null); |             api.Initialize(new ScriptInstance(m_engine, so1.RootPart, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             // Create an object embedded inside the first |             // Create an object embedded inside the first | ||||||
|             UUID itemId = TestHelpers.ParseTail(0x20); |             UUID itemId = TestHelpers.ParseTail(0x20); | ||||||
|  | @ -136,7 +137,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             SceneObjectGroup so2 = SceneHelpers.CreateSceneObject(1, user2Id, "so2", 0x100); |             SceneObjectGroup so2 = SceneHelpers.CreateSceneObject(1, user2Id, "so2", 0x100); | ||||||
|             m_scene.AddSceneObject(so2); |             m_scene.AddSceneObject(so2); | ||||||
|             LSL_Api api2 = new LSL_Api(); |             LSL_Api api2 = new LSL_Api(); | ||||||
|             api2.Initialize(m_engine, so2.RootPart, null); |             api2.Initialize(new ScriptInstance(m_engine, so2.RootPart, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             // *** Firstly, we test where llAllowInventoryDrop() has not been called. *** |             // *** Firstly, we test where llAllowInventoryDrop() has not been called. *** | ||||||
|             api.llGiveInventory(so2.UUID.ToString(), inventoryItemName); |             api.llGiveInventory(so2.UUID.ToString(), inventoryItemName); | ||||||
|  |  | ||||||
|  | @ -41,6 +41,7 @@ using OpenSim.Region.OptionalModules.World.NPC; | ||||||
| using OpenSim.Region.Framework.Scenes; | using OpenSim.Region.Framework.Scenes; | ||||||
| using OpenSim.Region.ScriptEngine.Shared; | using OpenSim.Region.ScriptEngine.Shared; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.Api; | using OpenSim.Region.ScriptEngine.Shared.Api; | ||||||
|  | using OpenSim.Region.ScriptEngine.Shared.Instance; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | ||||||
| using OpenSim.Services.Interfaces; | using OpenSim.Services.Interfaces; | ||||||
| using OpenSim.Tests.Common; | using OpenSim.Tests.Common; | ||||||
|  | @ -104,7 +105,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(grp2); |             m_scene.AddSceneObject(grp2); | ||||||
| 
 | 
 | ||||||
|             LSL_Api apiGrp1 = new LSL_Api(); |             LSL_Api apiGrp1 = new LSL_Api(); | ||||||
|             apiGrp1.Initialize(m_engine, grp1.RootPart, grp1Item); |             apiGrp1.Initialize(new ScriptInstance(m_engine, grp1.RootPart, grp1Item, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             apiGrp1.llCreateLink(grp2.UUID.ToString(), ScriptBaseClass.TRUE); |             apiGrp1.llCreateLink(grp2.UUID.ToString(), ScriptBaseClass.TRUE); | ||||||
| 
 | 
 | ||||||
|  | @ -131,7 +132,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             grp1Item.PermsMask |= ScriptBaseClass.PERMISSION_CHANGE_LINKS; |             grp1Item.PermsMask |= ScriptBaseClass.PERMISSION_CHANGE_LINKS; | ||||||
| 
 | 
 | ||||||
|             LSL_Api apiGrp1 = new LSL_Api(); |             LSL_Api apiGrp1 = new LSL_Api(); | ||||||
|             apiGrp1.Initialize(m_engine, grp1.RootPart, grp1Item); |             apiGrp1.Initialize(new ScriptInstance(m_engine, grp1.RootPart, grp1Item, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             apiGrp1.llBreakLink(2); |             apiGrp1.llBreakLink(2); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -34,6 +34,7 @@ using OpenSim.Region.ScriptEngine.Shared; | ||||||
| using OpenSim.Region.Framework.Scenes; | using OpenSim.Region.Framework.Scenes; | ||||||
| using Nini.Config; | using Nini.Config; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.Api; | using OpenSim.Region.ScriptEngine.Shared.Api; | ||||||
|  | using OpenSim.Region.ScriptEngine.Shared.Instance; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | ||||||
| using OpenMetaverse; | using OpenMetaverse; | ||||||
| using OpenSim.Tests.Common.Mock; | using OpenSim.Tests.Common.Mock; | ||||||
|  | @ -67,7 +68,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             engine.AddRegion(scene); |             engine.AddRegion(scene); | ||||||
| 
 | 
 | ||||||
|             m_lslApi = new LSL_Api(); |             m_lslApi = new LSL_Api(); | ||||||
|             m_lslApi.Initialize(engine, part, null); |             m_lslApi.Initialize(new ScriptInstance(engine, part, null, 0, false, int.MaxValue)); | ||||||
|         } |         } | ||||||
|   |   | ||||||
|         [Test] |         [Test] | ||||||
|  |  | ||||||
|  | @ -33,6 +33,7 @@ using OpenSim.Region.ScriptEngine.Shared; | ||||||
| using OpenSim.Region.Framework.Scenes; | using OpenSim.Region.Framework.Scenes; | ||||||
| using Nini.Config; | using Nini.Config; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.Api; | using OpenSim.Region.ScriptEngine.Shared.Api; | ||||||
|  | using OpenSim.Region.ScriptEngine.Shared.Instance; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | ||||||
| using OpenMetaverse; | using OpenMetaverse; | ||||||
| using System; | using System; | ||||||
|  | @ -66,7 +67,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             engine.AddRegion(scene); |             engine.AddRegion(scene); | ||||||
| 
 | 
 | ||||||
|             m_lslApi = new LSL_Api(); |             m_lslApi = new LSL_Api(); | ||||||
|             m_lslApi.Initialize(engine, part, null); |             m_lslApi.Initialize(new ScriptInstance(engine, part, null, 0, false, int.MaxValue)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         [Test] |         [Test] | ||||||
|  |  | ||||||
|  | @ -41,6 +41,7 @@ using OpenSim.Region.OptionalModules.World.NPC; | ||||||
| using OpenSim.Region.Framework.Scenes; | using OpenSim.Region.Framework.Scenes; | ||||||
| using OpenSim.Region.ScriptEngine.Shared; | using OpenSim.Region.ScriptEngine.Shared; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.Api; | using OpenSim.Region.ScriptEngine.Shared.Api; | ||||||
|  | using OpenSim.Region.ScriptEngine.Shared.Instance; | ||||||
| using OpenSim.Services.Interfaces; | using OpenSim.Services.Interfaces; | ||||||
| using OpenSim.Tests.Common; | using OpenSim.Tests.Common; | ||||||
| using OpenSim.Tests.Common.Mock; | using OpenSim.Tests.Common.Mock; | ||||||
|  | @ -93,7 +94,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(so); |             m_scene.AddSceneObject(so); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, part, null); |             osslApi.Initialize(new ScriptInstance(m_engine, part, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             string notecardName = "appearanceNc"; |             string notecardName = "appearanceNc"; | ||||||
| 
 | 
 | ||||||
|  | @ -134,7 +135,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(so); |             m_scene.AddSceneObject(so); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, part, null); |             osslApi.Initialize(new ScriptInstance(m_engine, part, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             string notecardName = "appearanceNc"; |             string notecardName = "appearanceNc"; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -41,6 +41,7 @@ using OpenSim.Region.CoreModules.Framework.InventoryAccess; | ||||||
| using OpenSim.Region.Framework.Scenes; | using OpenSim.Region.Framework.Scenes; | ||||||
| using OpenSim.Region.ScriptEngine.Shared; | using OpenSim.Region.ScriptEngine.Shared; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.Api; | using OpenSim.Region.ScriptEngine.Shared.Api; | ||||||
|  | using OpenSim.Region.ScriptEngine.Shared.Instance; | ||||||
| using OpenSim.Services.Interfaces; | using OpenSim.Services.Interfaces; | ||||||
| using OpenSim.Tests.Common; | using OpenSim.Tests.Common; | ||||||
| using OpenSim.Tests.Common.Mock; | using OpenSim.Tests.Common.Mock; | ||||||
|  | @ -98,9 +99,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); |             SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); | ||||||
|             TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); |             TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); | ||||||
| 
 | 
 | ||||||
|             new LSL_Api().Initialize(m_engine, inWorldObj.RootPart, scriptItem); |             ScriptInstance si = new ScriptInstance(m_engine, inWorldObj.RootPart, scriptItem, 0, false, int.MaxValue); | ||||||
|  |             new LSL_Api().Initialize(si); | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, inWorldObj.RootPart, scriptItem); |             osslApi.Initialize(si); | ||||||
| 
 | 
 | ||||||
| //            SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, ua1.PrincipalID); | //            SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, ua1.PrincipalID); | ||||||
| 
 | 
 | ||||||
|  | @ -144,9 +146,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); |             SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); | ||||||
|             TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); |             TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); | ||||||
| 
 | 
 | ||||||
|             new LSL_Api().Initialize(m_engine, inWorldObj.RootPart, scriptItem); |             ScriptInstance si = new ScriptInstance(m_engine, inWorldObj.RootPart, scriptItem, 0, false, int.MaxValue); | ||||||
|  |             new LSL_Api().Initialize(si); | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, inWorldObj.RootPart, scriptItem); |             osslApi.Initialize(si); | ||||||
| 
 | 
 | ||||||
|             // Create an object embedded inside the first |             // Create an object embedded inside the first | ||||||
|             TaskInventoryHelpers.AddNotecard( |             TaskInventoryHelpers.AddNotecard( | ||||||
|  | @ -192,12 +195,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); |             SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); | ||||||
|             TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); |             TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); | ||||||
| 
 | 
 | ||||||
|             new LSL_Api().Initialize(m_engine, inWorldObj.RootPart, scriptItem); |             ScriptInstance si = new ScriptInstance(m_engine, inWorldObj.RootPart, scriptItem, 0, false, int.MaxValue); | ||||||
|  |             new LSL_Api().Initialize(si); | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, inWorldObj.RootPart, scriptItem); |             osslApi.Initialize(si); | ||||||
| 
 | 
 | ||||||
|             // Create an object embedded inside the first |             // Create an object embedded inside the first | ||||||
|             TaskInventoryHelpers.AddSceneObject(m_scene, inWorldObj.RootPart, taskInvObjItemName, taskInvObjItemId, ua1.PrincipalID); |             TaskInventoryHelpers.AddSceneObject( | ||||||
|  |                 m_scene, inWorldObj.RootPart, taskInvObjItemName, taskInvObjItemId, ua1.PrincipalID); | ||||||
| 
 | 
 | ||||||
|             ScenePresence sp2 = SceneHelpers.AddScenePresence(m_scene, ua2); |             ScenePresence sp2 = SceneHelpers.AddScenePresence(m_scene, ua2); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -42,6 +42,7 @@ using OpenSim.Region.OptionalModules.World.NPC; | ||||||
| using OpenSim.Region.Framework.Scenes; | using OpenSim.Region.Framework.Scenes; | ||||||
| using OpenSim.Region.ScriptEngine.Shared; | using OpenSim.Region.ScriptEngine.Shared; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.Api; | using OpenSim.Region.ScriptEngine.Shared.Api; | ||||||
|  | using OpenSim.Region.ScriptEngine.Shared.Instance; | ||||||
| using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | ||||||
| using OpenSim.Services.Interfaces; | using OpenSim.Services.Interfaces; | ||||||
| using OpenSim.Tests.Common; | using OpenSim.Tests.Common; | ||||||
|  | @ -99,7 +100,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(so); |             m_scene.AddSceneObject(so); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, part, null); |             osslApi.Initialize(new ScriptInstance(m_engine, part, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             string notecardName = "appearanceNc"; |             string notecardName = "appearanceNc"; | ||||||
|             osslApi.osOwnerSaveAppearance(notecardName); |             osslApi.osOwnerSaveAppearance(notecardName); | ||||||
|  | @ -125,7 +126,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(so); |             m_scene.AddSceneObject(so); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, so.RootPart, null); |             osslApi.Initialize(new ScriptInstance(m_engine, so.RootPart, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             bool gotExpectedException = false; |             bool gotExpectedException = false; | ||||||
|             try |             try | ||||||
|  | @ -160,7 +161,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(so); |             m_scene.AddSceneObject(so); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, part, null); |             osslApi.Initialize(new ScriptInstance(m_engine, part, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             string notecardName = "appearanceNc"; |             string notecardName = "appearanceNc"; | ||||||
|             osslApi.osOwnerSaveAppearance(notecardName); |             osslApi.osOwnerSaveAppearance(notecardName); | ||||||
|  | @ -194,7 +195,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(so); |             m_scene.AddSceneObject(so); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, part, null); |             osslApi.Initialize(new ScriptInstance(m_engine, part, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             osslApi.osOwnerSaveAppearance(firstAppearanceNcName); |             osslApi.osOwnerSaveAppearance(firstAppearanceNcName); | ||||||
| 
 | 
 | ||||||
|  | @ -232,7 +233,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(so); |             m_scene.AddSceneObject(so); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, part, null); |             osslApi.Initialize(new ScriptInstance(m_engine, part, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             osslApi.osOwnerSaveAppearance(firstAppearanceNcName); |             osslApi.osOwnerSaveAppearance(firstAppearanceNcName); | ||||||
| 
 | 
 | ||||||
|  | @ -284,10 +285,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(otherSo); |             m_scene.AddSceneObject(otherSo); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, part, null); |             osslApi.Initialize(new ScriptInstance(m_engine, part, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api otherOsslApi = new OSSL_Api(); |             OSSL_Api otherOsslApi = new OSSL_Api(); | ||||||
|             otherOsslApi.Initialize(m_engine, otherPart, null); |             otherOsslApi.Initialize(new ScriptInstance(m_engine, otherPart, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             string notecardName = "appearanceNc"; |             string notecardName = "appearanceNc"; | ||||||
|             osslApi.osOwnerSaveAppearance(notecardName); |             osslApi.osOwnerSaveAppearance(notecardName); | ||||||
|  | @ -331,7 +332,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||||||
|             m_scene.AddSceneObject(so); |             m_scene.AddSceneObject(so); | ||||||
| 
 | 
 | ||||||
|             OSSL_Api osslApi = new OSSL_Api(); |             OSSL_Api osslApi = new OSSL_Api(); | ||||||
|             osslApi.Initialize(m_engine, part, null); |             osslApi.Initialize(new ScriptInstance(m_engine, part, null, 0, false, int.MaxValue)); | ||||||
| 
 | 
 | ||||||
|             string notecardName = "appearanceNc"; |             string notecardName = "appearanceNc"; | ||||||
|             osslApi.osOwnerSaveAppearance(notecardName); |             osslApi.osOwnerSaveAppearance(notecardName); | ||||||
|  |  | ||||||
|  | @ -1284,11 +1284,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine | ||||||
|                     m_DomainScripts[appDomain].Add(itemID); |                     m_DomainScripts[appDomain].Add(itemID); | ||||||
| 
 | 
 | ||||||
|                     instance = new ScriptInstance(this, part, |                     instance = new ScriptInstance(this, part, | ||||||
|                                                   itemID, assetID, assembly, |                                                   item, | ||||||
|                                                   m_AppDomains[appDomain], |                                                   startParam, postOnRez, | ||||||
|                                                   part.ParentGroup.RootPart.Name, |                                                   m_MaxScriptQueue); | ||||||
|                                                   item.Name, startParam, postOnRez, | 
 | ||||||
|                                                   stateSource, m_MaxScriptQueue); |                     instance.Load(m_AppDomains[appDomain], assembly, stateSource); | ||||||
| 
 | 
 | ||||||
| //                    if (DebugLevel >= 1) | //                    if (DebugLevel >= 1) | ||||||
| //                    m_log.DebugFormat( | //                    m_log.DebugFormat( | ||||||
|  |  | ||||||
|  | @ -3238,6 +3238,7 @@ | ||||||
|       <Reference name="OpenSim.Region.ScriptEngine.Shared"/> |       <Reference name="OpenSim.Region.ScriptEngine.Shared"/> | ||||||
|       <Reference name="OpenSim.Region.ScriptEngine.Shared.Api"/> |       <Reference name="OpenSim.Region.ScriptEngine.Shared.Api"/> | ||||||
|       <Reference name="OpenSim.Region.ScriptEngine.Shared.Api.Runtime"/> |       <Reference name="OpenSim.Region.ScriptEngine.Shared.Api.Runtime"/> | ||||||
|  |       <Reference name="OpenSim.Region.ScriptEngine.Shared.Instance"/> | ||||||
|       <Reference name="OpenSim.Region.ScriptEngine.XEngine"/> |       <Reference name="OpenSim.Region.ScriptEngine.XEngine"/> | ||||||
|       <Reference name="OpenSim.Services.Interfaces"/> |       <Reference name="OpenSim.Services.Interfaces"/> | ||||||
|       <Reference name="OpenSim.Tests.Common"/> |       <Reference name="OpenSim.Tests.Common"/> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)