Common script for all objects (Default.lsl). ScriptEngine touch_start event now works, but llSay only outputs to server console.
							parent
							
								
									a63fb0147b
								
							
						
					
					
						commit
						79dc1a4f7d
					
				|  | @ -167,7 +167,11 @@ namespace OpenSim | ||||||
|                 Scene scene = SetupScene(regionInfo, out udpServer); |                 Scene scene = SetupScene(regionInfo, out udpServer); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|                 scene.AddScriptEngine(ScriptEngineLoader.LoadScriptEngine("DotNetEngine")); |                 OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface ScriptEngine = ScriptEngineLoader.LoadScriptEngine("DotNetEngine"); | ||||||
|  |                 scene.AddScriptEngine(ScriptEngine); | ||||||
|  |                 // TODO: TEMP load default script | ||||||
|  |                 ScriptEngine.StartScript(Path.Combine("ScriptEngines", "default.lsl"), "TEST"); | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|                 m_localScenes.Add(scene); |                 m_localScenes.Add(scene); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1020,8 +1020,7 @@ namespace OpenSim.Region.Environment.Scenes | ||||||
|         public void AddScriptEngine(OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface ScriptEngine) |         public void AddScriptEngine(OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface ScriptEngine) | ||||||
|         { |         { | ||||||
|             ScriptEngines.Add(ScriptEngine); |             ScriptEngines.Add(ScriptEngine); | ||||||
|             ScriptEngine.InitializeEngine(this); |             ScriptEngine.InitializeEngine(this);        } | ||||||
|         } |  | ||||||
|         #endregion |         #endregion | ||||||
| 
 | 
 | ||||||
|         public LLUUID ConvertLocalIDToFullID(uint localID) |         public LLUUID ConvertLocalIDToFullID(uint localID) | ||||||
|  |  | ||||||
|  | @ -36,5 +36,6 @@ namespace OpenSim.Region.Environment.Scenes.Scripting | ||||||
|     { |     { | ||||||
|         void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld); |         void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld); | ||||||
|         void Shutdown(); |         void Shutdown(); | ||||||
|  |         void StartScript(string ScriptID, string ObjectID); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|             // Output assembly name |             // Output assembly name | ||||||
|             string OutFile = Path.GetFileNameWithoutExtension(LSOFileName) + ".dll"; |             string OutFile = Path.Combine("ScriptEngines", Path.GetFileNameWithoutExtension(LSOFileName) + ".dll"); | ||||||
| 
 | 
 | ||||||
|             Common.SendToDebug("Reading source code into memory"); |             Common.SendToDebug("Reading source code into memory"); | ||||||
|             // TODO: Add error handling |             // TODO: Add error handling | ||||||
|  |  | ||||||
|  | @ -162,7 +162,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | ||||||
|                             // void dataserver(key query_id, string data) { |                             // void dataserver(key query_id, string data) { | ||||||
|                             //cache = Regex.Replace(cache, @"([^a-zA-Z_]\s*)((?!if|switch|for)[a-zA-Z_]+\s*\([^\)]*\)[^{]*{)", "$1" + "<STATE>" + "$2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); |                             //cache = Regex.Replace(cache, @"([^a-zA-Z_]\s*)((?!if|switch|for)[a-zA-Z_]+\s*\([^\)]*\)[^{]*{)", "$1" + "<STATE>" + "$2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||||||
|                             //Console.WriteLine("Replacing using statename: " + current_statename); |                             //Console.WriteLine("Replacing using statename: " + current_statename); | ||||||
|                             cache = Regex.Replace(cache, @"^(\s*)((?!(if|switch|for)[^a-zA-Z0-9_])[a-zA-Z0-9_]*\s*\([^\)]*\)[^;]*\{)", @"$1" + current_statename + "_$2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); |                             cache = Regex.Replace(cache, @"^(\s*)((?!(if|switch|for)[^a-zA-Z0-9_])[a-zA-Z0-9_]*\s*\([^\)]*\)[^;]*\{)", @"public $1" + current_statename + "_event_$2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||||||
|                         } |                         } | ||||||
| 
 | 
 | ||||||
