diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
index e44375b714..859045390c 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
@@ -190,6 +190,11 @@ namespace OpenSim.Region.Physics.OdePlugin
///
public const string ODENativeGeomCollisionFrameMsStatName = "ODENativeGeomCollisionFrameMS";
+ ///
+ /// Time spent in collision processing that is not spent in native space or geom collision code.
+ ///
+ public const string ODEOtherCollisionFrameMsStatName = "ODEOtherCollisionFrameMS";
+
///
/// Stat name for time spent notifying listeners of collisions
///
@@ -3062,7 +3067,11 @@ namespace OpenSim.Region.Physics.OdePlugin
collision_optimized();
if (CollectStats)
- tempTick = Util.EnvironmentTickCount();
+ {
+ tempTick2 = Util.EnvironmentTickCount();
+ m_stats[ODEOtherCollisionFrameMsStatName] += Util.EnvironmentTickCountSubtract(tempTick2, tempTick);
+ tempTick = tempTick2;
+ }
foreach (PhysicsActor obj in _collisionEventPrim.Values)
{
@@ -4210,6 +4219,11 @@ namespace OpenSim.Region.Physics.OdePlugin
InitializeExtraStats();
}
+ returnStats[ODEOtherCollisionFrameMsStatName]
+ = returnStats[ODEOtherCollisionFrameMsStatName]
+ - returnStats[ODENativeSpaceCollisionFrameMsStatName]
+ - returnStats[ODENativeGeomCollisionFrameMsStatName];
+
return returnStats;
}
@@ -4224,6 +4238,7 @@ namespace OpenSim.Region.Physics.OdePlugin
m_stats[ODENativeStepFrameMsStatName] = 0;
m_stats[ODENativeSpaceCollisionFrameMsStatName] = 0;
m_stats[ODENativeGeomCollisionFrameMsStatName] = 0;
+ m_stats[ODEOtherCollisionFrameMsStatName] = 0;
m_stats[ODECollisionNotificationFrameMsStatName] = 0;
m_stats[ODEAvatarContactsStatsName] = 0;
m_stats[ODEPrimContactsStatName] = 0;