ScriptEngine: Some error handling, logs to logger

afrisby
Tedd Hansen 2007-08-14 15:59:36 +00:00
parent ff08d4d016
commit afaa12a9e2
12 changed files with 69 additions and 428 deletions

View File

@ -155,7 +155,7 @@ namespace OpenSim
}
// Load all script engines found
//OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineLoader ScriptEngineLoader = new OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineLoader();
OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineLoader ScriptEngineLoader = new OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineLoader(m_log);
for (int i = 0; i < configFiles.Length; i++)
{
@ -166,11 +166,11 @@ namespace OpenSim
UDPServer udpServer;
Scene scene = SetupScene(regionInfo, out udpServer);
//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");
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");
m_localScenes.Add(scene);

View File

@ -1017,10 +1017,10 @@ namespace OpenSim.Region.Environment.Scenes
#region Script Engine
private List<OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface> ScriptEngines = new List<OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface>();
public void AddScriptEngine(OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface ScriptEngine)
public void AddScriptEngine(OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface ScriptEngine, LogBase m_logger)
{
ScriptEngines.Add(ScriptEngine);
ScriptEngine.InitializeEngine(this);
ScriptEngine.InitializeEngine(this, m_logger);
}
#endregion

View File

@ -34,7 +34,7 @@ namespace OpenSim.Region.Environment.Scenes.Scripting
{
public interface ScriptEngineInterface
{
void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld);
void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger);
void Shutdown();
void StartScript(string ScriptID, string ObjectID);
}

View File

