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