From fcf7db72728174a628e62ae9d98a3c0090217728 Mon Sep 17 00:00:00 2001 From: Tedd Hansen Date: Fri, 17 Aug 2007 21:24:38 +0000 Subject: Pimped up Default.lsl. Now featuring a touch counter. Changed "ObjectID" in ScriptEngine to IScriptHost reference. Events will now be queued based on IScriptHost reference instead of string ID of object. Removed "root" object reference in script. --- .../DotNetEngine/Compiler/LSL/LSL2CSConverter.cs | 3 +-- .../DotNetEngine/Compiler/LSL/LSL_BaseClass.cs | 4 +--- .../ScriptEngine/DotNetEngine/EventManager.cs | 4 +++- .../ScriptEngine/DotNetEngine/EventQueueManager.cs | 5 +++-- .../ScriptEngine/DotNetEngine/ScriptEngine.cs | 5 ++++- .../ScriptEngine/DotNetEngine/ScriptManager.cs | 24 ++++++++++------------ 6 files changed, 23 insertions(+), 22 deletions(-) (limited to 'OpenSim/Region/ScriptEngine') diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs index d15701c..7370c6e 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs @@ -232,8 +232,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL Return += @" public Script( OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager manager, - OpenSim.Region.Environment.Scenes.Scripting.IScriptHost host, - OpenSim.Region.Environment.Scenes.Scripting.IScriptHost root ) : base( manager, host, root ) { }"+"\r\n"; + OpenSim.Region.Environment.Scenes.Scripting.IScriptHost host ) : base( manager, host ) { }"+"\r\n"; Return += Script; Return += "} }\r\n"; diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs index 7c605c2..486332f 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs @@ -16,13 +16,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL protected ScriptManager m_manager; protected IScriptHost m_host; - protected IScriptHost m_root; - public LSL_BaseClass(ScriptManager manager, IScriptHost host, IScriptHost root) + public LSL_BaseClass(ScriptManager manager, IScriptHost host) { m_manager = manager; m_host = host; - m_root = root; } public Scene World diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs index 47e5abe..8549fa3 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; using libsecondlife; using OpenSim.Framework.Interfaces; +using OpenSim.Region.Environment.Scenes.Scripting; namespace OpenSim.Region.ScriptEngine.DotNetEngine { @@ -40,6 +41,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine class EventManager { private ScriptEngine myScriptEngine; + public IScriptHost TEMP_OBJECT_ID; public EventManager(ScriptEngine _ScriptEngine) { myScriptEngine = _ScriptEngine; @@ -58,7 +60,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine { // Add to queue for all scripts in ObjectID object //myScriptEngine.m_logger.Verbose("ScriptEngine", "EventManager Event: touch_start"); - myScriptEngine.myEventQueueManager.AddToObjectQueue("TEST", "touch_start", new object[] { (int)0 }); + myScriptEngine.myEventQueueManager.AddToObjectQueue(TEMP_OBJECT_ID, "touch_start", new object[] { (int)0 }); } diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs index a5eff7d..a63aad9 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; using System.Threading; using System.Reflection; +using OpenSim.Region.Environment.Scenes.Scripting; namespace OpenSim.Region.ScriptEngine.DotNetEngine { @@ -45,7 +46,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine private Queue EventQueue = new Queue(); private struct QueueItemStruct { - public string ObjectID; + public IScriptHost ObjectID; public string ScriptID; public string FunctionName; public object[] param; @@ -109,7 +110,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } } - public void AddToObjectQueue(string ObjectID, string FunctionName, object[] param) + public void AddToObjectQueue(IScriptHost ObjectID, string FunctionName, object[] param) { // Determine all scripts in Object and add to their queue //myScriptEngine.m_logger.Verbose("ScriptEngine", "EventQueueManager Adding ObjectID: " + ObjectID + ", FunctionName: " + FunctionName); diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs index 7b35b5d..d21855b 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs @@ -30,6 +30,8 @@ using System; using System.Collections.Generic; using System.Text; using OpenSim.Framework.Console; +//using OpenSim.Region.Environment.Scenes; +using OpenSim.Region.Environment.Scenes.Scripting; namespace OpenSim.Region.ScriptEngine.DotNetEngine { @@ -80,8 +82,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine // !!!FOR DEBUGGING ONLY!!! (for executing script directly from test app) [Obsolete("!!!FOR DEBUGGING ONLY!!!")] - public void StartScript(string ScriptID, string ObjectID) + public void StartScript(string ScriptID, IScriptHost ObjectID) { + this.myEventManager.TEMP_OBJECT_ID = ObjectID; Log.Status("ScriptEngine", "DEBUG FUNCTION: StartScript: " + ScriptID); myScriptManager.StartScript(ScriptID, ObjectID); } diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index 8fdac25..f17711c 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs @@ -53,7 +53,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine // Object> - internal Dictionary> Scripts = new Dictionary>(); + internal Dictionary> Scripts = new Dictionary>(); public Scene World { get @@ -63,7 +63,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } - internal Dictionary.KeyCollection GetScriptKeys(string ObjectID) + internal Dictionary.KeyCollection GetScriptKeys(IScriptHost ObjectID) { if (Scripts.ContainsKey(ObjectID) == false) return null; @@ -75,7 +75,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } - internal OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass GetScript(string ObjectID, string ScriptID) + internal OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass GetScript(IScriptHost ObjectID, string ScriptID) { if (Scripts.ContainsKey(ObjectID) == false) return null; @@ -92,7 +92,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine return Script; } - internal void SetScript(string ObjectID, string ScriptID, OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script) + internal void SetScript(IScriptHost ObjectID, string ScriptID, OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script) { // Create object if it doesn't exist if (Scripts.ContainsKey(ObjectID) == false) @@ -116,8 +116,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine /// /// /// - public void StartScript(string ScriptID, string ObjectID) + public void StartScript(string ScriptID, IScriptHost ObjectID) { + //IScriptHost root = host.GetRoot(); m_scriptEngine.Log.Verbose("ScriptEngine", "ScriptManager StartScript: ScriptID: " + ScriptID + ", ObjectID: " + ObjectID); // We will initialize and start the script. @@ -162,11 +163,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine // * Load and start script, for now with dummy host //OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName); - IScriptHost host = new NullScriptHost(); - IScriptHost root = host; - OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, host, root ); - string FullScriptID = ScriptID + "." + ObjectID; + OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, ObjectID); + //string FullScriptID = ScriptID + "." + ObjectID; // Add it to our temporary active script keeper //Scripts.Add(FullScriptID, Script); SetScript(ObjectID, ScriptID, Script); @@ -206,7 +205,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine /// AppDomain to load script into /// FileName of script assembly (.dll) /// - private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host, IScriptHost root) + private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host) { //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Loading Assembly " + FileName); // Load .Net Assembly (.dll) @@ -249,8 +248,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine object[] args = new object[] { this, - host, - root + host }; return (OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass)Activator.CreateInstance(t, args ); @@ -258,7 +256,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } - internal void ExecuteFunction(string ObjectID, string ScriptID, string FunctionName, object[] args) + internal void ExecuteFunction(IScriptHost ObjectID, string ScriptID, string FunctionName, object[] args) { m_scriptEngine.Log.Verbose("ScriptEngine", "Executing Function ObjectID: " + ObjectID + ", ScriptID: " + ScriptID + ", FunctionName: " + FunctionName); OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = m_scriptEngine.myScriptManager.GetScript(ObjectID, ScriptID); -- cgit v1.1