diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index e58fb2a2b5..7249c5dad8 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs @@ -181,7 +181,7 @@ namespace OpenSim OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface ScriptEngine = ScriptEngineLoader.LoadScriptEngine("DotNetEngine"); scene.AddScriptEngine(ScriptEngine, m_log); // TODO: TEMP load default script - ScriptEngine.StartScript(Path.Combine("ScriptEngines", "Default.lsl"), "TEST"); + ScriptEngine.StartScript(Path.Combine("ScriptEngines", "Default.lsl"), new OpenSim.Region.Environment.Scenes.Scripting.NullScriptHost()); m_localScenes.Add(scene); diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 8da7923d3f..1cfe9c8bea 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -18,6 +18,7 @@ namespace OpenSim.Region.Environment.Scenes { private const uint FULL_MASK_PERMISSIONS = 2147483647; + public LLUUID CreatorID; public LLUUID OwnerID; public LLUUID GroupID; diff --git a/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs b/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs index 03587dec0b..62c84a63ab 100644 --- a/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs +++ b/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs @@ -7,6 +7,7 @@ namespace OpenSim.Region.Environment.Scenes.Scripting { public class NullScriptHost : IScriptHost { + LLVector3 m_pos = new LLVector3( 128, 128, 30 ); public string Name { diff --git a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs index 510f25756b..33021eeb35 100644 --- a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs +++ b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs @@ -29,6 +29,8 @@ using System; using System.Collections.Generic; using System.Text; +using OpenSim.Region.Environment.Scenes.Scripting; + //TODO: WHERE TO PLACE THIS? namespace OpenSim.Region.Environment.Scenes.Scripting { @@ -36,6 +38,6 @@ namespace OpenSim.Region.Environment.Scenes.Scripting { void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger); void Shutdown(); - void StartScript(string ScriptID, string ObjectID); + void StartScript(string ScriptID, IScriptHost ObjectID); } } diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs index d15701c8d4..7370c6ed78 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 7c605c2dd1..486332f09c 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 47e5abe215..8549fa3f98 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 a5eff7d5bb..a63aad9d14 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 7b35b5d36c..d21855b4ff 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 8fdac25757..f17711cef4 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); diff --git a/bin/ScriptEngines/Default.lsl b/bin/ScriptEngines/Default.lsl index 13c68033ab..6e362f88b5 100644 --- a/bin/ScriptEngines/Default.lsl +++ b/bin/ScriptEngines/Default.lsl @@ -1,3 +1,4 @@ +integer touch_count = 0; default { state_entry() { @@ -6,6 +7,7 @@ default { touch_start(integer total_number) { - llSay(0, "Object was touched."); + touch_count++; + llSay(0, "Object was touched. Touch count: " + touch_count); } }