let scriptEvents flags represent all events we have (so change to 64bit ulong) not the need to keep duplicated definitions on main framework and each script engine, namely because Xengine app domain option

This commit is contained in:
UbitUmarov
2020-09-04 14:22:24 +01:00
parent fcc9b30c1e
commit 23de4e3a82
9 changed files with 234 additions and 98 deletions

View File

@@ -44,10 +44,6 @@ namespace OpenSim.Region.ScriptEngine.Yengine
{
// used by XMRInstance to indicate no event being processed
None = -1,
// must be bit numbers of equivalent values in ...
// OpenSim.Region.ScriptEngine.Shared.ScriptBase.scriptEvents
// ... so they can be passed to m_Part.SetScriptEvents().
attach = 0,
state_exit = 1,
timer = 2,
@@ -77,18 +73,18 @@ namespace OpenSim.Region.ScriptEngine.Yengine
run_time_permissions = 28,
touch_end = 29,
state_entry = 30,
// events not passed to m_Part.SetScriptEvents().
//
//
changed = 33,
link_message = 34,
no_sensor = 35,
on_rez = 36,
sensor = 37,
http_request = 38,
//
path_update = 40,
// marks highest numbered event, ie, number of columns in seht.
// marks highest numbered event
Size = 41
}
}

View File

@@ -216,21 +216,21 @@ namespace OpenSim.Region.ScriptEngine.Yengine
// Verify that our ScriptEventCode's match OpenSim's scriptEvent's.
bool err = false;
for(int i = 0; i < 32; i++)
for(int i = 0; i < (int)ScriptEventCode.Size; i++)
{
string mycode = "undefined";
string oscode = "undefined";
try
{
mycode = ((ScriptEventCode)i).ToString();
Convert.ToInt32(mycode);
Convert.ToInt64(mycode);
mycode = "undefined";
}
catch { }
try
{
oscode = ((OpenSim.Region.Framework.Scenes.scriptEvents)(1 << i)).ToString();
Convert.ToInt32(oscode);
oscode = ((OpenSim.Region.Framework.Scenes.scriptEvents)(1ul << i)).ToString();
Convert.ToInt64(oscode);
oscode = "undefined";
}
catch { }
@@ -1412,7 +1412,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
instance.EmptyEventQueues();
}
// Declare which events the script's current state can handle.
int eventMask = instance.GetStateEventFlags(instance.stateCode);
ulong eventMask = instance.GetStateEventFlags(instance.stateCode);
instance.m_Part.SetScriptEvents(instance.m_ItemID, eventMask);
QueueToStart(instance);

View File

@@ -213,7 +213,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
* @brief For a given stateCode, get a mask of the low 32 event codes
* that the state has handlers defined for.
*/
public int GetStateEventFlags(int state)
public ulong GetStateEventFlags(int state)
{
if((state < 0) ||
(state >= m_ObjCode.scriptEventHandlerTable.GetLength(0)))
@@ -221,12 +221,12 @@ namespace OpenSim.Region.ScriptEngine.Yengine
return 0;
}
int flags = 0;
for(int i = 0; i < 32; i++)
ulong flags = 0;
for(int i = 0; i <(int)ScriptEventCode.Size; i++)
{
if(m_ObjCode.scriptEventHandlerTable[state, i] != null)
{
flags |= 1 << i;
flags |= 1ul << i;
}
}
return flags;