|                         ret += cache; |                         ret += cache; | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | ||||||
| { | { | ||||||
|     public class LSL_BaseClass : LSL_BuiltIn_Commands_Interface |     public class LSL_BaseClass : LSL_BuiltIn_Commands_Interface | ||||||
|     { |     { | ||||||
|         public UInt32 State = 0; |         public string State = "default"; | ||||||
|         internal OpenSim.Region.Environment.Scenes.Scene World; |         internal OpenSim.Region.Environment.Scenes.Scene World; | ||||||
| 
 | 
 | ||||||
|         public void Start(OpenSim.Region.Environment.Scenes.Scene _World, string FullScriptID) |         public void Start(OpenSim.Region.Environment.Scenes.Scene _World, string FullScriptID) | ||||||
|  | @ -46,17 +46,18 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | ||||||
|         public Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); } |         public Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); } | ||||||
|         public Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); } |         public Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); } | ||||||
|         public Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end) { return new Axiom.Math.Quaternion(); } |         public Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end) { return new Axiom.Math.Quaternion(); } | ||||||
|         public void llWhisper(UInt16 channelID, string text) |         public void llWhisper(int channelID, string text) | ||||||
|         { |         { | ||||||
|             Common.SendToDebug("INTERNAL FUNCTION llWhisper(" + channelID + ", \"" + text + "\");"); |             //Common.SendToDebug("INTERNAL FUNCTION llWhisper(" + channelID + ", \"" + text + "\");"); | ||||||
|             Common.SendToLog("llWhisper Channel " + channelID + ", Text: \"" + text + "\""); |             Console.WriteLine("llWhisper Channel " + channelID + ", Text: \"" + text + "\""); | ||||||
|         } |         } | ||||||
|         //public void llSay(UInt32 channelID, string text) |         //public void llSay(UInt32 channelID, string text) | ||||||
|         public void llSay(object channelID, object text) |         public void llSay(int channelID, string text) | ||||||
|         { |         { | ||||||
|             //TODO: DO SOMETHING USEFUL HERE |             //TODO: DO SOMETHING USEFUL HERE | ||||||
|             Common.SendToDebug("INTERNAL FUNCTION llSay(" + (UInt32)channelID + ", \"" + (string)text + "\");"); |             //Common.SendToDebug("INTERNAL FUNCTION llSay(" + (UInt32)channelID + ", \"" + (string)text + "\");"); | ||||||
|             Common.SendToLog("llSay Channel " + (UInt32)channelID + ", Text: \"" + (string)text + "\""); |             Console.WriteLine("llSay Channel " + channelID + ", Text: \"" + text + "\""); | ||||||
|  |             //World.SimChat( | ||||||
|         } |         } | ||||||
|         public void llShout(UInt16 channelID, string text) { return; } |         public void llShout(UInt16 channelID, string text) { return; } | ||||||
|         public UInt32 llListen(UInt16 channelID, string name, string ID, string msg) { return 0; } |         public UInt32 llListen(UInt16 channelID, string name, string ID, string msg) { return 0; } | ||||||
|  |  | ||||||
|  | @ -56,9 +56,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | ||||||
|         Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r); |         Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r); | ||||||
|         Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r); |         Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r); | ||||||
|         Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end); |         Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end); | ||||||
|         void llWhisper(UInt16 channelID, string text); |         void llWhisper(int channelID, string text); | ||||||
|         //void llSay(UInt32 channelID, string text); |         //void llSay(UInt32 channelID, string text); | ||||||
|         void llSay(object channelID, object text); |         void llSay(int channelID, string text); | ||||||
|         void llShout(UInt16 channelID, string text); |         void llShout(UInt16 channelID, string text); | ||||||
|         UInt32 llListen(UInt16 channelID, string name, string ID, string msg); |         UInt32 llListen(UInt16 channelID, string name, string ID, string msg); | ||||||
|         void llListenControl(UInt32 number, UInt32 active); |         void llListenControl(UInt32 number, UInt32 active); | ||||||
|  |  | ||||||
|  | @ -29,6 +29,8 @@ | ||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using System.Text; | using System.Text; | ||||||
|  | using libsecondlife; | ||||||
|  | using OpenSim.Framework.Interfaces; | ||||||
| 
 | 
 | ||||||
| namespace OpenSim.Region.ScriptEngine.DotNetEngine | namespace OpenSim.Region.ScriptEngine.DotNetEngine | ||||||
| { | { | ||||||
|  | @ -49,14 +51,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | ||||||
|             // Hook up a test event to our test form |             // Hook up a test event to our test form | ||||||
|             Common.SendToDebug("EventManager Hooking up dummy-event: touch_start"); |             Common.SendToDebug("EventManager Hooking up dummy-event: touch_start"); | ||||||
|             // TODO: REPLACE THIS WITH A REAL TOUCH_START EVENT IN SERVER |             // TODO: REPLACE THIS WITH A REAL TOUCH_START EVENT IN SERVER | ||||||
|  |             myScriptEngine.World.EventManager.OnObjectGrab += new OpenSim.Region.Environment.Scenes.EventManager.ObjectGrabDelegate(touch_start); | ||||||
|             //myScriptEngine.World.touch_start += new TempWorldInterfaceEventDelegates.touch_start(touch_start); |             //myScriptEngine.World.touch_start += new TempWorldInterfaceEventDelegates.touch_start(touch_start); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void touch_start(string ObjectID) |         public void touch_start(uint localID, LLVector3 offsetPos, IClientAPI remoteClient) | ||||||
|         { |         { | ||||||
|             // Add to queue for all scripts in ObjectID object |             // Add to queue for all scripts in ObjectID object | ||||||
|             Common.SendToDebug("EventManager Event: touch_start"); |             Common.SendToDebug("EventManager Event: touch_start"); | ||||||
|             myScriptEngine.myEventQueueManager.AddToObjectQueue(ObjectID, "touch_start", new object[] { (UInt32)0 }); |             myScriptEngine.myEventQueueManager.AddToObjectQueue("TEST", "touch_start", new object[] { (int)0 }); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -60,6 +60,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | ||||||
| 
 | 
 | ||||||
|             // Should we iterate the region for scripts that needs starting? |             // Should we iterate the region for scripts that needs starting? | ||||||
|             // Or can we assume we are loaded before anything else so we can use proper events? |             // Or can we assume we are loaded before anything else so we can use proper events? | ||||||
|  |              | ||||||
|         } |         } | ||||||
|         public void Shutdown() |         public void Shutdown() | ||||||
|         { |         { | ||||||
|  |  | ||||||
|  | @ -197,10 +197,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | ||||||
|             //} |             //} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|             foreach (Type _t in a.GetTypes()) |             //foreach (Type _t in a.GetTypes()) | ||||||
|             { |             //{ | ||||||
|                 Console.WriteLine("Type: " + _t.ToString()); |             //    Console.WriteLine("Type: " + _t.ToString()); | ||||||
|             } |             //} | ||||||
| 
 | 
 | ||||||
|             Type t; |             Type t; | ||||||
|             //try |             //try | ||||||
|  |  | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | default { | ||||||
|  |     state_entry() | ||||||
|  |     { | ||||||
|  |         llSay(0, "Hello, Avatar!"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     touch_start(integer total_number) | ||||||
|  |     { | ||||||
|  |         llSay(0, "Object was touched."); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	 Tedd Hansen
						Tedd Hansen