Justin Clark-Casey (justincc)
5f44be99ef
Add avatar and prim update milliseconds per frame optional stats
2012-06-01 02:25:42 +01:00
Justin Clark-Casey (justincc)
5cc9b820e5
Add option native step frame ms stat
2012-06-01 01:58:28 +01:00
Justin Clark-Casey (justincc)
f2c8c7a7b8
Add total ODE frame time optional stat, as a sanity check on the main scene physics stat
2012-06-01 01:37:19 +01:00
Justin Clark-Casey (justincc)
8333b928fa
Break down native ODE collision frame time stat into native space collision and geom collision stats
2012-06-01 01:27:19 +01:00
Justin Clark-Casey (justincc)
c33c8db825
Rename new collision stats to 'contacts' - there are/can be multiple contacts per collision and this is what is actually being measured.
2012-06-01 01:15:27 +01:00
Justin Clark-Casey (justincc)
e1f8d2adb0
Stop adding an unnecessary duplicate _perloopcontact if the avatar is standing on a prim.
...
This has already been added earlier on in the method.
2012-06-01 01:12:30 +01:00
Justin Clark-Casey (justincc)
8301f7b17f
minor: comment out currently unused OdeScene.sCollisionData
2012-06-01 00:57:55 +01:00
Justin Clark-Casey (justincc)
93fa9e8991
Add ODE avatar and prim collision numbers if extra stats collection is enabled.
2012-06-01 00:56:13 +01:00
Justin Clark-Casey (justincc)
878b67b333
Fix OdeScene.GetTopColliders() to return the top 25 colliders rather than the first 25 that had non-zero collision scores.
...
Also zeros collisions scores on all prims after report collection, not just the top 25.
As before, this collision scores are only reset after a report is requested, which may give unrealistic numbers on the first request.
So to see more realistic scores, ignore the first report and then refresh the request after a couple of seconds or so.
2012-06-01 00:26:11 +01:00
Justin Clark-Casey (justincc)
0b02a4d42e
Add an optional mechanism for physics modules to collect and return arbitrary stats.
...
If active, the physics module can return arbitrary stat counters that can be seen via the MonitoringModule
(http://opensimulator.org/wiki/Monitoring_Module )
This is only active in OdeScene if collect_stats = true in [ODEPhysicsSettings].
This patch allows OdeScene to collect elapsed time information for calls to the ODE native collision methods to assess what proportion of time this takes compared to total physics processing.
This data is returned as ODENativeCollisionFrameMS in the monitoring module, updated every 3 seconds.
The performance effect of collecting stats is probably extremely minor, dwarfed by the rest of the physics code.
2012-05-31 01:52:26 +01:00
Justin Clark-Casey (justincc)
ae2b8f7007
Comment out spurious Body != IntPtr.Zero code after disableBody(), since disableBody() sets Body == IntPtr.Zero on all code paths.
2012-04-21 03:42:54 +01:00
Justin Clark-Casey (justincc)
86bd287b53
refactor: precalculate the fixed movement factor for avatar tilting (sqrt(2)) rather than doing it multiple times on every move.
2012-03-20 20:39:33 +00:00
Justin Clark-Casey (justincc)
5f2a65c976
refactor: Eliminate unnecessary duplicate avCapsuleTilted
2012-03-20 20:28:58 +00:00
Justin Clark-Casey (justincc)
b92b9228ef
correct the default avatar_terminal_velocity value that I accidentally left in whilst testing
2012-02-11 02:29:07 +00:00
Justin Clark-Casey (justincc)
f49897a419
Clamp ODE character velocity. Make ODE falling character 54m/s by default.
...
If velocity reaches 256 in any vector then bad things happen with ODE, so we now clamp this value.
In addition, a falling avatar is clamped by default at 54 m/s, which is the same as a falling skydiver.
This also appears to be the value used on the linden lab grid.
This should resolve http://opensimulator.org/mantis/view.php?id=5882
2012-02-11 02:28:40 +00:00
Justin Clark-Casey (justincc)
e20cf3789b
Serialize calls to ODE Collide() function across OdeScene instances to prevent ODE crashes on simulators running more than one region.
...
It turns out that calls to Collide() are not thread-safe even for objects in different ODE physics worlds due to ODE static caches.
For simulators running multiple regions, not serializing calls from different scene loops will sooner or later cause OpenSim to crash with a native stack trace referencing OBBCollider.
This affects the default OPCODE collider but not GIMPACT. However, GIMPACT fails for other reasons under some current simulator loads.
ODE provides a thread local storage option, but as of ODE r1755 (and r1840) DLLs compiled with this crash OpenSim immediately.
2012-01-25 19:31:50 +00:00
Justin Clark-Casey (justincc)
8b035dc3c7
Restrict accessible of ODECharacter Shell and Body. Add method doc and some error log lines.
2012-01-24 18:46:24 +00:00
Justin Clark-Casey (justincc)
014a86c26b
Adding commented out log messages and some minor formatting for future bug hunting. No functional changes.
2012-01-02 19:46:30 +00:00
Justin Clark-Casey (justincc)
790ca65c84
Align default ODE_STEPSIZE with that already used through OpenSimDefaults.ini
2011-12-22 20:22:15 +00:00
Diva Canto
dd69c9fd20
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
2011-12-20 09:53:05 -08:00
Diva Canto
25cbba9bca
Fixed bug of avie going under the terrain when crossing regions in certain directions. This was a 1-off bug: the terrain was being placed in 127, 127 resulting in a bounding box if -2, 256. I placed it in 128, 128 resulting in a bounding box of -1, 257.
2011-12-20 09:43:39 -08:00
Justin Clark-Casey (justincc)
5d79f857b0
Comment out accidentally left in "Adding physics prim" log message
2011-12-16 20:54:28 +00:00
Justin Clark-Casey (justincc)
937c06db54
Code cleanup related to ScenePresence.PhysicsActor and OdeScene/OdeCharacter
...
Stop hiding RemoveAvatar failure, add log messages when characters are removed through defects or re-added unexpectedly.
Add commented out log lines for future use.
Use automatic property for PhysicsActor for better code readability and simplicity
2011-12-15 21:57:22 +00:00
Justin Clark-Casey (justincc)
6f2d80cc93
minor: add some currently commented log lines for use in debugging
2011-12-14 21:27:47 +00:00
Justin Clark-Casey (justincc)
e830a77860
Simplify some manipulation of _taintedActors in OdeScene
2011-12-14 18:33:44 +00:00
Justin Clark-Casey (justincc)
a110a7bd6a
Eliminate _taintedPrimsH and _taintedPrimsL (and _taintedPrimLock) in favour of just a _taintedPrims HashSet.
...
There's no point maintaining a list because any pending taint operations are all carried out in the same call anyway.
2011-12-14 18:03:25 +00:00
Justin Clark-Casey (justincc)
4dfd2c7d47
minor: remove pointless comment from OdeScene.cs
2011-12-12 19:31:50 +00:00
Justin Clark-Casey (justincc)
b785f204ce
remove some mono compiler warnings
2011-11-25 22:19:57 +00:00
Justin Clark-Casey (justincc)
b56410285b
Log error if we attempt to add/remove an OdeCharacter from the _characters list inappropriately
2011-11-22 22:46:25 +00:00
Justin Clark-Casey (justincc)
ace4324e75
Stop removing actor from the hash maps in OdeScene.RemoveCharacter() since this is now being down in OdeCharacter.DestroyOdeStructures()
2011-11-22 22:37:06 +00:00
Justin Clark-Casey (justincc)
af90b52731
Comment out uncalled OdeScene.UnCombine()
2011-11-22 22:28:46 +00:00
Justin Clark-Casey (justincc)
daf99f8c0a
slightly simplify OdeScene.Simulate() by removing bool processtaints, since we can inspect count of taint lists instead.
...
also groups OdeCharacter.CreateOdeStructures() and DestroyOdeStructures() together
2011-11-22 21:51:00 +00:00
Justin Clark-Casey (justincc)
c4e4a29478
Slightly improve "Unable to space collide" logging message, though I don't think I've ever seen this.
2011-11-21 21:31:26 +00:00
Justin Clark-Casey (justincc)
4ddff7eb0f
Get rid of OdeCharacter != null checks since OdeScene._characters can never contain a null character.
...
Ignoring the ancient code glyphs not to do this....
2011-11-21 21:29:56 +00:00
Justin Clark-Casey (justincc)
82dc7886fc
remove unnecessary OdeScene._activeprims locking. Code is single-threaded
2011-11-21 21:15:15 +00:00
Justin Clark-Casey (justincc)
7480f2fd0e
Restore defects list. In hindsight, the reason for this is becuase we can't remove the character whilst iterating over the list.
...
This commit also removes locking on OdeScene._characters since code is single threaded
2011-11-21 21:04:24 +00:00
Justin Clark-Casey (justincc)
546259b2ff
simplify operation of OdeScene._perloopContact
2011-11-21 20:30:37 +00:00
Justin Clark-Casey (justincc)
25d9001de1
don't bother locking OdeScene._perloopContact in single threaded code
2011-11-21 20:17:36 +00:00
Justin Clark-Casey (justincc)
e33b0fa35b
don't lock OdeScene.contacts since only ever accessed by a single thread
2011-11-21 20:12:04 +00:00
Justin Clark-Casey (justincc)
225b925f4e
Comment out calls to OdeScene.waitForSpaceUnlock() since that method does nothing right now
2011-11-21 19:48:31 +00:00
Justin Clark-Casey (justincc)
54789706f4
Reduce complexity of OdeScene.Simulate() by fully removing bad characters at point of detection rather than later on.
2011-11-21 19:45:22 +00:00
Justin Clark-Casey (justincc)
3becda919e
move geom/actor map maintenance into DestroyODEStructures()/AvatarGeomAndBodyCreation().
...
This saves us having to do it separately when a character capsule size is changed
2011-11-21 19:31:29 +00:00
Justin Clark-Casey (justincc)
4faac1f090
When changing avatar size in ODE, remove the old actor from the name and actor maps
2011-11-21 19:06:53 +00:00
Justin Clark-Casey (justincc)
898904d83d
When an ODECharacter is removed (e.g. when an avatar leaves a scene), remove the actor reference in OdeScene.actor_name_map rather than leaving it dangling.
...
This also largely centralizes adds/removes in OdeScene.AddCharacter()/RemoveCharacter()
2011-11-21 18:27:41 +00:00
Justin Clark-Casey (justincc)
4485007fce
Instead of generating a new list for bad characters on every physics pass, keep reusing the same list.
2011-11-21 17:04:54 +00:00
Justin Clark-Casey (justincc)
b6d83e9c0f
Stop OdePrim and OdeCharacter insanely overriding set LocalID to set their own private m_localID property but leaving get to return the then unset PhysicsActor.LocalId!
...
Instead, just have both subclasses use the PhysicsActor.LocalID property.
This restores collision functionality that fell away in 45c7789
yesterday
2011-11-16 23:01:59 +00:00
Justin Clark-Casey (justincc)
e16d7fe1da
Instead of having scene add/remove collision events directly to the OdeScene collision event dictionary, marshall them via a change dictionary first.
...
This is to avoid a complicated tri-thread deadlock on region crossing for avatars with attachments, where
1) XEngine starting up scripts can lock XEngine.m_Scripts and then try to lock OdeScene._collisionEventPrim while starting up a script due to avatar border crossing
2) An existing collision event will lock OdeScene._collisionEventPrim and then try to lock SP.m_attachments while trying to send the collision event to attachments
3) The avatar still entering the region will lock SP.m_attachments and then try to lock m_Scripts to start more attachment scripts.
2011-11-15 20:02:09 +00:00
Justin Clark-Casey (justincc)
45c7789b54
use a more efficient dictionary in OdeScene._collisionEventPrim rather than a list
2011-11-15 19:42:33 +00:00
Justin Clark-Casey (justincc)
7b6b36cee9
Fix bug where collision event listeners were not removed once the listener had gone away.
...
This was causing continuous use of temporary memory even when all avatars had left the scene.
Memory does leak but it does cause more calls to the garbage collector, which would pause the scene thread for a very short while during collection.
2011-10-25 21:40:51 +01:00
Justin Clark-Casey (justincc)
1fbb379536
minor: rename a parameter in OdeScene.Simulate() from actor -> prim since it's an OdePrim
2011-10-25 21:15:37 +01:00