mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
Add "show script timers" command to show script timers. For debug purposes.
Also, "show sensors" changes to "show script sensors".
This commit is contained in:
@@ -61,19 +61,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
|
||||
public SensorInfo Clone()
|
||||
{
|
||||
SensorInfo s = new SensorInfo();
|
||||
s.localID = localID;
|
||||
s.itemID = itemID;
|
||||
s.interval = interval;
|
||||
s.next = next;
|
||||
s.name = name;
|
||||
s.keyID = keyID;
|
||||
s.type = type;
|
||||
s.range = range;
|
||||
s.arc = arc;
|
||||
s.host = host;
|
||||
|
||||
return s;
|
||||
return (SensorInfo)this.MemberwiseClone();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -701,8 +689,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
|
||||
lock (SenseRepeatListLock)
|
||||
{
|
||||
foreach (SensorInfo si in SenseRepeaters)
|
||||
retList.Add(si.Clone());
|
||||
foreach (SensorInfo i in SenseRepeaters)
|
||||
retList.Add(i.Clone());
|
||||
}
|
||||
|
||||
return retList;
|
||||
|
||||
@@ -35,6 +35,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
{
|
||||
public class Timer
|
||||
{
|
||||
public class TimerInfo
|
||||
{
|
||||
public uint localID;
|
||||
public UUID itemID;
|
||||
//public double interval;
|
||||
public long interval;
|
||||
//public DateTime next;
|
||||
public long next;
|
||||
|
||||
public TimerInfo Clone()
|
||||
{
|
||||
return (TimerInfo)this.MemberwiseClone();
|
||||
}
|
||||
}
|
||||
|
||||
public AsyncCommandManager m_CmdManager;
|
||||
|
||||
public int TimersCount
|
||||
@@ -59,17 +74,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
return localID.ToString() + itemID.ToString();
|
||||
}
|
||||
|
||||
private class TimerClass
|
||||
{
|
||||
public uint localID;
|
||||
public UUID itemID;
|
||||
//public double interval;
|
||||
public long interval;
|
||||
//public DateTime next;
|
||||
public long next;
|
||||
}
|
||||
|
||||
private Dictionary<string,TimerClass> Timers = new Dictionary<string,TimerClass>();
|
||||
private Dictionary<string,TimerInfo> Timers = new Dictionary<string,TimerInfo>();
|
||||
private object TimerListLock = new object();
|
||||
|
||||
public void SetTimerEvent(uint m_localID, UUID m_itemID, double sec)
|
||||
@@ -81,7 +86,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
}
|
||||
|
||||
// Add to timer
|
||||
TimerClass ts = new TimerClass();
|
||||
TimerInfo ts = new TimerInfo();
|
||||
ts.localID = m_localID;
|
||||
ts.itemID = m_itemID;
|
||||
ts.interval = Convert.ToInt64(sec * 10000000); // How many 100 nanoseconds (ticks) should we wait
|
||||
@@ -121,8 +126,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
lock (TimerListLock)
|
||||
{
|
||||
// Go through all timers
|
||||
Dictionary<string, TimerClass>.ValueCollection tvals = Timers.Values;
|
||||
foreach (TimerClass ts in tvals)
|
||||
Dictionary<string, TimerInfo>.ValueCollection tvals = Timers.Values;
|
||||
foreach (TimerInfo ts in tvals)
|
||||
{
|
||||
// Time has passed?
|
||||
if (ts.next < DateTime.Now.Ticks)
|
||||
@@ -147,8 +152,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
|
||||
lock (TimerListLock)
|
||||
{
|
||||
Dictionary<string, TimerClass>.ValueCollection tvals = Timers.Values;
|
||||
foreach (TimerClass ts in tvals)
|
||||
Dictionary<string, TimerInfo>.ValueCollection tvals = Timers.Values;
|
||||
foreach (TimerInfo ts in tvals)
|
||||
{
|
||||
if (ts.itemID == itemID)
|
||||
{
|
||||
@@ -167,7 +172,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
|
||||
while (idx < data.Length)
|
||||
{
|
||||
TimerClass ts = new TimerClass();
|
||||
TimerInfo ts = new TimerInfo();
|
||||
|
||||
ts.localID = localID;
|
||||
ts.itemID = itemID;
|
||||
@@ -181,5 +186,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<TimerInfo> GetTimersInfo()
|
||||
{
|
||||
List<TimerInfo> retList = new List<TimerInfo>();
|
||||
|
||||
lock (TimerListLock)
|
||||
{
|
||||
foreach (TimerInfo i in Timers.Values)
|
||||
retList.Add(i.Clone());
|
||||
}
|
||||
|
||||
return retList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user