mantis 8704: fix issues on YEngine

master
UbitUmarov 2020-05-20 00:35:51 +01:00
parent 5167bd097b
commit fffac7d531
4 changed files with 36 additions and 1 deletions

View File

@ -78,6 +78,16 @@ namespace OpenSim.Region.ScriptEngine.Yengine
inst.Die(); inst.Die();
} }
public void SetLSLTimer(double time)
{
m_timer = time;
}
public double getLSLTimer()
{
return(m_timer);
}
/** /**
* @brief Seat avatar on prim. * @brief Seat avatar on prim.
* @param owner = true: owner of prim script is running in * @param owner = true: owner of prim script is running in
@ -218,6 +228,10 @@ namespace OpenSim.Region.ScriptEngine.Yengine
// do not do llResetScript on entry // do not do llResetScript on entry
if(eventCode == ScriptEventCode.state_entry && stateCode == 0) if(eventCode == ScriptEventCode.state_entry && stateCode == 0)
return; return;
if (m_XMRLSLApi != null)
m_XMRLSLApi.llResetTime();
// do clear the events queue on reset // do clear the events queue on reset
ClearQueue(); ClearQueue();
//ClearQueueExceptLinkMessages(); //ClearQueueExceptLinkMessages();

View File

@ -28,6 +28,7 @@
using System; using System;
using System.IO; using System.IO;
using System.Xml; using System.Xml;
using OpenSim.Framework;
using OpenSim.Region.ScriptEngine.Shared; using OpenSim.Region.ScriptEngine.Shared;
using OpenSim.Region.ScriptEngine.Shared.Api; using OpenSim.Region.ScriptEngine.Shared.Api;
using log4net; using log4net;
@ -115,6 +116,14 @@ namespace OpenSim.Region.ScriptEngine.Yengine
m_RunOnePhase = "GetExecutionState D"; m_RunOnePhase = "GetExecutionState D";
CheckRunLockInvariants(true); CheckRunLockInvariants(true);
if(m_XMRLSLApi != null)
{
double scriptTime = Util.GetTimeStampMS() - m_XMRLSLApi.getLSLTimer();
XmlElement scriptTimeN = doc.CreateElement("", "scrpTime", "");
scriptTimeN.AppendChild(doc.CreateTextNode(scriptTime.ToString()));
scriptStateN.AppendChild(scriptTimeN);
}
if (m_minEventDelay != 0.0) if (m_minEventDelay != 0.0)
{ {
XmlElement minEventDelayN = doc.CreateElement("", "mEvtDly", ""); XmlElement minEventDelayN = doc.CreateElement("", "mEvtDly", "");

View File

@ -529,9 +529,18 @@ namespace OpenSim.Region.ScriptEngine.Yengine
XmlElement doGblInitN = (XmlElement)scriptStateN.SelectSingleNode("DoGblInit"); XmlElement doGblInitN = (XmlElement)scriptStateN.SelectSingleNode("DoGblInit");
doGblInit = bool.Parse(doGblInitN.InnerText); doGblInit = bool.Parse(doGblInitN.InnerText);
if (m_XMRLSLApi != null)
{
XmlElement scpttimeN = (XmlElement)scriptStateN.SelectSingleNode("scrpTime");
if (scpttimeN != null && Double.TryParse(scpttimeN.InnerText, out double t))
{
m_XMRLSLApi.SetLSLTimer(Util.GetTimeStampMS() - t);
}
}
double minEventDelay = 0.0; double minEventDelay = 0.0;
XmlElement minEventDelayN = (XmlElement)scriptStateN.SelectSingleNode("mEvtDly"); XmlElement minEventDelayN = (XmlElement)scriptStateN.SelectSingleNode("mEvtDly");
if(minEventDelayN != null) if (minEventDelayN != null)
minEventDelay = Double.Parse(minEventDelayN.InnerText); minEventDelay = Double.Parse(minEventDelayN.InnerText);
// get values used by stuff like llDetectedGrab, etc. // get values used by stuff like llDetectedGrab, etc.

View File

@ -874,6 +874,9 @@ namespace OpenSim.Region.ScriptEngine.Yengine
ReleaseControlsOrPermissions(true); ReleaseControlsOrPermissions(true);
m_Part.CollisionSound = UUID.Zero; m_Part.CollisionSound = UUID.Zero;
if (m_XMRLSLApi != null)
m_XMRLSLApi.llResetTime();
m_RunOnePhase = "ResetLocked: removing script"; m_RunOnePhase = "ResetLocked: removing script";
IUrlModule urlModule = m_Engine.World.RequestModuleInterface<IUrlModule>(); IUrlModule urlModule = m_Engine.World.RequestModuleInterface<IUrlModule>();
if(urlModule != null) if(urlModule != null)