From c21a8b99694e459408a9ccc43e525928038b2b22 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 26 Sep 2008 02:51:00 +0000 Subject: Full API convergence. Api is back in LSL_Api.cs and OSSL_Api.cs. The binaries are still different, but that is only a small step away now. The OSSLPrim has been removed. This commit will breal all scripts using Prim.Scale(), etc, syntax. It was not secure and will have to be brought back in another form. --- .../Common/ScriptEngineBase/ScriptEngine.cs | 73 +++++++++++++++++++++- .../Common/ScriptEngineBase/ScriptManager.cs | 9 ++- 2 files changed, 79 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Common/ScriptEngineBase') diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs index 18925e0..88f7b41 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs @@ -66,6 +66,11 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase private bool m_enabled = false; private bool m_hookUpToServer = false; + public IConfig Config + { + get { return ScriptConfigSource; } + } + /// /// How many seconds between re-reading config-file. 0 = never. ScriptEngine will try to adjust to new config changes. /// @@ -120,6 +125,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase m_EventManager = new EventManager(this, HookUpToServer); // We need to start it m_ScriptManager = newScriptManager; + m_ScriptManager.Setup(); m_AppDomainManager = new AppDomainManager(this); if (m_MaintenanceThread == null) m_MaintenanceThread = new MaintenanceThread(); @@ -229,23 +235,88 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase public void SetState(UUID itemID, string state) { + uint localID = m_ScriptManager.GetLocalID(itemID); + if (localID == 0) + return; + + IScript Script = m_ScriptManager.GetScript(localID, itemID); + + if (Script == null) + return; + + string currentState = Script.State; + + if (currentState != state) + { + try + { + m_EventManager.state_exit(localID); + + } + catch (AppDomainUnloadedException) + { + Console.WriteLine("[SCRIPT]: state change called when script was unloaded. Nothing to worry about, but noting the occurance"); + } + + Script.State = state; + + try + { + int eventFlags = m_ScriptManager.GetStateEventFlags(localID, itemID); + SceneObjectPart part = m_Scene.GetSceneObjectPart(itemID); + if (part != null) + part.SetScriptEvents(itemID, eventFlags); + m_EventManager.state_entry(localID); + } + catch (AppDomainUnloadedException) + { + Console.WriteLine("[SCRIPT]: state change called when script was unloaded. Nothing to worry about, but noting the occurance"); + } + } } public bool GetScriptState(UUID itemID) { - return true; + uint localID = m_ScriptManager.GetLocalID(itemID); + if (localID == 0) + return false; + + IScript script = m_ScriptManager.GetScript(localID, itemID); + if (script == null) + return false; + + return script.Exec.Running?true:false; } public void SetScriptState(UUID itemID, bool state) { + uint localID = m_ScriptManager.GetLocalID(itemID); + if (localID == 0) + return; + + IScript script = m_ScriptManager.GetScript(localID, itemID); + if (script == null) + return; + + script.Exec.Running = state; } public void ApiResetScript(UUID itemID) { + uint localID = m_ScriptManager.GetLocalID(itemID); + if (localID == 0) + return; + + m_ScriptManager.ResetScript(localID, itemID); } public void ResetScript(UUID itemID) { + uint localID = m_ScriptManager.GetLocalID(itemID); + if (localID == 0) + return; + + m_ScriptManager.ResetScript(localID, itemID); } } } diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs index 095e11f..987a0a0 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs @@ -120,12 +120,15 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase m_scriptEngine = scriptEngine; } public abstract void Initialize(); + public void Setup() + { + ReadConfig(); + Initialize(); + } public void Start() { m_started = true; - ReadConfig(); - Initialize(); AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); @@ -225,6 +228,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase { if (LUQueue.Count > 0) { +m_scriptEngine.Log.InfoFormat("[{0}]: Loading script", m_scriptEngine.ScriptEngineName); LUStruct item = LUQueue.Dequeue(); if (item.Action == LUType.Unload) @@ -281,6 +285,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase ls.startParam = startParam; ls.postOnRez = postOnRez; LUQueue.Enqueue(ls); +m_scriptEngine.Log.InfoFormat("[{0}]: Queued script for load", m_scriptEngine.ScriptEngineName); } } -- cgit v1.1