@ -36,14 +36,25 @@ namespace OpenSim.Region.Environment.Scenes.Scripting
{
public class ScriptEngineLoader
{
public ScriptEngineLoader()
private OpenSim.Framework.Console.LogBase m_log;
public ScriptEngineLoader(OpenSim.Framework.Console.LogBase logger)
{
m_log = logger;
}
public ScriptEngineInterface LoadScriptEngine(string EngineName)
{
return LoadAndInitAssembly(Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine." + EngineName + ".dll"),
"OpenSim.Region.ScriptEngine." + EngineName + ".ScriptEngine");
ScriptEngineInterface ret = null;
try
{
ret = LoadAndInitAssembly(Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine." + EngineName + ".dll"),
"OpenSim.Region.ScriptEngine." + EngineName + ".ScriptEngine");
}
catch (Exception e)
{
m_log.Error("ScriptEngine", "Error loading assembly \"" + EngineName + "\": " + e.ToString());
}
return ret;
}
/// <summary>
@ -73,6 +84,7 @@ namespace OpenSim.Region.Environment.Scenes.Scripting
//}
//catch (Exception e)
//{
// m_log.Error("ScriptEngine", "Error loading assembly \"" + FileName + "\": " + e.ToString());
//}
@ -89,9 +101,20 @@ namespace OpenSim.Region.Environment.Scenes.Scripting
//}
//catch (Exception e)
//{
// m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString());
//}
return (ScriptEngineInterface)Activator.CreateInstance(t);
ScriptEngineInterface ret;
//try
//{
ret = (ScriptEngineInterface)Activator.CreateInstance(t);
//}
//catch (Exception e)
//{
// m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString());
//}
return ret;
}

View File

@ -35,6 +35,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
public static class Common
{
static public bool Debug = true;
static public ScriptEngine mySE;
//public delegate void SendToDebugEventDelegate(string Message);
//public delegate void SendToLogEventDelegate(string Message);
@ -44,13 +45,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
static public void SendToDebug(string Message)
{
//if (Debug == true)
Console.WriteLine("SE:Debug: " + Message);
mySE.m_logger.Verbose("ScriptEngine", "Debug: " + Message);
//SendToDebugEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message);
}
static public void SendToLog(string Message)
{
//if (Debug == true)
Console.WriteLine("SE:LOG: " + Message);
mySE.m_logger.Verbose("ScriptEngine", "LOG: " + Message);
//SendToLogEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message);
}
}

View File

@ -13,7 +13,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
public void Start(OpenSim.Region.Environment.Scenes.Scene _World, string FullScriptID)
{
World = _World;
Common.SendToLog("OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass.Start() called. FullScriptID: " + FullScriptID);
Console.WriteLine("ScriptEngine", "LSL_BaseClass.Start() called. FullScriptID: " + FullScriptID);
return;
}
@ -49,14 +49,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
public void llWhisper(int channelID, string text)
{
//Common.SendToDebug("INTERNAL FUNCTION llWhisper(" + channelID + ", \"" + text + "\");");
Console.WriteLine("llWhisper Channel " + channelID + ", Text: \"" + text + "\"");
Console.WriteLine("ScriptEngine", "llWhisper Channel " + channelID + ", Text: \"" + text + "\"");
}
//public void llSay(UInt32 channelID, string text)
public void llSay(int channelID, string text)
{
//TODO: DO SOMETHING USEFUL HERE
//Common.SendToDebug("INTERNAL FUNCTION llSay(" + (UInt32)channelID + ", \"" + (string)text + "\");");
Console.WriteLine("llSay Channel " + channelID + ", Text: \"" + text + "\"");
Console.WriteLine("ScriptEngine", "llSay Channel " + channelID + ", Text: \"" + text + "\"");
//World.SimChat(
}
public void llShout(UInt16 channelID, string text) { return; }

View File

@ -1,387 +0,0 @@
/*
* Copyright (c) Contributors, http://www.openmetaverse.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/* Original code: Tedd Hansen */
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
{
public class LSL_BuiltIn_Commands_TestImplementation //: LSL_BuiltIn_Commands_Interface
{
public LSL_BuiltIn_Commands_TestImplementation(string FullScriptID)
{
Common.SendToDebug("LSL_BuiltIn_Commands_TestImplementation: Creating object for FullScriptID: " + FullScriptID);
}
public float llSin(float f) { return 0; }
public float llCos(float f) { return 0; }
public float llTan(float f) { return 0; }
public float llAtan2(float x, float y) { return 0; }
public float llSqrt(float f) { return 0; }
public float llPow(float fbase, float fexponent) { return 0; }
public UInt32 llAbs(UInt32 i) { return 0; }
public float llFabs(float f) { return 0; }
public float llFrand(float mag) { return 0; }
public UInt32 llFloor(float f) { return 0; }
public UInt32 llCeil(float f) { return 0; }
public UInt32 llRound(float f) { return 0; }
public float llVecMag(Axiom.Math.Vector3 v) { return 0; }
public Axiom.Math.Vector3 llVecNorm(Axiom.Math.Vector3 v) { return new Axiom.Math.Vector3(); }
public float llVecDist(Axiom.Math.Vector3 a, Axiom.Math.Vector3 b) { return 0; }
public Axiom.Math.Vector3 llRot2Euler(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
public Axiom.Math.Quaternion llEuler2Rot(Axiom.Math.Vector3 v) { return new Axiom.Math.Quaternion(); }
public Axiom.Math.Quaternion llAxes2Rot(Axiom.Math.Vector3 fwd, Axiom.Math.Vector3 left, Axiom.Math.Vector3 up) { return new Axiom.Math.Quaternion(); }
public Axiom.Math.Vector3 llRot2Fwd(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.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end) { return new Axiom.Math.Quaternion(); }
public void llWhisper(UInt16 channelID, string text)
{
Common.SendToDebug("INTERNAL FUNCTION llWhisper(" + channelID + ", \"" + text + "\");");
Common.SendToLog("llWhisper Channel " + channelID + ", Text: \"" + text + "\"");
}
//public void llSay(UInt32 channelID, string text)
public void llSay(object channelID, object text)
{
//TODO: DO SOMETHING USEFUL HERE
Common.SendToDebug("INTERNAL FUNCTION llSay(" + (UInt32)channelID + ", \"" + (string)text + "\");");
Common.SendToLog("llSay Channel " + (UInt32)channelID + ", Text: \"" + (string)text + "\"");
}
public void llShout(UInt16 channelID, string text) { return; }
public UInt32 llListen(UInt16 channelID, string name, string ID, string msg) { return 0; }
public void llListenControl(UInt32 number, UInt32 active) { return; }
public void llListenRemove(UInt32 number) { return; }
public void llSensor(string name, string id, UInt32 type, float range, float arc) { return; }
public void llSensorRepeat(string name, string id, UInt32 type, float range, float arc, float rate) { return; }
public void llSensorRemove() { return; }
public string llDetectedName(UInt32 number) { return ""; }
public string llDetectedKey(UInt32 number) { return ""; }
public string llDetectedOwner(UInt32 number) { return ""; }
public UInt32 llDetectedType(UInt32 number) { return 0; }
public Axiom.Math.Vector3 llDetectedPos(UInt32 number) { return new Axiom.Math.Vector3(); }
public Axiom.Math.Vector3 llDetectedVel(UInt32 number) { return new Axiom.Math.Vector3(); }
public Axiom.Math.Vector3 llDetectedGrab(UInt32 number) { return new Axiom.Math.Vector3(); }
public Axiom.Math.Quaternion llDetectedRot(UInt32 number) { return new Axiom.Math.Quaternion(); }
public UInt32 llDetectedGroup(UInt32 number) { return 0; }
public UInt32 llDetectedLinkNumber(UInt32 number) { return 0; }
public void llDie() { return; }
public float llGround(Axiom.Math.Vector3 offset) { return 0; }
public float llCloud(Axiom.Math.Vector3 offset) { return 0; }
public Axiom.Math.Vector3 llWind(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
public void llSetStatus(UInt32 status, UInt32 value) { return; }
public UInt32 llGetStatus(UInt32 status) { return 0; }
public void llSetScale(Axiom.Math.Vector3 scale) { return; }
public Axiom.Math.Vector3 llGetScale() { return new Axiom.Math.Vector3(); }
public void llSetColor(Axiom.Math.Vector3 color, UInt32 face) { return; }
public float llGetAlpha(UInt32 face) { return 0; }
public void llSetAlpha(float alpha, UInt32 face) { return; }
public Axiom.Math.Vector3 llGetColor(UInt32 face) { return new Axiom.Math.Vector3(); }
public void llSetTexture(string texture, UInt32 face) { return; }
public void llScaleTexture(float u, float v, UInt32 face) { return; }
public void llOffsetTexture(float u, float v, UInt32 face) { return; }
public void llRotateTexture(float rotation, UInt32 face) { return; }
public string llGetTexture(UInt32 face) { return ""; }
public void llSetPos(Axiom.Math.Vector3 pos) { return; }
public void llGetPos() { }
public void llGetLocalPos() { }
public void llSetRot() { }
public void llGetRot() { }
public void llGetLocalRot() { }
public void llSetForce() { }
public void llGetForce() { }
public void llTarget() { }
public void llTargetRemove() { }
public void llRotTarget() { }
public void llRotTargetRemove() { }
public void llMoveToTarget() { }
public void llStopMoveToTarget() { }
public void llApplyImpulse() { }
public void llApplyRotationalImpulse() { }
public void llSetTorque() { }
public void llGetTorque() { }
public void llSetForceAndTorque() { }
public void llGetVel() { }
public void llGetAccel() { }
public void llGetOmega() { }
public void llGetTimeOfDay() { }
public void llGetWallclock() { }
public void llGetTime() { }
public void llResetTime() { }
public void llGetAndResetTime() { }
public void llSound() { }
public void llPlaySound() { }
public void llLoopSound() { }
public void llLoopSoundMaster() { }
public void llLoopSoundSlave() { }
public void llPlaySoundSlave() { }
public void llTriggerSound() { }
public void llStopSound() { }
public void llPreloadSound() { }
public void llGetSubString() { }
public void llDeleteSubString() { }
public void llInsertString() { }
public void llToUpper() { }
public void llToLower() { }
public void llGiveMoney() { }
public void llMakeExplosion() { }
public void llMakeFountain() { }
public void llMakeSmoke() { }
public void llMakeFire() { }
public void llRezObject() { }
public void llLookAt() { }
public void llStopLookAt() { }
public void llSetTimerEvent() { }
public void llSleep() { }
public void llGetMass() { }
public void llCollisionFilter() { }
public void llTakeControls() { }
public void llReleaseControls() { }
public void llAttachToAvatar() { }
public void llDetachFromAvatar() { }
public void llTakeCamera() { }
public void llReleaseCamera() { }
public void llGetOwner() { }
public void llInstantMessage() { }
public void llEmail() { }
public void llGetNextEmail() { }
public void llGetKey() { }
public void llSetBuoyancy() { }
public void llSetHoverHeight() { }
public void llStopHover() { }
public void llMinEventDelay() { }
public void llSoundPreload() { }
public void llRotLookAt() { }
public void llStringLength() { }
public void llStartAnimation() { }
public void llStopAnimation() { }
public void llPointAt() { }
public void llStopPointAt() { }
public void llTargetOmega() { }
public void llGetStartParameter() { }
public void llGodLikeRezObject() { }
public void llRequestPermissions() { }
public void llGetPermissionsKey() { }
public void llGetPermissions() { }
public void llGetLinkNumber() { }
public void llSetLinkColor() { }
public void llCreateLink() { }
public void llBreakLink() { }
public void llBreakAllLinks() { }
public void llGetLinkKey() { }
public void llGetLinkName() { }
public void llGetInventoryNumber() { }
public void llGetInventoryName() { }
public void llSetScriptState() { }
public void llGetEnergy() { }
public void llGiveInventory() { }
public void llRemoveInventory() { }
public void llSetText() { }
public void llWater() { }
public void llPassTouches() { }
public void llRequestAgentData() { }
public void llRequestInventoryData() { }
public void llSetDamage() { }
public void llTeleportAgentHome() { }
public void llModifyLand() { }
public void llCollisionSound() { }
public void llCollisionSprite() { }
public void llGetAnimation() { }
public void llResetScript() { }
public void llMessageLinked() { }
public void llPushObject() { }
public void llPassCollisions() { }
public void llGetScriptName() { }
public void llGetNumberOfSides() { }
public void llAxisAngle2Rot() { }
public void llRot2Axis() { }
public void llRot2Angle() { }
public void llAcos() { }
public void llAsin() { }
public void llAngleBetween() { }
public void llGetInventoryKey() { }
public void llAllowInventoryDrop() { }
public void llGetSunDirection() { }
public void llGetTextureOffset() { }
public void llGetTextureScale() { }
public void llGetTextureRot() { }
public void llSubStringIndex() { }
public void llGetOwnerKey() { }
public void llGetCenterOfMass() { }
public void llListSort() { }
public void llGetListLength() { }
public void llList2Integer() { }
public void llList2Float() { }
public void llList2String() { }
public void llList2Key() { }
public void llList2Vector() { }
public void llList2Rot() { }
public void llList2List() { }
public void llDeleteSubList() { }
public void llGetListEntryType() { }
public void llList2CSV() { }
public void llCSV2List() { }
public void llListRandomize() { }
public void llList2ListStrided() { }
public void llGetRegionCorner() { }
public void llListInsertList() { }
public void llListFindList() { }
public void llGetObjectName() { }
public void llSetObjectName() { }
public void llGetDate() { }
public void llEdgeOfWorld() { }
public void llGetAgentInfo() { }
public void llAdjustSoundVolume() { }
public void llSetSoundQueueing() { }
public void llSetSoundRadius() { }
public void llKey2Name() { }
public void llSetTextureAnim() { }
public void llTriggerSoundLimited() { }
public void llEjectFromLand() { }
public void llParseString2List() { }
public void llOverMyLand() { }
public void llGetLandOwnerAt() { }
public void llGetNotecardLine() { }
public void llGetAgentSize() { }
public void llSameGroup() { }
public void llUnSit() { }
public void llGroundSlope() { }
public void llGroundNormal() { }
public void llGroundContour() { }
public void llGetAttached() { }
public void llGetFreeMemory() { }
public void llGetRegionName() { }
public void llGetRegionTimeDilation() { }
public void llGetRegionFPS() { }
public void llParticleSystem() { }
public void llGroundRepel() { }
public void llGiveInventoryList() { }
public void llSetVehicleType() { }
public void llSetVehicleFloatParam() { }
public void llSetVehicleVectorParam() { }
public void llSetVehicleRotationParam() { }
public void llSetVehicleFlags() { }
public void llRemoveVehicleFlags() { }
public void llSitTarget() { }
public void llAvatarOnSitTarget() { }
public void llAddToLandPassList() { }
public void llSetTouchText() { }
public void llSetSitText() { }
public void llSetCameraEyeOffset() { }
public void llSetCameraAtOffset() { }
public void llDumpList2String() { }
public void llScriptDanger() { }
public void llDialog() { }
public void llVolumeDetect() { }
public void llResetOtherScript() { }
public void llGetScriptState() { }
public void llRemoteLoadScript() { }
public void llSetRemoteScriptAccessPin() { }
public void llRemoteLoadScriptPin() { }
public void llOpenRemoteDataChannel() { }
public void llSendRemoteData() { }
public void llRemoteDataReply() { }
public void llCloseRemoteDataChannel() { }
public void llMD5String() { }
public void llSetPrimitiveParams() { }
public void llStringToBase64() { }
public void llBase64ToString() { }
public void llXorBase64Strings() { }
public void llRemoteDataSetRegion() { }
public void llLog10() { }
public void llLog() { }
public void llGetAnimationList() { }
public void llSetParcelMusicURL() { }
public void llGetRootPosition() { }
public void llGetRootRotation() { }
public void llGetObjectDesc() { }
public void llSetObjectDesc() { }
public void llGetCreator() { }
public void llGetTimestamp() { }
public void llSetLinkAlpha() { }
public void llGetNumberOfPrims() { }
public void llGetNumberOfNotecardLines() { }
public void llGetBoundingBox() { }
public void llGetGeometricCenter() { }
public void llGetPrimitiveParams() { }
public void llIntegerToBase64() { }
public void llBase64ToInteger() { }
public void llGetGMTclock() { }
public void llGetSimulatorHostname() { }
public void llSetLocalRot() { }
public void llParseStringKeepNulls() { }
public void llRezAtRoot() { }
public void llGetObjectPermMask() { }
public void llSetObjectPermMask() { }
public void llGetInventoryPermMask() { }
public void llSetInventoryPermMask() { }
public void llGetInventoryCreator() { }
public void llOwnerSay() { }
public void llRequestSimulatorData() { }
public void llForceMouselook() { }
public void llGetObjectMass() { }
public void llListReplaceList() { }
public void llLoadURL() { }
public void llParcelMediaCommandList() { }
public void llParcelMediaQuery() { }
public void llModPow() { }
public void llGetInventoryType() { }
public void llSetPayPrice() { }
public void llGetCameraPos() { }
public void llGetCameraRot() { }
public void llSetPrimURL() { }
public void llRefreshPrimURL() { }
public void llEscapeURL() { }
public void llUnescapeURL() { }
public void llMapDestination() { }
public void llAddToLandBanList() { }
public void llRemoveFromLandPassList() { }
public void llRemoveFromLandBanList() { }
public void llSetCameraParams() { }
public void llClearCameraParams() { }
public void llListStatistics() { }
public void llGetUnixTime() { }
public void llGetParcelFlags() { }
public void llGetRegionFlags() { }
public void llXorBase64StringsCorrect() { }
public void llHTTPRequest() { }
public void llResetLandBanList() { }
public void llResetLandPassList() { }
public void llGetParcelPrimCount() { }
public void llGetParcelPrimOwners() { }
public void llGetObjectPrimCount() { }
public void llGetParcelMaxPrims() { }
public void llGetParcelDetails() { }
}
}

View File

@ -44,12 +44,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
{
myScriptEngine = _ScriptEngine;
// TODO: HOOK EVENTS UP TO SERVER!
Common.SendToDebug("EventManager Start");
myScriptEngine.m_logger.Verbose("ScriptEngine", "EventManager Start");
// TODO: ADD SERVER HOOK TO LOAD A SCRIPT THROUGH myScriptEngine.ScriptManager
// Hook up a test event to our test form
Common.SendToDebug("EventManager Hooking up dummy-event: touch_start");
myScriptEngine.m_logger.Verbose("ScriptEngine", "EventManager Hooking up dummy-event: touch_start");
// 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);
@ -58,7 +57,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
public void touch_start(uint localID, LLVector3 offsetPos, IClientAPI remoteClient)
{
// Add to queue for all scripts in ObjectID object
Common.SendToDebug("EventManager Event: touch_start");
myScriptEngine.m_logger.Verbose("ScriptEngine", "EventManager Event: touch_start");
myScriptEngine.myEventQueueManager.AddToObjectQueue("TEST", "touch_start", new object[] { (int)0 });
}

View File

@ -51,7 +51,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
public EventQueueManager(ScriptEngine _ScriptEngine)
{
myScriptEngine = _ScriptEngine;
Common.SendToDebug("EventQueueManager Start");
myScriptEngine.m_logger.Verbose("ScriptEngine", "EventQueueManager Start");
// Start worker thread
EventQueueThread = new Thread(EventQueueThreadLoop);
EventQueueThread.IsBackground = true;
@ -70,7 +70,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
}
catch (Exception e)
{
Common.SendToDebug("EventQueueManager Exception killing worker thread: " + e.ToString());
myScriptEngine.m_logger.Verbose("ScriptEngine", "EventQueueManager Exception killing worker thread: " + e.ToString());
}
}
// Todo: Clean up our queues
@ -79,7 +79,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
private void EventQueueThreadLoop()
{
Common.SendToDebug("EventQueueManager Worker thread spawned");
myScriptEngine.m_logger.Verbose("ScriptEngine", "EventQueueManager Worker thread spawned");
try
{
while (true)
@ -93,7 +93,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
{
// Something in queue, process
QueueItemStruct QIS = EventQueue.Dequeue();
Common.SendToDebug("Processing event for ObjectID: " + QIS.ObjectID + ", ScriptID: " + QIS.ScriptID + ", FunctionName: " + QIS.FunctionName);
myScriptEngine.m_logger.Verbose("ScriptEngine", "Processing event for ObjectID: " + QIS.ObjectID + ", ScriptID: " + QIS.ScriptID + ", FunctionName: " + QIS.FunctionName);
// TODO: Execute function
myScriptEngine.myScriptManager.ExecuteFunction(QIS.ObjectID, QIS.ScriptID, QIS.FunctionName, QIS.param);
}
@ -101,14 +101,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
}
catch (ThreadAbortException tae)
{
Common.SendToDebug("EventQueueManager Worker thread killed: " + tae.Message);
myScriptEngine.m_logger.Verbose("ScriptEngine", "EventQueueManager Worker thread killed: " + tae.Message);
}
}
public void AddToObjectQueue(string ObjectID, string FunctionName, object[] param)
{
// Determine all scripts in Object and add to their queue
Common.SendToDebug("EventQueueManager Adding ObjectID: " + ObjectID + ", FunctionName: " + FunctionName);
myScriptEngine.m_logger.Verbose("ScriptEngine", "EventQueueManager Adding ObjectID: " + ObjectID + ", FunctionName: " + FunctionName);
foreach (string ScriptID in myScriptEngine.myScriptManager.GetScriptKeys(ObjectID))
{

View File

@ -42,16 +42,20 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
internal EventManager myEventManager; // Handles and queues incoming events from OpenSim
internal EventQueueManager myEventQueueManager; // Executes events
internal ScriptManager myScriptManager; // Load, unload and execute scripts
internal OpenSim.Framework.Console.LogBase m_logger;
public ScriptEngine()
{
Common.SendToDebug("ScriptEngine Object Initialized");
//Common.SendToDebug("ScriptEngine Object Initialized");
Common.mySE = this;
}
public void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld)
public void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger)
{
World = Sceneworld;
Common.SendToDebug("ScriptEngine InitializeEngine()");
m_logger = logger;
m_logger.Status("ScriptEngine", "InitializeEngine");
// Create all objects we'll be using
myEventQueueManager = new EventQueueManager(this);
@ -71,7 +75,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
[Obsolete("!!!FOR DEBUGGING ONLY!!!")]
public void StartScript(string ScriptID, string ObjectID)
{
Common.SendToDebug("ScriptEngine DEBUG: StartScript: " + ScriptID);
m_logger.Status("ScriptEngine", "DEBUG: StartScript: " + ScriptID);
myScriptManager.StartScript(ScriptID, ObjectID);
}
}

View File

@ -41,7 +41,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
public ScriptManager(ScriptEngine _ScriptEngine)
{
myScriptEngine = _ScriptEngine;
Common.SendToDebug("ScriptManager Start");
myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Start");
}
@ -102,7 +102,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
/// <param name="ObjectID"></param>
public void StartScript(string ScriptID, string ObjectID)
{
Common.SendToDebug("ScriptManager StartScript: ScriptID: " + ScriptID + ", ObjectID: " + ObjectID);
myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager StartScript: ScriptID: " + ScriptID + ", ObjectID: " + ObjectID);
// We will initialize and start the script.
// It will be up to the script itself to hook up the correct events.
@ -114,13 +114,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
FileName = ScriptID;
// * Does script need compile? Send it to LSL compiler first. (TODO: Use (and clean) compiler cache)
Common.SendToDebug("ScriptManager Script extension: " + System.IO.Path.GetExtension(FileName).ToLower());
myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Script extension: " + System.IO.Path.GetExtension(FileName).ToLower());
switch (System.IO.Path.GetExtension(FileName).ToLower())
{
case ".txt":
case ".lsl":
case ".cs":
Common.SendToDebug("ScriptManager Script is CS/LSL, compiling to .Net Assembly");
myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Script is CS/LSL, compiling to .Net Assembly");
// Create a new instance of the compiler (currently we don't want reuse)
OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.Compiler LSLCompiler = new OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.Compiler();
// Compile
@ -130,7 +130,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
throw new Exception("Unknown script type.");
}
Common.SendToDebug("Compilation done");
myScriptEngine.m_logger.Verbose("ScriptEngine", "Compilation done");
// * Insert yield into code
FileName = ProcessYield(FileName);
@ -149,7 +149,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
//OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL_BuiltIn_Commands_Interface LSLB = new OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL_BuiltIn_Commands_TestImplementation(FullScriptID);
// Start the script - giving it BuiltIns
Common.SendToDebug("ScriptManager initializing script, handing over private builtin command interface");
myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager initializing script, handing over private builtin command interface");
Script.Start(myScriptEngine.World, ScriptID);
@ -174,7 +174,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
/// <returns></returns>
private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName)
{
Common.SendToDebug("ScriptManager Loading Assembly " + FileName);
myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Loading Assembly " + FileName);
// Load .Net Assembly (.dll)
// Initialize and return it
@ -218,7 +218,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
internal void ExecuteFunction(string ObjectID, string ScriptID, string FunctionName, object[] args)
{
Common.SendToDebug("Executing Function ObjectID: " + ObjectID + ", ScriptID: " + ScriptID + ", FunctionName: " + FunctionName);
myScriptEngine.m_logger.Verbose("ScriptEngine", "Executing Function ObjectID: " + ObjectID + ", ScriptID: " + ScriptID + ", FunctionName: " + FunctionName);
OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = myScriptEngine.myScriptManager.GetScript(ObjectID, ScriptID);
Type type = Script.GetType();
@ -226,7 +226,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
//System.Collections.Generic.List<string> Functions = (System.Collections.Generic.List<string>)
//Type type = typeof(OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass);
Common.SendToDebug("Invoke: \"" + Script.State + "_event_" + FunctionName + "\"");
myScriptEngine.m_logger.Verbose("ScriptEngine", "Invoke: \"" + Script.State + "_event_" + FunctionName + "\"");
type.InvokeMember(Script.State + "_event_" + FunctionName, BindingFlags.InvokeMethod, null, Script, args);
//System.Collections.Generic.List<string> Functions = (System.Collections.Generic.List<string>)type.InvokeMember("GetFunctions", BindingFlags.InvokeMethod, null, Script, null);

View File

@ -958,6 +958,7 @@
<Reference name="Axiom.MathLib.dll" localCopy="false"/>
<Reference name="libsecondlife.dll"/>
<Reference name="OpenSim.Framework"/>
<Reference name="OpenSim.Framework.Console"/>
<Files>
<Match pattern="*.cs" recurse="true"/>
<Match pattern="*.lso" recurse="true"/>