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.
This commit is contained in:
Justin Clark-Casey (justincc)
2013-01-15 21:13:22 +00:00
parent 1c240cd555
commit fccb03227e
16 changed files with 110 additions and 79 deletions

View File

@@ -29,6 +29,7 @@ using System;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.ScriptEngine.Shared;
namespace OpenSim.Region.ScriptEngine.Interfaces
{
@@ -38,11 +39,8 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
/// Initialize the API
/// </summary>
/// <remarks>
/// Each API has an identifier, which is used to load the
/// proper runtime assembly at load time.
/// <param name='engine'>/param>
/// <param name='part'></param>
/// <param name='item'></param>
void Initialize(IScriptEngine engine, SceneObjectPart part, TaskInventoryItem item);
/// Each API has an identifier, which is used to load the proper runtime assembly at load time.
/// <param name='scriptInstance'>/param>
void Initialize(IScriptInstance scriptInstance);
}
}

View File

@@ -31,6 +31,7 @@ using System.Collections.Generic;
using OpenMetaverse;
using log4net;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.ScriptEngine.Shared;
using OpenSim.Region.ScriptEngine.Interfaces;
@@ -105,6 +106,11 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
/// </summary>
long MeasurementPeriodExecutionTime { get; }
/// <summary>
/// Scene part in which this script instance is contained.
/// </summary>
SceneObjectPart Part { get; }
IScriptEngine Engine { get; }
UUID AppDomain { get; set; }
string PrimName { get; }
@@ -124,6 +130,12 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
uint LocalID { get; }
UUID AssetID { get; }
/// <summary>
/// Inventory item containing the script used.
/// </summary>
TaskInventoryItem ScriptTask { get; }
Queue EventQueue { get; }
/// <summary>