From 44058f8ae6c02d01350bfe16c8ee00017d949fcc Mon Sep 17 00:00:00 2001 From: Tedd Hansen Date: Sun, 10 Feb 2008 22:36:01 +0000 Subject: state_entry is now executed on state change. --- OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 13 ++++++++++++- .../ScriptEngine/Common/ScriptEngineBase/EventManager.cs | 6 ++++++ 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index ca7a2bd..2fc610a 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs @@ -73,7 +73,18 @@ namespace OpenSim.Region.ScriptEngine.Common public string State { get { return m_state; } - set { m_state = value; } + set { + bool changed = false; + if (m_state != value) + changed = true; + // Set it + m_state = value; + + if (changed) + { + m_ScriptEngine.m_EventManager.state_entry(m_localID); + } + } } // Object never expires diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs index 1de010a..607a4ff 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs @@ -83,6 +83,12 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase myScriptEngine.m_EventQueueManager.AddToObjectQueue(localID, "changed", EventQueueManager.llDetectNull, new object[] { (int)change }); } + public void state_entry(uint localID) + { + // Add to queue for all scripts in ObjectID object + myScriptEngine.m_EventQueueManager.AddToObjectQueue(localID, "state_entry", EventQueueManager.llDetectNull, new object[] { }); + } + public void touch_start(uint localID, LLVector3 offsetPos, IClientAPI remoteClient) { // Add to queue for all scripts in ObjectID object -- cgit v1.1