* Implements new 'Monitoring' system for reporting performance.
* Mostly the same set as the StatsMonitor used for Viewer notification, but exposes some new frametimes - including EventMS, PhysicsUpdateMS, LandUpdateMS; new memory monitoring - both GC.TotalMemory and Process.PrivateWorkingMemory64; also exposes ThreadCount (using System.Diagnostics.Process) * Type 'monitor report' on the console to see output. * SNMP Implementation forthcoming.0.6.8-post-fixes
parent
58c260140c
commit
711dde34e4
|
@ -0,0 +1,9 @@
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring
|
||||||
|
{
|
||||||
|
interface IMonitor
|
||||||
|
{
|
||||||
|
double GetValue();
|
||||||
|
string GetName();
|
||||||
|
string GetFriendlyValue(); // Convert to readable numbers
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using log4net;
|
||||||
|
using Nini.Config;
|
||||||
|
using OpenSim.Region.CoreModules.Framework.Monitoring.Monitors;
|
||||||
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring
|
||||||
|
{
|
||||||
|
public class MonitorModule : IRegionModule
|
||||||
|
{
|
||||||
|
private Scene m_scene;
|
||||||
|
private readonly List<IMonitor> m_monitors = new List<IMonitor>();
|
||||||
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
public void DebugMonitors(string module, string[] args)
|
||||||
|
{
|
||||||
|
foreach (IMonitor monitor in m_monitors)
|
||||||
|
{
|
||||||
|
m_log.Info("[MonitorModule] " + m_scene.RegionInfo.RegionName + " reports " + monitor.GetName() + " = " + monitor.GetValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IRegionModule
|
||||||
|
|
||||||
|
public void Initialise(Scene scene, IConfigSource source)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
|
||||||
|
|
||||||
|
m_scene.AddCommand(this, "monitor report",
|
||||||
|
"monitor report",
|
||||||
|
"Returns a variety of statistics about the current region and/or simulator",
|
||||||
|
DebugMonitors);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PostInitialise()
|
||||||
|
{
|
||||||
|
m_monitors.Add(new AgentCountMonitor(m_scene));
|
||||||
|
m_monitors.Add(new ChildAgentCountMonitor(m_scene));
|
||||||
|
m_monitors.Add(new GCMemoryMonitor());
|
||||||
|
m_monitors.Add(new ObjectCountMonitor(m_scene));
|
||||||
|
m_monitors.Add(new PhysicsFrameMonitor(m_scene));
|
||||||
|
m_monitors.Add(new PhysicsUpdateFrameMonitor(m_scene));
|
||||||
|
m_monitors.Add(new PWSMemoryMonitor());
|
||||||
|
m_monitors.Add(new ThreadCountMonitor());
|
||||||
|
m_monitors.Add(new TotalFrameMonitor(m_scene));
|
||||||
|
m_monitors.Add(new EventFrameMonitor(m_scene));
|
||||||
|
m_monitors.Add(new LandFrameMonitor(m_scene));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Close()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return "Region Health Monitoring Module"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsSharedModule
|
||||||
|
{
|
||||||
|
get { return false; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class AgentCountMonitor : IMonitor
|
||||||
|
{
|
||||||
|
private readonly Scene m_scene;
|
||||||
|
|
||||||
|
public AgentCountMonitor(Scene scene)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return m_scene.SceneGraph.GetRootAgentCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Root Agent Count";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + " agent(s)";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class ChildAgentCountMonitor : IMonitor
|
||||||
|
{
|
||||||
|
private readonly Scene m_scene;
|
||||||
|
|
||||||
|
public ChildAgentCountMonitor(Scene scene)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return m_scene.SceneGraph.GetChildAgentCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Child Agent Count";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + " child agent(s)";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class EventFrameMonitor : IMonitor
|
||||||
|
{
|
||||||
|
private readonly Scene m_scene;
|
||||||
|
|
||||||
|
public EventFrameMonitor(Scene scene)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return m_scene.MonitorEventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Total Event Frame Time";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + "ms";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class GCMemoryMonitor : IMonitor
|
||||||
|
{
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return GC.GetTotalMemory(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "GC Reported Memory";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)(GetValue() / (1024*1024)) + "MB (Global)";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class LandFrameMonitor : IMonitor
|
||||||
|
{
|
||||||
|
private readonly Scene m_scene;
|
||||||
|
|
||||||
|
public LandFrameMonitor(Scene scene)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return m_scene.MonitorLandTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Land Frame Time";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + "ms";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class ObjectCountMonitor : IMonitor
|
||||||
|
{
|
||||||
|
private readonly Scene m_scene;
|
||||||
|
|
||||||
|
public ObjectCountMonitor(Scene scene)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return m_scene.SceneGraph.GetTotalObjectsCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Total Objects Count";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + " Object(s)";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class PWSMemoryMonitor : IMonitor
|
||||||
|
{
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Private Working Set Memory";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)(GetValue() / (1024 * 1024)) + "MB (Global)";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class PhysicsFrameMonitor : IMonitor
|
||||||
|
{
|
||||||
|
private readonly Scene m_scene;
|
||||||
|
|
||||||
|
public PhysicsFrameMonitor(Scene scene)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return m_scene.MonitorPhysicsSyncTime + m_scene.MonitorPhysicsUpdateTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Total Physics Frame Time";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + "ms";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class PhysicsUpdateFrameMonitor : IMonitor
|
||||||
|
{
|
||||||
|
private readonly Scene m_scene;
|
||||||
|
|
||||||
|
public PhysicsUpdateFrameMonitor(Scene scene)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return m_scene.MonitorPhysicsUpdateTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Physics Update Frame Time";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + "ms";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class ThreadCountMonitor : IMonitor
|
||||||
|
{
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return System.Diagnostics.Process.GetCurrentProcess().Threads.Count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Total Threads";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + " Thread(s) (Global)";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors
|
||||||
|
{
|
||||||
|
class TotalFrameMonitor : IMonitor
|
||||||
|
{
|
||||||
|
private readonly Scene m_scene;
|
||||||
|
|
||||||
|
public TotalFrameMonitor(Scene scene)
|
||||||
|
{
|
||||||
|
m_scene = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Implementation of IMonitor
|
||||||
|
|
||||||
|
public double GetValue()
|
||||||
|
{
|
||||||
|
return m_scene.MonitorFrameTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return "Total Frame Time";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFriendlyValue()
|
||||||
|
{
|
||||||
|
return (int)GetValue() + "ms";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -274,6 +274,21 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
private int physicsMS2;
|
private int physicsMS2;
|
||||||
private int physicsMS;
|
private int physicsMS;
|
||||||
private int otherMS;
|
private int otherMS;
|
||||||
|
private int tempOnRezMS;
|
||||||
|
private int eventMS;
|
||||||
|
private int backupMS;
|
||||||
|
private int terrainMS;
|
||||||
|
private int landMS;
|
||||||
|
|
||||||
|
public int MonitorFrameTime { get { return frameMS; } }
|
||||||
|
public int MonitorPhysicsUpdateTime { get { return physicsMS; } }
|
||||||
|
public int MonitorPhysicsSyncTime { get { return physicsMS2; } }
|
||||||
|
public int MonitorOtherTime { get { return otherMS; } }
|
||||||
|
public int MonitorTempOnRezTime { get { return tempOnRezMS; } }
|
||||||
|
public int MonitorEventTime { get { return eventMS; } } // This may need to be divided into each event?
|
||||||
|
public int MonitorBackupTime { get { return backupMS; } }
|
||||||
|
public int MonitorTerrainTime { get { return terrainMS; } }
|
||||||
|
public int MonitorLandTime { get { return landMS; } }
|
||||||
|
|
||||||
private bool m_physics_enabled = true;
|
private bool m_physics_enabled = true;
|
||||||
private bool m_scripts_enabled = true;
|
private bool m_scripts_enabled = true;
|
||||||
|
@ -1026,7 +1041,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate;
|
TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate;
|
||||||
physicsFPS = 0f;
|
physicsFPS = 0f;
|
||||||
|
|
||||||
maintc = maintc = frameMS = otherMS = Environment.TickCount;
|
maintc = maintc = otherMS = Environment.TickCount;
|
||||||
|
int tmpFrameMS = maintc;
|
||||||
|
|
||||||
// Increment the frame counter
|
// Increment the frame counter
|
||||||
++m_frame;
|
++m_frame;
|
||||||
|
@ -1046,15 +1062,16 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (m_frame % m_update_presences == 0)
|
if (m_frame % m_update_presences == 0)
|
||||||
m_sceneGraph.UpdatePresences();
|
m_sceneGraph.UpdatePresences();
|
||||||
|
|
||||||
physicsMS2 = Environment.TickCount;
|
int TempPhysicsMS2 = Environment.TickCount;
|
||||||
if ((m_frame % m_update_physics == 0) && m_physics_enabled)
|
if ((m_frame % m_update_physics == 0) && m_physics_enabled)
|
||||||
m_sceneGraph.UpdatePreparePhysics();
|
m_sceneGraph.UpdatePreparePhysics();
|
||||||
physicsMS2 = Environment.TickCount - physicsMS2;
|
TempPhysicsMS2 = Environment.TickCount - TempPhysicsMS2;
|
||||||
|
physicsMS2 = TempPhysicsMS2;
|
||||||
|
|
||||||
if (m_frame % m_update_entitymovement == 0)
|
if (m_frame % m_update_entitymovement == 0)
|
||||||
m_sceneGraph.UpdateScenePresenceMovement();
|
m_sceneGraph.UpdateScenePresenceMovement();
|
||||||
|
|
||||||
physicsMS = Environment.TickCount;
|
int TempPhysicsMS = Environment.TickCount;
|
||||||
if (m_frame % m_update_physics == 0)
|
if (m_frame % m_update_physics == 0)
|
||||||
{
|
{
|
||||||
if (m_physics_enabled)
|
if (m_physics_enabled)
|
||||||
|
@ -1062,30 +1079,56 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (SynchronizeScene != null)
|
if (SynchronizeScene != null)
|
||||||
SynchronizeScene(this);
|
SynchronizeScene(this);
|
||||||
}
|
}
|
||||||
physicsMS = Environment.TickCount - physicsMS;
|
TempPhysicsMS = Environment.TickCount - TempPhysicsMS;
|
||||||
physicsMS += physicsMS2;
|
physicsMS = TempPhysicsMS;
|
||||||
|
|
||||||
// Delete temp-on-rez stuff
|
// Delete temp-on-rez stuff
|
||||||
if (m_frame % m_update_backup == 0)
|
if (m_frame % m_update_backup == 0)
|
||||||
|
{
|
||||||
|
int tozMS = Environment.TickCount;
|
||||||
CleanTempObjects();
|
CleanTempObjects();
|
||||||
|
tozMS -= Environment.TickCount;
|
||||||
|
tempOnRezMS = tozMS;
|
||||||
|
}
|
||||||
|
|
||||||
if (RegionStatus != RegionStatus.SlaveScene)
|
if (RegionStatus != RegionStatus.SlaveScene)
|
||||||
{
|
{
|
||||||
if (m_frame % m_update_events == 0)
|
if (m_frame % m_update_events == 0)
|
||||||
|
{
|
||||||
|
int evMS = Environment.TickCount;
|
||||||
UpdateEvents();
|
UpdateEvents();
|
||||||
|
evMS -= Environment.TickCount;
|
||||||
|
eventMS = evMS;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_frame % m_update_backup == 0)
|
if (m_frame % m_update_backup == 0)
|
||||||
|
{
|
||||||
|
int backMS = Environment.TickCount;
|
||||||
UpdateStorageBackup();
|
UpdateStorageBackup();
|
||||||
|
backMS -= Environment.TickCount;
|
||||||
|
backupMS = backMS;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_frame % m_update_terrain == 0)
|
if (m_frame % m_update_terrain == 0)
|
||||||
|
{
|
||||||
|
int terMS = Environment.TickCount;
|
||||||
UpdateTerrain();
|
UpdateTerrain();
|
||||||
|
terMS -= Environment.TickCount;
|
||||||
|
terrainMS = terMS;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_frame % m_update_land == 0)
|
if (m_frame % m_update_land == 0)
|
||||||
|
{
|
||||||
|
int ldMS = Environment.TickCount;
|
||||||
UpdateLand();
|
UpdateLand();
|
||||||
|
ldMS -= Environment.TickCount;
|
||||||
|
landMS = ldMS;
|
||||||
|
}
|
||||||
|
|
||||||
int tickCount = Environment.TickCount;
|
int tickCount = Environment.TickCount;
|
||||||
otherMS = tickCount - otherMS;
|
otherMS = tickCount - otherMS;
|
||||||
frameMS = tickCount - frameMS;
|
tmpFrameMS -= tickCount;
|
||||||
|
frameMS = tmpFrameMS;
|
||||||
|
|
||||||
// if (m_frame%m_update_avatars == 0)
|
// if (m_frame%m_update_avatars == 0)
|
||||||
// UpdateInWorldTime();
|
// UpdateInWorldTime();
|
||||||
|
@ -1097,7 +1140,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
StatsReporter.SetObjects(m_sceneGraph.GetTotalObjectsCount());
|
StatsReporter.SetObjects(m_sceneGraph.GetTotalObjectsCount());
|
||||||
StatsReporter.SetActiveObjects(m_sceneGraph.GetActiveObjectsCount());
|
StatsReporter.SetActiveObjects(m_sceneGraph.GetActiveObjectsCount());
|
||||||
StatsReporter.addFrameMS(frameMS);
|
StatsReporter.addFrameMS(frameMS);
|
||||||
StatsReporter.addPhysicsMS(physicsMS);
|
StatsReporter.addPhysicsMS(physicsMS + physicsMS2);
|
||||||
StatsReporter.addOtherMS(otherMS);
|
StatsReporter.addOtherMS(otherMS);
|
||||||
StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount());
|
StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount());
|
||||||
StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS());
|
StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS());
|
||||||
|
|
Loading…
Reference in New Issue