diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 174ce0a4ae..0d789289c4 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -1,172 +1,173 @@
-The following people have contributed to OpenSim (Thank you
-for your effort!)
-
-Add your name in here if you have committed to OpenSim
-
-= Current OpenSim Developers (in very rough order of appearance) =
-These folks represent the current core team for OpenSim, and are the
-people that make the day to day of OpenSim happen.
-
-* MW (Tribal Media AB)
-* Adam Frisby (DeepThink Pty Ltd)
-* MingChen (DeepThink Pty Ltd)
-* lbsa71 (Tribal Media AB)
-* Sean Dague / sdague (IBM)
-* Tedd
-* justincc
-* Teravus (w3z)
-* Johan Berntsson (3Di)
-* Ckrinke (Charles Krinke)
-* chi11ken (Genkii)
-* adjohn (Genkii)
-* Dr Scofield aka Dirk Husemann (IBM Research - Zurich)
-* dahlia
-* mikem (3Di)
-* Melanie Thielker
-* Homer_Horwitz
-* idb (Ian Brown)
-* Diva (Crista Lopes, University of California, Irvine)
-* nlin (3Di)
-* Arthur Rodrigo S Valadares (IBM)
-
-
-= Past Open Sim Developers =
-These folks are alumns of the OpenSim core group, but are now
-currently not active. Their great contributions helped get us to
-where we are today.
-
-* Gareth
-* Andy-
-* MorphW
-* CW
-* Babblefrog
-* Danx0r
-* Dalien
-* Darok
-* Alondria
-
-
-= Additional OpenSim Contributors =
-These folks have contributed code patches to OpenSim to help make it
-what it is today.
-
-* aduffy70
-* A_Biondi
-* alex_carnell
-* Alan Webb (IBM)
-* BigFootAg
-* BlueWall Slade
-* brianw/Sir_Ahzz
-* CharlieO
-* ChrisDown
-* Chris Yeoh (IBM)
-* coyled
-* Daedius
-* Dong Jun Lan (IBM)
-* DoranZemlja
-* daTwitch
-* devalnor-#708
-* dmiles (Daxtron Labs)
-* dslake (Intel)
-* FredoChaplin
-* Gerhard
-* Godfrey
-* Grumly57
-* Ewe Loon
-* Fly-Man
-* Flyte Xevious
-* Imaze Rhiano
-* Intimidated
-* Jeremy Bongio (IBM)
-* jhurliman
-* John R Sohn (XenReborn)
-* jonc
-* Junta Kohime
-* Kayne
-* Kevin Cozens
-* kinoc (Daxtron Labs)
-* Kitto Flora
-* KittyLiu
-* Kurt Taylor (IBM)
-* lulurun
-* M.Igarashi
-* maimedleech
-* Mic Bowman
-* Michelle Argus
-* Michael Cortez (The Flotsam Project, http://osflotsam.org/)
-* Mike Osias (IBM)
-* Mike Pitman (IBM)
-* mikkopa/_someone - RealXtend
-* Mircea Kitsune
-* mpallari
-* nornalbion
-* Omar Vera Ustariz (IBM)
-* openlifegrid.com
-* otakup0pe
-* ralphos
-* RemedyTomm
-* Revolution
-* Richard Alimi (IBM)
-* Rick Alther (IBM)
-* Rob Smart (IBM)
-* rtomita
-* Ruud Lathorp
-* SachaMagne
-* Salahzar Stenvaag
-* sempuki
-* Snoopy
-* Strawberry Fride
-* tglion
-* tlaukkan/Tommil (Tommi S. E. Laukkanen, Bubble Cloud)
-* tyre
-* Vytek
-* webmage (IBM)
-* Xantor
-* Y. Nitta
-* YZh
-* Zackary Geers aka Kunnis Basiat
-* Zha Ewry
-
-
-= LSL Devs =
-
-* Alondria
-* CharlieO
-* Tedd
-* Melanie Thielker
-
-
-= Testers =
-
-* Ai Austin
-* CharlieO (LSL)
-* Ckrinke
-* openlifegrid.com
-
-
-This software uses components from the following developers:
-* Sleepycat Software (Berkeley DB)
-* SQLite (Public Domain)
-* XmlRpcCS (http://xmlrpccs.sf.net/)
-* MySQL, Inc. (MySQL Connector/NET)
-* NUnit (http://www.nunit.org)
-* AGEIA Inc. (PhysX)
-* Russel L. Smith (ODE)
-* Prebuild (http://sourceforge.net/projects/dnpb/)
-* LibOpenMetaverse (http://lib.openmetaverse.org/)
-* DotNetOpenMail v0.5.8b (http://dotnetopenmail.sourceforge.net)
-* Prototype JavaScript Framework ajax (http://www.prototypejs.org/)
-* C5 GENERIC COLLECTION LIBRARY FOR C#/CLI
-* Nini (http://nini.sourceforge.net/)
-* log4net (http://logging.apache.org/log4net/)
-* GlynnTucker.Cache (http://gtcache.sourceforge.net/)
-* NDesk.Options 0.2.1 (http://www.ndesk.org/Options)
-
-Some plugins are based on Cable Beach
-Cable Beach is Copyright (c) 2008 Intel Corporation
-see http://forge.opensimulator.org/gf/project/assetserver/
-
-In addition, we would like to thank:
-* The Mono Project
-* The NANT Developers
-* Microsoft (.NET, MSSQL-Adapters)
+The following people have contributed to OpenSim (Thank you
+for your effort!)
+
+Add your name in here if you have committed to OpenSim
+
+= Current OpenSim Developers (in very rough order of appearance) =
+These folks represent the current core team for OpenSim, and are the
+people that make the day to day of OpenSim happen.
+
+* MW (Tribal Media AB)
+* Adam Frisby (DeepThink Pty Ltd)
+* MingChen (DeepThink Pty Ltd)
+* lbsa71 (Tribal Media AB)
+* Sean Dague / sdague (IBM)
+* Tedd
+* justincc
+* Teravus (w3z)
+* Johan Berntsson (3Di)
+* Ckrinke (Charles Krinke)
+* chi11ken (Genkii)
+* adjohn (Genkii)
+* Dr Scofield aka Dirk Husemann (IBM Research - Zurich)
+* dahlia
+* mikem (3Di)
+* Melanie Thielker
+* Homer_Horwitz
+* idb (Ian Brown)
+* Diva (Crista Lopes, University of California, Irvine)
+* nlin (3Di)
+* Arthur Rodrigo S Valadares (IBM)
+
+
+= Past Open Sim Developers =
+These folks are alumns of the OpenSim core group, but are now
+currently not active. Their great contributions helped get us to
+where we are today.
+
+* Gareth
+* Andy-
+* MorphW
+* CW
+* Babblefrog
+* Danx0r
+* Dalien
+* Darok
+* Alondria
+
+
+= Additional OpenSim Contributors =
+These folks have contributed code patches to OpenSim to help make it
+what it is today.
+
+* aduffy70
+* A_Biondi
+* alex_carnell
+* Alan Webb (IBM)
+* BigFootAg
+* BlueWall Slade
+* brianw/Sir_Ahzz
+* CharlieO
+* ChrisDown
+* Chris Yeoh (IBM)
+* coyled
+* Daedius
+* Dong Jun Lan (IBM)
+* DoranZemlja
+* daTwitch
+* devalnor-#708
+* dmiles (Daxtron Labs)
+* dslake (Intel)
+* FredoChaplin
+* Gerhard
+* Godfrey
+* Grumly57
+* Ewe Loon
+* Fly-Man
+* Flyte Xevious
+* Imaze Rhiano
+* Intimidated
+* Jeremy Bongio (IBM)
+* jhurliman
+* John R Sohn (XenReborn)
+* jonc
+* Junta Kohime
+* Kayne
+* Kevin Cozens
+* kinoc (Daxtron Labs)
+* Kitto Flora
+* KittyLiu
+* Kurt Taylor (IBM)
+* lulurun
+* M.Igarashi
+* maimedleech
+* Mic Bowman
+* Michelle Argus
+* Michael Cortez (The Flotsam Project, http://osflotsam.org/)
+* Mike Osias (IBM)
+* Mike Pitman (IBM)
+* mikkopa/_someone - RealXtend
+* Misterblue (Intel)
+* Mircea Kitsune
+* mpallari
+* nornalbion
+* Omar Vera Ustariz (IBM)
+* openlifegrid.com
+* otakup0pe
+* ralphos
+* RemedyTomm
+* Revolution
+* Richard Alimi (IBM)
+* Rick Alther (IBM)
+* Rob Smart (IBM)
+* rtomita
+* Ruud Lathorp
+* SachaMagne
+* Salahzar Stenvaag
+* sempuki
+* Snoopy
+* Strawberry Fride
+* tglion
+* tlaukkan/Tommil (Tommi S. E. Laukkanen, Bubble Cloud)
+* tyre
+* Vytek
+* webmage (IBM)
+* Xantor
+* Y. Nitta
+* YZh
+* Zackary Geers aka Kunnis Basiat
+* Zha Ewry
+
+
+= LSL Devs =
+
+* Alondria
+* CharlieO
+* Tedd
+* Melanie Thielker
+
+
+= Testers =
+
+* Ai Austin
+* CharlieO (LSL)
+* Ckrinke
+* openlifegrid.com
+
+
+This software uses components from the following developers:
+* Sleepycat Software (Berkeley DB)
+* SQLite (Public Domain)
+* XmlRpcCS (http://xmlrpccs.sf.net/)
+* MySQL, Inc. (MySQL Connector/NET)
+* NUnit (http://www.nunit.org)
+* AGEIA Inc. (PhysX)
+* Russel L. Smith (ODE)
+* Prebuild (http://sourceforge.net/projects/dnpb/)
+* LibOpenMetaverse (http://lib.openmetaverse.org/)
+* DotNetOpenMail v0.5.8b (http://dotnetopenmail.sourceforge.net)
+* Prototype JavaScript Framework ajax (http://www.prototypejs.org/)
+* C5 GENERIC COLLECTION LIBRARY FOR C#/CLI
+* Nini (http://nini.sourceforge.net/)
+* log4net (http://logging.apache.org/log4net/)
+* GlynnTucker.Cache (http://gtcache.sourceforge.net/)
+* NDesk.Options 0.2.1 (http://www.ndesk.org/Options)
+
+Some plugins are based on Cable Beach
+Cable Beach is Copyright (c) 2008 Intel Corporation
+see http://forge.opensimulator.org/gf/project/assetserver/
+
+In addition, we would like to thank:
+* The Mono Project
+* The NANT Developers
+* Microsoft (.NET, MSSQL-Adapters)
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 87ba5a8168..a459f8dfb9 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -1389,6 +1389,30 @@ namespace OpenSim.Framework
return null;
}
- #endregion FireAndForget Threading Pattern
+ #endregion FireAndForget Threading Pattern
+ ///
+ /// Environment.TickCount is an int but it counts all 32 bits so it goes positive
+ /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap
+ /// for the callers.
+ /// This trims it to a 12 day interval so don't let your frame time get too long.
+ ///
+ ///
+ public static Int32 EnvironmentTickCount()
+ {
+ return Environment.TickCount & EnvironmentTickCountMask;
+ }
+ const Int32 EnvironmentTickCountMask = 0x3fffffff;
+
+ ///
+ /// Environment.TickCount is an int but it counts all 32 bits so it goes positive
+ /// and negative every 24.9 days. Subtracts the passed value (previously fetched by
+ /// 'EnvironmentTickCount()') and accounts for any wrapping.
+ ///
+ /// subtraction of passed prevValue from current Environment.TickCount
+ public static Int32 EnvironmentTickCountSubtract(Int32 prevValue)
+ {
+ Int32 diff = EnvironmentTickCount() - prevValue;
+ return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1);
+ }
}
}
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs
index 9856a1cce4..1e5f15a3b2 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs
@@ -28,6 +28,7 @@
using System;
using System.Collections.Generic;
using System.Net;
+using System.Threading;
using log4net;
using OpenSim.Framework;
using OpenMetaverse;
@@ -429,7 +430,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Send the packet
m_udpServer.SendPacketFinal(nextPacket);
m_nextPackets[i] = null;
- packetSent = true;
+ packetSent = true;
+ this.PacketsSent++;
}
}
else
@@ -446,6 +448,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Send the packet
m_udpServer.SendPacketFinal(packet);
packetSent = true;
+ this.PacketsSent++;
}
else
{
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index fbabb5c339..a3f3d8f128 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -310,7 +310,7 @@ namespace OpenSim.Region.Framework.Scenes
private Thread HeartbeatThread;
private volatile bool shuttingdown;
- private int m_lastUpdate = Environment.TickCount;
+ private int m_lastUpdate;
private bool m_firstHeartbeat = true;
private UpdatePrioritizationSchemes m_update_prioritization_scheme = UpdatePrioritizationSchemes.Time;
@@ -526,6 +526,7 @@ namespace OpenSim.Region.Framework.Scenes
m_regionHandle = m_regInfo.RegionHandle;
m_regionName = m_regInfo.RegionName;
m_datastore = m_regInfo.DataStore;
+ m_lastUpdate = Util.EnvironmentTickCount();
m_physicalPrim = physicalPrim;
m_seeIntoRegionFromNeighbor = SeeIntoRegionFromNeighbor;
@@ -735,6 +736,8 @@ namespace OpenSim.Region.Framework.Scenes
m_regInfo = regInfo;
m_eventManager = new EventManager();
+
+ m_lastUpdate = Util.EnvironmentTickCount();
}
#endregion
@@ -1089,7 +1092,7 @@ namespace OpenSim.Region.Framework.Scenes
HeartbeatThread.Abort();
HeartbeatThread = null;
}
- m_lastUpdate = Environment.TickCount;
+ m_lastUpdate = Util.EnvironmentTickCount();
HeartbeatThread = Watchdog.StartThread(Heartbeat, "Heartbeat for region " + RegionInfo.RegionName, ThreadPriority.Normal, false);
}
@@ -1130,7 +1133,7 @@ namespace OpenSim.Region.Framework.Scenes
{
Update();
- m_lastUpdate = Environment.TickCount;
+ m_lastUpdate = Util.EnvironmentTickCount();
m_firstHeartbeat = false;
}
catch (ThreadAbortException)
@@ -1156,10 +1159,11 @@ namespace OpenSim.Region.Framework.Scenes
while (!shuttingdown)
{
TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate;
- physicsFPS = 0f;
-
- maintc = otherMS = Environment.TickCount;
+ physicsFPS = 0f;
+
+ maintc = Util.EnvironmentTickCount();
int tmpFrameMS = maintc;
+ tempOnRezMS = eventMS = backupMS = terrainMS = landMS = 0;
// Increment the frame counter
++m_frame;
@@ -1179,74 +1183,65 @@ namespace OpenSim.Region.Framework.Scenes
if (m_frame % m_update_presences == 0)
m_sceneGraph.UpdatePresences();
- int TempPhysicsMS2 = Environment.TickCount;
+ int tmpPhysicsMS2 = Util.EnvironmentTickCount();
if ((m_frame % m_update_physics == 0) && m_physics_enabled)
m_sceneGraph.UpdatePreparePhysics();
- TempPhysicsMS2 = Environment.TickCount - TempPhysicsMS2;
- physicsMS2 = TempPhysicsMS2;
+ physicsMS2 = Util.EnvironmentTickCountSubtract(tmpPhysicsMS2);
if (m_frame % m_update_entitymovement == 0)
- m_sceneGraph.UpdateScenePresenceMovement();
-
- int TempPhysicsMS = Environment.TickCount;
+ m_sceneGraph.UpdateScenePresenceMovement();
+
+ int tmpPhysicsMS = Util.EnvironmentTickCount();
if (m_frame % m_update_physics == 0)
{
if (m_physics_enabled)
physicsFPS = m_sceneGraph.UpdatePhysics(Math.Max(SinceLastFrame.TotalSeconds, m_timespan));
if (SynchronizeScene != null)
SynchronizeScene(this);
- }
- TempPhysicsMS = Environment.TickCount - TempPhysicsMS;
- physicsMS = TempPhysicsMS;
+ }
+ physicsMS = Util.EnvironmentTickCountSubtract(tmpPhysicsMS);
// Delete temp-on-rez stuff
if (m_frame % m_update_backup == 0)
- {
- int tozMS = Environment.TickCount;
- CleanTempObjects();
- tozMS -= Environment.TickCount;
- tempOnRezMS = tozMS;
+ {
+ int tmpTempOnRezMS = Util.EnvironmentTickCount();
+ CleanTempObjects();
+ tempOnRezMS = Util.EnvironmentTickCountSubtract(tmpTempOnRezMS);
}
if (RegionStatus != RegionStatus.SlaveScene)
{
if (m_frame % m_update_events == 0)
- {
- int evMS = Environment.TickCount;
- UpdateEvents();
- evMS -= Environment.TickCount;
- eventMS = evMS;
+ {
+ int evMS = Util.EnvironmentTickCount();
+ UpdateEvents();
+ eventMS = Util.EnvironmentTickCountSubtract(evMS); ;
}
if (m_frame % m_update_backup == 0)
- {
- int backMS = Environment.TickCount;
- UpdateStorageBackup();
- backMS -= Environment.TickCount;
- backupMS = backMS;
+ {
+ int backMS = Util.EnvironmentTickCount();
+ UpdateStorageBackup();
+ backupMS = Util.EnvironmentTickCountSubtract(backMS);
}
if (m_frame % m_update_terrain == 0)
- {
- int terMS = Environment.TickCount;
- UpdateTerrain();
- terMS -= Environment.TickCount;
- terrainMS = terMS;
+ {
+ int terMS = Util.EnvironmentTickCount();
+ UpdateTerrain();
+ terrainMS = Util.EnvironmentTickCountSubtract(terMS);
}
if (m_frame % m_update_land == 0)
- {
- int ldMS = Environment.TickCount;
- UpdateLand();
- ldMS -= Environment.TickCount;
- landMS = ldMS;
- }
-
- int tickCount = Environment.TickCount;
- otherMS = tickCount - otherMS;
- tmpFrameMS -= tickCount;
- frameMS = tmpFrameMS;
- lastCompletedFrame = tickCount;
+ {
+ int ldMS = Util.EnvironmentTickCount();
+ UpdateLand();
+ landMS = Util.EnvironmentTickCountSubtract(ldMS);
+ }
+
+ frameMS = Util.EnvironmentTickCountSubtract(tmpFrameMS);
+ otherMS = tempOnRezMS + eventMS + backupMS + terrainMS + landMS;
+ lastCompletedFrame = Util.EnvironmentTickCount();
// if (m_frame%m_update_avatars == 0)
// UpdateInWorldTime();
@@ -1298,9 +1293,9 @@ namespace OpenSim.Region.Framework.Scenes
finally
{
m_lastupdate = DateTime.UtcNow;
- }
-
- maintc = Environment.TickCount - maintc;
+ }
+
+ maintc = Util.EnvironmentTickCountSubtract(maintc);
maintc = (int)(m_timespan * 1000) - maintc;
if ((maintc < (m_timespan * 1000)) && maintc > 0)
@@ -1311,6 +1306,7 @@ namespace OpenSim.Region.Framework.Scenes
}
}
+
public void AddGroupTarget(SceneObjectGroup grp)
{
@@ -2585,9 +2581,9 @@ namespace OpenSim.Region.Framework.Scenes
sp.IsChildAgent = false;
Util.FireAndForget(delegate(object o) { sp.RezAttachments(); });
}
- }
-
- m_LastLogin = Environment.TickCount;
+ }
+
+ m_LastLogin = Util.EnvironmentTickCount();
EventManager.TriggerOnNewClient(client);
}
@@ -4654,16 +4650,16 @@ namespace OpenSim.Region.Framework.Scenes
// 3 = We have seen a new user enter within the past 4 minutes
// which can be seen as positive confirmation of sim health
//
- int health=1; // Start at 1, means we're up
-
- if ((Environment.TickCount - m_lastUpdate) < 1000)
+ int health=1; // Start at 1, means we're up
+
+ if ((Util.EnvironmentTickCountSubtract(m_lastUpdate)) < 1000)
health+=1;
else
return health;
// A login in the last 4 mins? We can't be doing too badly
- //
- if ((Environment.TickCount - m_LastLogin) < 240000)
+ //
+ if ((Util.EnvironmentTickCountSubtract(m_LastLogin)) < 240000)
health++;
else
return health;
@@ -4859,9 +4855,9 @@ namespace OpenSim.Region.Framework.Scenes
private void CheckHeartbeat()
{
if (m_firstHeartbeat)
- return;
-
- if (System.Environment.TickCount - m_lastUpdate > 2000)
+ return;
+
+ if (Util.EnvironmentTickCountSubtract(m_lastUpdate) > 2000)
StartTimer();
}
}
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 5604e3d3f0..bcad3351bd 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -755,13 +755,37 @@ namespace OpenSim.Region.Framework.Scenes
///
public void SendPrimUpdates()
{
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
m_sceneViewer.SendPrimUpdates();
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
}
+ ///
+ /// Environment.TickCount is an int but it counts all 32 bits so it goes positive
+ /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap
+ /// for the callers.
+ /// This trims it to a 12 day interval so don't let your frame time get too long.
+ ///
+ ///
+ const Int32 EnvironmentTickCountMask = 0x3fffffff;
+ private static Int32 EnvironmentTickCount() {
+ return Environment.TickCount & EnvironmentTickCountMask;
+ }
+
+ ///
+ /// Environment.TickCount is an int but it counts all 32 bits so it goes positive
+ /// and negative every 24.9 days. Subtracts the passed value (previously fetched by
+ /// 'EnvironmentTickCount()') and accounts for any wrapping.
+ ///
+ /// subtraction of passed prevValue from current Environment.TickCount
+ private static Int32 EnvironmentTickCountSubtract(Int32 prevValue) {
+ Int32 diff = EnvironmentTickCount() - prevValue;
+ return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1);
+ }
+
+
#region Status Methods
///
@@ -1148,7 +1172,7 @@ namespace OpenSim.Region.Framework.Scenes
// return;
//}
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
++m_movementUpdateCount;
if (m_movementUpdateCount < 1)
@@ -1464,7 +1488,7 @@ namespace OpenSim.Region.Framework.Scenes
m_scene.EventManager.TriggerOnClientMovement(this);
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
}
public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client)
@@ -1924,7 +1948,7 @@ namespace OpenSim.Region.Framework.Scenes
return;
}
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
Rotation = rotation;
Vector3 direc = vec * rotation;
@@ -1966,7 +1990,7 @@ namespace OpenSim.Region.Framework.Scenes
// TODO: Add the force instead of only setting it to support multiple forces per frame?
m_forceToApply = direc;
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
}
#endregion
@@ -2032,7 +2056,7 @@ namespace OpenSim.Region.Framework.Scenes
// server.
if (remoteClient.IsActive)
{
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
PhysicsActor actor = m_physicsActor;
Vector3 velocity = (actor != null) ? actor.Velocity : Vector3.Zero;
@@ -2045,7 +2069,7 @@ namespace OpenSim.Region.Framework.Scenes
remoteClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_rootRegionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId,
pos, velocity, Vector3.Zero, m_bodyRot, CollisionPlane, m_uuid, null, GetUpdatePriority(remoteClient)));
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
m_scene.StatsReporter.AddAgentUpdates(1);
}
}
@@ -2055,11 +2079,11 @@ namespace OpenSim.Region.Framework.Scenes
///
public void SendTerseUpdateToAllClients()
{
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
m_scene.ForEachClient(SendTerseUpdateToClient);
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
}
public void SendCoarseLocations()
@@ -2079,7 +2103,7 @@ namespace OpenSim.Region.Framework.Scenes
public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p)
{
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
List CoarseLocations = new List();
List AvatarUUIDs = new List();
@@ -2115,7 +2139,7 @@ namespace OpenSim.Region.Framework.Scenes
m_controllingClient.SendCoarseLocationUpdate(AvatarUUIDs, CoarseLocations);
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
}
public void CoarseLocationChange()
@@ -2152,7 +2176,7 @@ namespace OpenSim.Region.Framework.Scenes
///
public void SendInitialFullUpdateToAllClients()
{
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
ScenePresence[] avatars = m_scene.GetScenePresences();
@@ -2178,14 +2202,14 @@ namespace OpenSim.Region.Framework.Scenes
}
m_scene.StatsReporter.AddAgentUpdates(avatars.Length);
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
//Animator.SendAnimPack();
}
public void SendFullUpdateToAllClients()
{
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
// only send update from root agents to other clients; children are only "listening posts"
List avatars = m_scene.GetAvatars();
@@ -2195,7 +2219,7 @@ namespace OpenSim.Region.Framework.Scenes
}
m_scene.StatsReporter.AddAgentUpdates(avatars.Count);
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
Animator.SendAnimPack();
}
@@ -2237,7 +2261,7 @@ namespace OpenSim.Region.Framework.Scenes
///
public void SendAppearanceToAllOtherAgents()
{
- m_perfMonMS = Environment.TickCount;
+ m_perfMonMS = EnvironmentTickCount();
m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
{
@@ -2247,7 +2271,7 @@ namespace OpenSim.Region.Framework.Scenes
}
});
- m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
+ m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS));
}
///
diff --git a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
index 3b5455fc34..f92f440117 100644
--- a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
+++ b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
@@ -193,6 +193,9 @@ namespace OpenSim.Region.Framework.Scenes
// / 10 divides the value by the number of times the sim heartbeat runs (10fps)
// Then we divide the whole amount by the amount of seconds pass in between stats updates.
+ // 'statsUpdateFactor' is how often stats packets are sent in seconds. Used below to change
+ // values to X-per-second values.
+
for (int i = 0; i<21;i++)
{
sb[i] = new SimStatsPacket.StatBlock();
@@ -237,7 +240,7 @@ namespace OpenSim.Region.Framework.Scenes
sb[12].StatID = (uint)Stats.OtherMS;
sb[12].StatValue = m_otherMS / statsUpdateFactor;
- sb[13].StatID = (uint)Stats.InPacketsPerSecond;
+ sb[13].StatID = (uint)Stats.InPacketsPerSecond;
sb[13].StatValue = (m_inPacketsPerSecond / statsUpdateFactor);
sb[14].StatID = (uint)Stats.OutPacketsPerSecond;