From 7364acf42e960ea0a391044689f05a5bae1b95a4 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 31 Aug 2020 17:18:51 +0100 Subject: [PATCH] Xengine: change allocation of executor events mask map --- .../Shared/Api/Runtime/Executor.cs | 84 ++++++++----------- .../Shared/Instance/ScriptInstance.cs | 16 ++-- bin/config-include/osslDefaultEnable.ini | 1 - 3 files changed, 46 insertions(+), 55 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs index 11f8cb9360..b337985533 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs @@ -45,7 +45,43 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase /// protected IScript m_Script; - protected Dictionary m_eventFlagsMap = new Dictionary(); + protected static readonly Dictionary m_eventFlagsMap = new Dictionary() + { + {"attach", scriptEvents.attach}, + {"at_rot_target", scriptEvents.at_rot_target}, + {"at_target", scriptEvents.at_target}, + // {"changed",(long)scriptEvents.changed}, + {"collision", scriptEvents.collision}, + {"collision_end", scriptEvents.collision_end}, + {"collision_start", scriptEvents.collision_start}, + {"control", scriptEvents.control}, + {"dataserver", scriptEvents.dataserver}, + {"email", scriptEvents.email}, + {"http_response", scriptEvents.http_response}, + {"land_collision", scriptEvents.land_collision}, + {"land_collision_end", scriptEvents.land_collision_end}, + {"land_collision_start", scriptEvents.land_collision_start}, + //{"link_message",scriptEvents.link_message}, + {"listen", scriptEvents.listen}, + {"money", scriptEvents.money}, + {"moving_end", scriptEvents.moving_end}, + {"moving_start", scriptEvents.moving_start}, + {"not_at_rot_target", scriptEvents.not_at_rot_target}, + {"not_at_target", scriptEvents.not_at_target}, + //{"no_sensor",(long)scriptEvents.no_sensor}, + //{"on_rez",(long)scriptEvents.on_rez}, + {"remote_data", scriptEvents.remote_data}, + {"run_time_permissions", scriptEvents.run_time_permissions}, + //{"sensor",(long)scriptEvents.sensor}, + {"state_entry", scriptEvents.state_entry}, + {"state_exit", scriptEvents.state_exit}, + {"timer", scriptEvents.timer}, + {"touch", scriptEvents.touch}, + {"touch_end", scriptEvents.touch_end}, + {"touch_start", scriptEvents.touch_start}, + {"transaction_result", scriptEvents.transaction_result}, + {"object_rez", scriptEvents.object_rez} + }; [Flags] public enum scriptEvents : int @@ -91,7 +127,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase public Executor(IScript script) { m_Script = script; - initEventFlags(); } public scriptEvents GetStateEventFlags(string state) @@ -197,51 +232,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase throw; } } - - } - - protected void initEventFlags() - { - // Initialize the table if it hasn't already been done - if (m_eventFlagsMap.Count > 0) - { - return; - } - - m_eventFlagsMap.Add("attach", scriptEvents.attach); - m_eventFlagsMap.Add("at_rot_target", scriptEvents.at_rot_target); - m_eventFlagsMap.Add("at_target", scriptEvents.at_target); - // m_eventFlagsMap.Add("changed",(long)scriptEvents.changed); - m_eventFlagsMap.Add("collision", scriptEvents.collision); - m_eventFlagsMap.Add("collision_end", scriptEvents.collision_end); - m_eventFlagsMap.Add("collision_start", scriptEvents.collision_start); - m_eventFlagsMap.Add("control", scriptEvents.control); - m_eventFlagsMap.Add("dataserver", scriptEvents.dataserver); - m_eventFlagsMap.Add("email", scriptEvents.email); - m_eventFlagsMap.Add("http_response", scriptEvents.http_response); - m_eventFlagsMap.Add("land_collision", scriptEvents.land_collision); - m_eventFlagsMap.Add("land_collision_end", scriptEvents.land_collision_end); - m_eventFlagsMap.Add("land_collision_start", scriptEvents.land_collision_start); - // m_eventFlagsMap.Add("link_message",scriptEvents.link_message); - m_eventFlagsMap.Add("listen", scriptEvents.listen); - m_eventFlagsMap.Add("money", scriptEvents.money); - m_eventFlagsMap.Add("moving_end", scriptEvents.moving_end); - m_eventFlagsMap.Add("moving_start", scriptEvents.moving_start); - m_eventFlagsMap.Add("not_at_rot_target", scriptEvents.not_at_rot_target); - m_eventFlagsMap.Add("not_at_target", scriptEvents.not_at_target); - // m_eventFlagsMap.Add("no_sensor",(long)scriptEvents.no_sensor); - // m_eventFlagsMap.Add("on_rez",(long)scriptEvents.on_rez); - m_eventFlagsMap.Add("remote_data", scriptEvents.remote_data); - m_eventFlagsMap.Add("run_time_permissions", scriptEvents.run_time_permissions); - // m_eventFlagsMap.Add("sensor",(long)scriptEvents.sensor); - m_eventFlagsMap.Add("state_entry", scriptEvents.state_entry); - m_eventFlagsMap.Add("state_exit", scriptEvents.state_exit); - m_eventFlagsMap.Add("timer", scriptEvents.timer); - m_eventFlagsMap.Add("touch", scriptEvents.touch); - m_eventFlagsMap.Add("touch_end", scriptEvents.touch_end); - m_eventFlagsMap.Add("touch_start", scriptEvents.touch_start); - m_eventFlagsMap.Add("transaction_result", scriptEvents.transaction_result); - m_eventFlagsMap.Add("object_rez", scriptEvents.object_rez); } } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index f93e77b64d..2c87ffac7e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs @@ -310,10 +310,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance { m_Script.InitApi(kv.Key, kv.Value); } - - // // m_log.Debug("[Script] Script instance created"); - - Part.SetScriptEvents(ItemID, (int)m_Script.GetStateEventFlags(State)); } catch (Exception e) { @@ -355,10 +351,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance LocalID, ItemID, ObjectID, PluginData); - // m_log.DebugFormat("[Script] Successfully retrieved state for script {0}.{1}", PrimName, m_ScriptName); + // m_log.DebugFormat("[Script] Successfully retrieved state for script {0}.{1}", PrimName, m_ScriptName); - Part.SetScriptEvents(ItemID, - (int)m_Script.GetStateEventFlags(State)); if (!Running) m_startOnInit = false; @@ -398,6 +392,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance // "[SCRIPT INSTANCE]: Did not find state for script {0} for {1} ({2}) at {3} in {4}", // ItemID, savedState, Part.Name, Part.ParentGroup.Name, Part.ParentGroup.Scene.Name); // } + try + { + Part.SetScriptEvents(ItemID, (int)m_Script.GetStateEventFlags(State)); + } + catch + { + m_log.ErrorFormat("[SCRIPT INSTANCE]: failed to SetScriptEvents {0}", ItemID); + } return true; } diff --git a/bin/config-include/osslDefaultEnable.ini b/bin/config-include/osslDefaultEnable.ini index 25e24a0244..3ecf3c5e52 100644 --- a/bin/config-include/osslDefaultEnable.ini +++ b/bin/config-include/osslDefaultEnable.ini @@ -192,7 +192,6 @@ Allow_osRegionNotice = ESTATE_MANAGER,ESTATE_OWNER Allow_osSetProjectionParams = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER Allow_osSetRegionWaterHeight = ESTATE_MANAGER,ESTATE_OWNER - Allow_osSetStateEvents = false ; deprecated Allow_osSetTerrainHeight = ESTATE_MANAGER,ESTATE_OWNER Allow_osSetTerrainTexture = ESTATE_MANAGER,ESTATE_OWNER Allow_osSetTerrainTextureHeight = ESTATE_MANAGER,ESTATE_OWNER