diff options
author | lbsa71 | 2007-08-16 17:08:03 +0000 |
---|---|---|
committer | lbsa71 | 2007-08-16 17:08:03 +0000 |
commit | 25fd8d02738e61e81f93ac784b02ab84697ee528 (patch) | |
tree | db1dda71b3aa86770fa90ae84d4ac361a6fd84c7 /OpenSim/Region/ScriptEngine | |
parent | Deleted old inventoryCache.cs (diff) | |
download | opensim-SC-25fd8d02738e61e81f93ac784b02ab84697ee528.zip opensim-SC-25fd8d02738e61e81f93ac784b02ab84697ee528.tar.gz opensim-SC-25fd8d02738e61e81f93ac784b02ab84697ee528.tar.bz2 opensim-SC-25fd8d02738e61e81f93ac784b02ab84697ee528.tar.xz |
* Introduced IScriptHost as an interface to fetching object data from scripts.
* This meant introducing AbsolutePosition on all objects (since SimChat wants that)
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
3 files changed, 31 insertions, 8 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs index 13e3f2e..eea2094 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs | |||
@@ -229,6 +229,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
229 | // Add namespace, class name and inheritance | 229 | // Add namespace, class name and inheritance |
230 | Return = "namespace SecondLife {\r\n"; | 230 | Return = "namespace SecondLife {\r\n"; |
231 | Return += "public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass {\r\n"; | 231 | Return += "public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass {\r\n"; |
232 | Return += "public Script( OpenSim.Region.Environment.Scenes.Scripting.IScriptHost host ) : base( host ) { }\r\n"; | ||
232 | Return += Script; | 233 | Return += Script; |
233 | Return += "} }\r\n"; | 234 | Return += "} }\r\n"; |
234 | 235 | ||
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs index 062060f..565bfb7 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs | |||
@@ -2,6 +2,10 @@ using System; | |||
2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
3 | using System.Text; | 3 | using System.Text; |
4 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; | 4 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; |
5 | using libsecondlife; | ||
6 | using OpenSim.Region.Environment.Scenes; | ||
7 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
8 | using OpenSim.Framework.Console; | ||
5 | 9 | ||
6 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | 10 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL |
7 | { | 11 | { |
@@ -11,11 +15,17 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
11 | internal OpenSim.Region.Environment.Scenes.Scene World; | 15 | internal OpenSim.Region.Environment.Scenes.Scene World; |
12 | private System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); | 16 | private System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); |
13 | 17 | ||
14 | 18 | IScriptHost m_host; | |
19 | |||
20 | public LSL_BaseClass( IScriptHost host ) | ||
21 | { | ||
22 | m_host = host; | ||
23 | } | ||
24 | |||
15 | public void Start(OpenSim.Region.Environment.Scenes.Scene _World, string FullScriptID) | 25 | public void Start(OpenSim.Region.Environment.Scenes.Scene _World, string FullScriptID) |
16 | { | 26 | { |
17 | World = _World; | 27 | World = _World; |
18 | Console.WriteLine("ScriptEngine", "LSL_BaseClass.Start() called. FullScriptID: " + FullScriptID); | 28 | MainLog.Instance.Notice( "ScriptEngine", "LSL_BaseClass.Start() called. FullScriptID: " + FullScriptID + ": Hosted by [" + m_host.Name + ":" + m_host.UUID + "@"+m_host.AbsolutePosition +"]"); |
19 | 29 | ||
20 | return; | 30 | return; |
21 | } | 31 | } |
@@ -59,8 +69,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
59 | //Common.SendToDebug("INTERNAL FUNCTION llSay(" + (int)channelID + ", \"" + (string)text + "\");"); | 69 | //Common.SendToDebug("INTERNAL FUNCTION llSay(" + (int)channelID + ", \"" + (string)text + "\");"); |
60 | Console.WriteLine("llSay Channel " + channelID + ", Text: \"" + text + "\""); | 70 | Console.WriteLine("llSay Channel " + channelID + ", Text: \"" + text + "\""); |
61 | //type for say is 1 | 71 | //type for say is 1 |
62 | //World.SimChat(enc.GetBytes(text), 1, World.Objects[World.ConvertLocalIDToFullID(MY_OBJECT_ID)], MY_OBJECT_NAME, World.Objects[World.ConvertLocalIDToFullID(MY_OBJECT_ID)]); | 72 | |
73 | LLVector3 fromPos = m_host.AbsolutePosition; // Position of parent | ||
74 | string fromName = m_host.Name; // Name of script parent | ||
75 | LLUUID fromUUID = m_host.UUID; // UUID of parent | ||
76 | |||
77 | World.SimChat( Helpers.StringToField( text ), 1, fromPos, fromName, fromUUID ); | ||
63 | } | 78 | } |
79 | |||
64 | public void llShout(int channelID, string text) | 80 | public void llShout(int channelID, string text) |
65 | { | 81 | { |
66 | Console.WriteLine("llShout Channel " + channelID + ", Text: \"" + text + "\""); | 82 | Console.WriteLine("llShout Channel " + channelID + ", Text: \"" + text + "\""); |
@@ -68,6 +84,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
68 | //World.SimChat(enc.GetBytes(text), 2, World.Objects[World.ConvertLocalIDToFullID(MY_OBJECT_ID)], MY_OBJECT_NAME, World.Objects[World.ConvertLocalIDToFullID(MY_OBJECT_ID)]); | 84 | //World.SimChat(enc.GetBytes(text), 2, World.Objects[World.ConvertLocalIDToFullID(MY_OBJECT_ID)], MY_OBJECT_NAME, World.Objects[World.ConvertLocalIDToFullID(MY_OBJECT_ID)]); |
69 | 85 | ||
70 | } | 86 | } |
87 | |||
71 | public int llListen(int channelID, string name, string ID, string msg) { return 0; } | 88 | public int llListen(int channelID, string name, string ID, string msg) { return 0; } |
72 | public void llListenControl(int number, int active) { return; } | 89 | public void llListenControl(int number, int active) { return; } |
73 | public void llListenRemove(int number) { return; } | 90 | public void llListenRemove(int number) { return; } |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index 2de4e62..8b5e3e3 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs | |||
@@ -31,6 +31,7 @@ using System.Collections.Generic; | |||
31 | using System.Text; | 31 | using System.Text; |
32 | using System.Threading; | 32 | using System.Threading; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
34 | 35 | ||
35 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
36 | { | 37 | { |
@@ -148,10 +149,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
148 | // * Find next available AppDomain to put it in | 149 | // * Find next available AppDomain to put it in |
149 | AppDomain FreeAppDomain = GetFreeAppDomain(); | 150 | AppDomain FreeAppDomain = GetFreeAppDomain(); |
150 | 151 | ||
151 | // * Load and start script | 152 | // * Load and start script, for now with dummy host |
153 | |||
152 | //OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName); | 154 | //OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName); |
153 | OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName); | 155 | OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, new NullScriptHost() ); |
154 | string FullScriptID = ScriptID + "." + ObjectID; | 156 | string FullScriptID = ScriptID + "." + ObjectID; |
155 | // Add it to our temporary active script keeper | 157 | // Add it to our temporary active script keeper |
156 | //Scripts.Add(FullScriptID, Script); | 158 | //Scripts.Add(FullScriptID, Script); |
157 | SetScript(ObjectID, ScriptID, Script); | 159 | SetScript(ObjectID, ScriptID, Script); |
@@ -161,6 +163,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
161 | 163 | ||
162 | // Start the script - giving it BuiltIns | 164 | // Start the script - giving it BuiltIns |
163 | //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager initializing script, handing over private builtin command interface"); | 165 | //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager initializing script, handing over private builtin command interface"); |
166 | |||
164 | Script.Start(myScriptEngine.World, ScriptID); | 167 | Script.Start(myScriptEngine.World, ScriptID); |
165 | 168 | ||
166 | } | 169 | } |
@@ -189,7 +192,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
189 | /// <param name="FreeAppDomain">AppDomain to load script into</param> | 192 | /// <param name="FreeAppDomain">AppDomain to load script into</param> |
190 | /// <param name="FileName">FileName of script assembly (.dll)</param> | 193 | /// <param name="FileName">FileName of script assembly (.dll)</param> |
191 | /// <returns></returns> | 194 | /// <returns></returns> |
192 | private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName) | 195 | private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host) |
193 | { | 196 | { |
194 | //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Loading Assembly " + FileName); | 197 | //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Loading Assembly " + FileName); |
195 | // Load .Net Assembly (.dll) | 198 | // Load .Net Assembly (.dll) |
@@ -228,7 +231,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
228 | //{ | 231 | //{ |
229 | //} | 232 | //} |
230 | 233 | ||
231 | return (OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass)Activator.CreateInstance(t); | 234 | object[] args = new object[] { host }; |
235 | |||
236 | return (OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass)Activator.CreateInstance(t, args ); | ||
232 | 237 | ||
233 | 238 | ||
234 | } | 239 | } |