From 042c9ed4d82e4389ec929f5438e82defad251235 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sun, 25 May 2008 11:22:05 +0000 Subject: * Adds Top Colliders when using ODE. Access it from the estate tools/debug tab. --- OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'OpenSim/Region/Physics/OdePlugin/OdePlugin.cs') diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index fef0c4e..e43a1ac 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs @@ -555,6 +555,13 @@ namespace OpenSim.Region.Physics.OdePlugin } float max_collision_depth = 0f; + if (p1.CollisionScore + count >= float.MaxValue) + p1.CollisionScore = 0; + p1.CollisionScore += count; + + if (p2.CollisionScore + count >= float.MaxValue) + p2.CollisionScore = 0; + p2.CollisionScore += count; for (int i = 0; i < count; i++) { @@ -585,6 +592,7 @@ namespace OpenSim.Region.Physics.OdePlugin p2.CollidingGround = true; break; } + // we don't want prim or avatar to explode @@ -2162,5 +2170,27 @@ namespace OpenSim.Region.Physics.OdePlugin //d.CloseODE(); } } + public override Dictionary GetTopColliders() + { + Dictionary returncolliders = new Dictionary(); + int cnt = 0; + lock (_prims) + { + foreach (OdePrim prm in _prims) + { + if (prm.CollisionScore > 0) + { + returncolliders.Add(prm.m_localID, prm.CollisionScore); + cnt++; + prm.CollisionScore = 0f; + if (cnt > 25) + { + break; + } + } + } + } + return returncolliders; + } } } -- cgit v1.1