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)
6501b1b1bb
refactor: move EventQueueGet path generation into common method. Rename some local variables in line with code conventions. Add commented out EQG log lines for future use.
2012-05-18 00:38:29 +01:00
Justin Clark-Casey (justincc)
b18c8c8e78
Don't eagerly clear frame collision events when physics actors subscribe and unsubscribe from collisions, in order to avoid a race condition.
...
Since this is done directly from ScenePresence, it can lead to a race condition with the simulator loop.
There's no real point doing it anyway since the clear will be done very shortly afterwards by the simulate loop and either there are no events (for a new avatar) or events don't matter (for a departing avatar).
This matches existing behaviour in OdePrim
2012-05-17 23:59:43 +01:00
Justin Clark-Casey (justincc)
c6f30e044b
Restore _parent_scene.actor_name_map[prim_geom] = this; accidentally removed from ODEPrim.SetGeom.
...
This occurred in 7a574be3fd
from Sat 21 Apr 2012.
This should fix collision detection.
Mnay thanks to tglion for the spot and the fix in http://opensimulator.org/mantis/view.php?id=5988
2012-04-24 20:15:10 +01:00
Justin Clark-Casey (justincc)
49ed68e98c
refactor: simply some properties code in BasicPhysicsPlugin
2012-04-22 20:28:12 +01:00
Justin Clark-Casey (justincc)
8205fe79ce
Fix bug where setting phantom on a prim would result in a server log message rather than setting phantom.
...
This was an oversight when removing some race conditions from PhysicsActor setting recently.
Regression tests extended to probe this code path.
Extending regression tests required implementation of a BasicPhysicsPrim (there was none before). However, BasicPhysics plugin is still of no current practical use other than to fill in as a component for other parts of regression testing.
2012-04-22 19:51:51 +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)
f609594595
refactor: Simplify ODEPrim.AddChildPrim() by returning early where appropriate.
2012-04-21 03:23:51 +01:00
Justin Clark-Casey (justincc)
7a574be3fd
Remove redundant prim_geom != IntPtr.Zero checks in ODEPrim.
...
prim_geom == IntPtr.Zero only before a new add prim taint is processed (which is the first taint) or in operations such as scale change which are done in taint or under lock.
Therefore, we can remove these checks which were not consistently applied anyway.
If there is a genuine problem, better to see it quickly in a NullReferenceException than hide the bug.
2012-04-21 00:12:07 +01:00
Justin Clark-Casey (justincc)
566327a948
If a physical prim is manually moved (e.g. by a user) then set the geometry position as well as the body position
...
This is necessary to stop the moved prim snapping back to the original position on deselection if moved only once
This resolves http://opensimulator.org/mantis/view.php?id=5966
2012-04-20 23:24:24 +01:00
Robert Adams
872d513daa
BulletSim: make avatar animations update properly.
...
It seems that ODE calls the avatar collision handling routine even
if there are no collisions. This causes the animation to be updated.
So, for instance, going from HOVER to FLY is caused by the physics engine
calling the collision routine each frame with 0 collisions.
2012-03-26 17:36:33 -07:00
Robert Adams
2fcdecf090
BulletSim: fix typo introducted by previous checkins (git merge sometimes makes mistakes)
2012-03-26 08:57:40 -07:00
Robert Adams
07388071d4
Merge branch 'bulletsim1' of ssh://island.sciencesim.com/home/sceneapi/radams1/bs-opensim into bulletsim1
...
Conflicts:
OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
2012-03-23 16:20:53 -07:00
Robert Adams
ff54b3c366
BulletSim: change default of shouldDisableContactPoolDynamicAllocation from False to True. It seems that collisions don't happen well when it is False (things fall through terrain).
2012-03-23 15:50:32 -07:00
Robert Adams
3f53b7bc91
BulletSim: Add new configuration parameters to get and set console commands
2012-03-23 13:15:24 -07:00
Robert Adams
142de1d02f
BulletSim: add a bunch of internal Bullet configuration parameters to OpenSimDefaults.ini and the code.
2012-03-23 13:15:23 -07:00
Robert Adams
1273f259e4
BulletSim: remove confusion between angularVelocity and rotationalVelocity (there is still confusion in the rest of OpenSim). Enhance some debug statements to include the object ID.
2012-03-23 13:15:22 -07:00
Robert Adams
1a738caeca
BulletSim: update TODO list. Rearrange code for readability. Add per object friction and restitution runtime settable parameters.
2012-03-23 13:15:18 -07:00
Robert Adams
de24feb275
BulletSim: Add AvatarRestitution parameter. Centralize computation of buoyancy for flying. Tweek avatar default friction and resititution
2012-03-23 13:15:17 -07:00
Robert Adams
6ecdadb329
BulletSim: set buoyancy in only one place
2012-03-23 13:15:16 -07:00
Robert Adams
b22d040169
BulletSim: add some new runtime setable parameters to match the dll.
2012-03-23 13:15:14 -07:00
Robert Adams
975184b3f9
BulletSim: Update list of TODO tasks
2012-03-23 13:15:11 -07:00
Robert Adams
efe61b2481
BulletSim: remove confusion between angularVelocity and rotationalVelocity (there is still confusion in the rest of OpenSim). Enhance some debug statements to include the object ID.
2012-03-22 17:04:06 -07:00
Robert Adams
7783c93802
BulletSim: update TODO list. Rearrange code for readability. Add per object friction and restitution runtime settable parameters.
2012-03-21 16:16:47 -07:00
Robert Adams
cb2727cf6e
BulletSim: Add AvatarRestitution parameter. Centralize computation of buoyancy for flying. Tweek avatar default friction and resititution
2012-03-21 16:16:46 -07:00
Robert Adams
6c55fd93a3
BulletSim: set buoyancy in only one place
2012-03-21 16:16:45 -07:00
Robert Adams
898a16802b
BulletSim: add some new runtime setable parameters to match the dll.
2012-03-21 16:16:44 -07:00
Robert Adams
eafc3d6c47
BulletSim: Update list of TODO tasks
2012-03-21 16:16:41 -07:00
Justin Clark-Casey (justincc)
4c41b53a4b
Add prim name to "[MESH]: No recognized physics mesh..." log message
2012-03-20 23:35:50 +00: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)
1c0f3a1f21
Fix crash where two scene loop threads could changes m_MeshToTriMeshMap at the same time.
...
Have to lock m_MeshToTriMeshMap as property is static and with more than one region two scene loops could try to manipulate at the same time.
2012-03-20 00:40:03 +00:00
Justin Clark-Casey (justincc)
f67f37074f
Stop spurious scene loop startup timeout alarms for scenes with many prims.
...
On the first frame, all startup scene objects are added to the physics scene.
This can cause a considerable delay, so we don't start raising the alarm on scene loop timeouts until the second frame.
This commit also slightly changes the behaviour of timeout reporting.
Previously, a report was made for the very first timed out thread, ignoring all others until the next watchdog check.
Instead, we now report every timed out thread, though we still only do this once no matter how long the timeout.
2012-02-24 05:02:33 +00:00
Justin Clark-Casey (justincc)
daee2eda93
Load 32-bit or 64-bit BulletSim Windows library automatically as appropriate.
...
This uses the same approach as ODE.
radams, if this doesn't work for you please feel free to revert.
2012-02-21 04:10:39 +00:00
Justin Clark-Casey (justincc)
68a4ef5ef6
Add 64 bit Windows sqlite3.dll and use this if running a 64-bit windows process.
2012-02-21 02:52:20 +00:00
Justin Clark-Casey (justincc)
19d271d3fc
Remove PhysXPlugin and wrappers.
...
In over 4 years this never progressed beyond an unimplemented stub.
This doesn't mean that it can't come back if someone is interested in implementing PhysX support.
2012-02-21 01:45:17 +00:00
Justin Clark-Casey (justincc)
9846a1e56e
Report an error if the required native Windows ODE library can't be found.
2012-02-18 02:52:29 +00:00
Justin Clark-Casey (justincc)
b817c337dc
On Windows automatically load the correct native ODE library depending on whether the process is 32-bit or 64-bit
...
In theory, this means that a 64-bit Windows OS user can now run OpenSim.exe with ODE and use more than 2 (or 3) GB of memory.
However, this is completely untested since I don't currently own a 64-bit Windows box. Feedback appreciated.
Using OpenSim.32BitLaunch.exe should continue to work. Other platforms are unaffected.
This will currently not work with sqlite - I will add that too if this works.
2012-02-18 00:33:52 +00:00
Justin Clark-Casey (justincc)
c0760f9f91
Comment out "experimental" log message printed out whenever a physics mesh was generated for a mesh
...
Also adds prim name to the "no asset data" error log message
2012-02-16 00:28:57 +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
Robert Adams
e9de7e7107
Update BulletSim.dll with some interface changes and tuning (see opensim-libs). Change BSScene to use new interface.
2012-01-25 14:40:38 -08: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
Dan Lake
41b02a7208
Remove unused SetAcceleration and add set on Acceleration parameter
2011-12-20 14:45:32 -08: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)
8013c0d2f5
Stop pointlessly setting the m_colliderarr[] to false in the ODECharacter constructor
2011-12-15 22:33:14 +00:00
Justin Clark-Casey (justincc)
c0ba99e5ad
Stop having to call SetHeight again in ScenePresence.AddToPhysicalScene() when we've already passed size information to the avatar at PhysicsScene.AddAvatar()
...
Eliminate some copypasta for height setting in OdeCharacter
2011-12-15 22:29:36 +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)
a17f93ff44
minor: remove mono compile warning, a Vector3 can never be null since it's a struct
2011-11-29 16:31:10 +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)
e67ba0ad06
rename ODECharacter.AvatarGeomAndBodyCreation() -> CreateOdeStructures() to match existing DestroyOdeStructures()
2011-11-21 20:01:34 +00:00
Justin Clark-Casey (justincc)
063f0f5d97
refactor: Eliminate one line ODECharacter.doForce() method for code clarity
2011-11-21 19:58:37 +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)
cead87005b
Have ODECharacter and ODEPrim both use PhysicsActor.Name instead of maintaining their own properties
2011-11-21 18:06:04 +00:00
Justin Clark-Casey (justincc)
4fdcfd79e4
Actually remove PhysicsActor.SOPDescription this time
2011-11-21 17:55:54 +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)
f7b8c54c24
Add comment for experimental effect of removing the Thread.Sleep(20) in ODEPrim.changevelocity()
2011-11-04 23:43:17 +00:00
Justin Clark-Casey (justincc)
ccca6ba935
Stop llPushObject() from causing problems by adding force via a taint rather than directly.
...
This isn't a perfect solution since there can be a race between the taint processing and taint setting, as force needs to be reset after processing.
Needs careful locking in the future.
2011-11-04 23:12:01 +00:00
Justin Clark-Casey (justincc)
9fdd1753fa
Add taint target velocity for ODECharacters as is already done for ODECharacter position and position and velocity for ODEPrims.
...
This is to help stop surprises if the velocity is set in the middle of physics calculations, though this probably isn't a huge problem.
It's more for consistency and for the next step of removing some scene locks
2011-10-29 02:30:33 +01:00
Justin Clark-Casey (justincc)
ef8370fb8e
tidy up OdeCharacter so that we just use OpenMetaverse.Vector3 assignment directly where possible, instead of transferring X, Y and Z components separately
...
some of this is probably a hold over from using ODE.Vector3, which is still necessary in some places.
2011-10-29 02:07:28 +01:00
Justin Clark-Casey (justincc)
a5ea9f8830
Move position set from taint to logically better position at top of ODECharacter.ProcessTaints() though this makes no practical difference
2011-10-29 01:46:22 +01:00
Justin Clark-Casey (justincc)
5ae8de3c00
Stop setting _position as well as m_taint_position in ODECharacter.Position
...
setting position at the same time as taint appears to undermine the whole purpose of taint
testing doesn't reveal any obvious regressions in doing this
2011-10-29 01:39:48 +01:00
Justin Clark-Casey (justincc)
820242bc49
Fix a bug I introduced yesterday in ODE physics where prim scripts would only receive the very first collision.
2011-10-27 02:05:59 +01:00
Justin Clark-Casey (justincc)
6a74a4c12b
Clear OdeCharacter CollisionEventUpdate when we subscribe or unsubscribe from collision events
2011-10-25 22:46:42 +01:00
Justin Clark-Casey (justincc)
0f83f87233
Remove unused fields from CollisionEventUpdate
2011-10-25 22:39:08 +01:00
Justin Clark-Casey (justincc)
c825c9a945
Get rid of the pointless null checks on collision listeners. Add warning about synchronicity for PhysicsActor.OnCollisionUpdate event doc
2011-10-25 22:35:00 +01:00
Justin Clark-Casey (justincc)
b9f106f484
When sending object collision updates, don't null out and recreate the CollisionEventUpdate() if the number of collisions falls to zero. Reuse the existing one instead.
2011-10-25 22:28:40 +01:00
Justin Clark-Casey (justincc)
5d37f0471e
For ScenePresence collision events, instead of creating a new CollisionEventsThisFrame every time we need to send some new ones, reuse the existing one instead.
...
This assumes that the listener is using the data synchronously, which is currently the case.
2011-10-25 22:19:17 +01: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
Justin Clark-Casey (justincc)
4241ee5dfa
very minor removal of old commented out line of code in OdeScene
2011-10-21 00:04:36 +01:00
Justin Clark-Casey (justincc)
30fe66d3ab
remove unnecessary null check on _collisionEventPrim
2011-10-20 20:58:29 +01:00
Justin Clark-Casey (justincc)
9c43020876
Get OdeScene to use passed in time step rather than hard-coded 0.089
...
However, I still don't recommend changing MinFrameTime from 0.089, high values do not work well and lower values don't seem to make much difference
2011-10-20 20:48:51 +01:00
Justin Clark-Casey (justincc)
b63ec987b0
For now, stop passing timeStep into methods where it's not actually used.
2011-10-20 17:54:32 +01:00
Justin Clark-Casey (justincc)
581885da75
Temporarily put in log lines to record time taken to set terrain in OdeScene.
2011-10-18 21:21:15 +01:00
Justin Clark-Casey (justincc)
03202ada29
Store scene identifier passed in to OdeScene for later debug messages
2011-10-18 21:11:13 +01:00
Justin Clark-Casey (justincc)
1d4cd76e8a
Don't bother taking OdeLock during OdeScene construction, since there can be no contention until the object is constructed.
2011-10-18 21:03:41 +01:00
Justin Clark-Casey (justincc)
f10a824e47
Remove unnecessary lock of OdeLock in OdePrim.changeadd()
...
This taint can only ever be processed from the OdeScene.Simulate() loop, which already locks OdeLock.
2011-10-18 20:58:59 +01:00
Justin Clark-Casey (justincc)
5515c45e3b
minor: method doc to explain a lock of OdeLock
2011-10-18 20:56:11 +01:00
Justin Clark-Casey (justincc)
71d221cdc0
Remove the unused CollisionLocker from ODE
...
Despite its name, this wasn't actually being used in any collision checking
2011-10-18 17:35:58 +01:00
Justin Clark-Casey (justincc)
0c041ce12f
Implement osNpcSit(). This is still in development so don't trust it
...
Format is osNpcSit(<npc-uuid>, <target-uuid>, OS_NPC_SIT_IMMEDIATE)
e.g. osNpcSit(npc, llGetKey(), OS_NPC_SIT_IMMEDIATE);
At the moment, sit only succeeds if the part has a sit target set.
NPC immediately sits on the target even if miles away - they do not walk up to it.
This method is in development - it may change so please don't trust it yet.
Standing will follow shortly since that's kind of important once you're sitting :)
2011-10-17 01:42:31 +01:00
Justin Clark-Casey (justincc)
978fb3d482
reduce access to ODECharacter methods to make code analysis easier. Eliminate redundant argument on ProcessTaints()
2011-10-15 01:41:39 +01:00
Justin Clark-Casey (justincc)
9cc2694776
restrict unnecessary access levels on ODEPrim fields/properties
2011-10-15 01:31:09 +01:00
Justin Clark-Casey (justincc)
f2132329a3
refactor: make methods that do not need to be public in ODE private or internal to aid code reading/analysis. Remove some unused method arguments
2011-10-15 01:20:40 +01:00
Justin Clark-Casey (justincc)
4bfc2f5cde
Change hardcoded ODE total frame time to match the default total frame time (0.09375 -> 0.089).
...
No apparant ill effects - because the default stepsize is 0.2, there are still 5 physics steps per physics frame.
This is a precursor to using the elapsed value passed in (and now changeable in config).
2011-10-14 21:07:57 +01:00
Justin Clark-Casey (justincc)
77c65951e0
Extract NullPhysicsScene from PhysicsScene to improve code readability
2011-10-14 01:38:14 +01:00
Justin Clark-Casey (justincc)
20da04fd0c
More method doc and formatting changes. Makes DestroyOdeStructures() private
2011-10-13 21:42:24 +01:00
Justin Clark-Casey (justincc)
227db07f2f
refactor: move 3x copy/pasted ode structure removal code in ODECharacter into a DestroyOdeStructures() method
...
also adds some method doc
2011-10-13 18:19:13 +01:00
Justin Clark-Casey (justincc)
9090039324
Remove unused local variable i from OdeScene.Simulate()
2011-10-05 22:15:28 +01:00
Justin Clark-Casey (justincc)
1e798136c3
adjust some whitespace to trigger another build, to check the last failure was just a glitch
2011-09-17 01:33:55 +01:00
Justin Clark-Casey (justincc)
f950338124
Remove old bullet DotNET and X libraries in preparation for BulletS
...
These weren't working properly anyway.
You will need to rerun prebuild.sh/.bat after this commit, and maybe "nant clean" as well.
2011-09-17 01:09:25 +01:00
Justin Clark-Casey (justincc)
6f542f73d4
Stop the avatar stalling on its first boarder cross when using the ODE plugin
...
When upgrading the previously child agent to a root, the code was setting the Size parameter on the ODECharacter PhysicsActor.
This in turn reset Velocity, which cause the border stall.
I'm fixing this by commenting out the Velocity = Vector3.Zero lines since they don't appear to play a useful purpose
2011-09-16 23:57:16 +01:00
Robert Adams
96dce3e16c
Use GetMeshKey from PrimitiveBaseShape.
2011-08-29 10:10:48 -07:00
Mic Bowman
648866b597
Merge branch 'master' into bulletsim
2011-08-29 09:55:34 -07:00
Robert Adams
18037d41c4
Move GetMeshKey from buried inside Meshmerizer to a public method on PrimitiveBaseShape
...
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2011-08-28 16:50:54 -04:00
Robert Adams
80a2b81d52
Add level of detail specification to optionally reduce the number of vertices in generated prim meshes
...
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2011-08-28 16:49:25 -04:00
Robert Adams
21708b832b
BulletSim: add mesh representation. Use meshes for static objects and switch to hulls for physical objects.
2011-08-26 15:51:21 -07:00
Mic Bowman
384cb79a1a
Merge branch 'master' into bulletsim
...
Conflicts:
OpenSim/Region/Framework/Scenes/SceneManager.cs
2011-08-19 14:49:16 -07:00
Robert Adams
fef73a1a10
BulletSim: add runtime setting of physics parameters. Update default values.
2011-08-18 14:32:09 -07:00
Justin Clark-Casey (justincc)
951ffad81e
If SP.MoveToTarget has been called with a force walk, begin by landing the avatar.
...
There is a bug here - once an avatar has landed it glides to its new position instead of performing a walk animation
2011-08-11 00:23:54 +01:00
Justin Clark-Casey (justincc)
7f499ff3f3
Add a OS_NPC_LAND_AT_TARGET option to osMoveToTarget()
...
Default for this function is now not to automatically land.
This allows better control by scripts when an avatar is going to be landing on a prim rather than the ground.
Stopping the avatar involves faking a collision, to avoid the pid controller making it overshoot.
A better approach would be to gradually slow the avatar as we near the target
2011-08-10 23:56:19 +01:00
Mic Bowman
82f41fdcb5
BulletSim: fix problem with not convex hulling large objects by creating unit meshes and always scaling in Bullet
2011-08-05 14:53:39 -07:00
Mic Bowman
c3f579046c
Merge branch 'master' into bulletsim
2011-08-05 11:13:02 -07:00
Robert Adams
7640b5abf6
BulletSim: Parameters settable from ini file. Linksets. Physical property value tuning
2011-08-05 11:01:27 -07:00
Justin Clark-Casey (justincc)
21d8a6b0e8
extend move test to check one beat of the simulator without actually asking the npc to move.
2011-08-03 23:06:18 +01:00
Justin Clark-Casey (justincc)
05e94ff27e
Move common gemo/agent map name code into CreateGeom()
...
Fix build break.
2011-08-01 07:04:13 +01:00
Justin Clark-Casey (justincc)
f9d6a91252
Instead of preserving old name in geom_name_map in change size or shape, use the Name property instead.
...
This is equivalent since the prim 'name' is never changed. In fact, this propery is never used for prims
2011-08-01 06:52:52 +01:00
Justin Clark-Casey (justincc)
40a78db182
comment out unused code in OdeScene.TriCallback()
2011-08-01 06:47:45 +01:00
Justin Clark-Casey (justincc)
ccb4b76242
On geom removal, remove the name from the OdeScene.geom_name_map too
2011-08-01 06:40:29 +01:00
Justin Clark-Casey (justincc)
f79df6f43f
remove the unused ODEPrim.prev_geom field
2011-08-01 06:35:59 +01:00
Justin Clark-Casey (justincc)
f32dbef647
When an ODE geom is removed (as when a non-phantom prim is deleted, resized or shape changed, also remove the OdeScene.actor_name_map entry pointing to the phys actor
...
This is to stop a small memory leak over time when prims are deleted or phantom-toggled
2011-08-01 06:32:30 +01:00
Justin Clark-Casey (justincc)
6618948ff9
refactor: centralize prim geom removal code from four places to one
2011-08-01 06:15:02 +01:00
Justin Clark-Casey (justincc)
509200d5cd
minor: add note to RemovePrimThreadLocked() to the effect that it contrary to the summary, it is being called from within Simulate() lock (OdeLock)
2011-08-01 05:48:27 +01:00
Justin Clark-Casey (justincc)
dfa2f7d715
If a prim changes size or shape, add actor to _parent_scene.actor_name_map with new prim_geom key, as the old one becomes invalid.
...
This resolves http://opensimulator.org/mantis/view.php?id=5603 where changing size or shape would stop collision_start being fired in a running script.
In both this and existing code we are not removing old actors from actor_name_map when the existing prim_geom is removed, which leads to a small memory leak over time.
This needs to be fixed.
2011-08-01 05:43:04 +01:00
Justin Clark-Casey (justincc)
2102964826
minor: indentation correction
2011-08-01 05:14:16 +01:00
Justin Clark-Casey (justincc)
d041276517
Remove _mesh field since the mesh data no longer needs to be stored after it's initially used.
...
This may improve memory usage for regions using mesh and sculpts, though I suspect that it doesn't address the current memory leak.
2011-07-31 01:03:52 +01:00
Justin Clark-Casey (justincc)
bd8f538f80
refactor: Remove argument to pass in an initial mesh to OdePrim since this is no longer required and it prevents removal of the _mesh field (which is only used temporarily)
...
If passing in a mesh becomes important again in the future then this can be reinstated.
2011-07-31 00:49:49 +01:00
Justin Clark-Casey (justincc)
196a774b24
minor: correct method doc for last commit
2011-07-31 00:45:20 +01:00
Justin Clark-Casey (justincc)
454312f5bc
refactor: rename CreateGeom _mesh argument to mesh, so as to not confuse this with the pre-existing _mesh field
2011-07-31 00:44:23 +01:00
Justin Clark-Casey (justincc)
f1ce17071d
minor: method doc
2011-07-31 00:43:02 +01:00
Justin Clark-Casey (justincc)
e08be91c84
Refactor: Replace instances of m_isphysical with IsPhysical rather than have some code reference the private var and other the public var without any functionality difference.
...
Add some method doc to IsPhysical
2011-07-30 23:44:47 +01:00
Justin Clark-Casey (justincc)
4f4d080461
refactor: Rename ODEPrim.ParentPrim() to AddChildPrim() for code readability
2011-07-30 23:20:43 +01:00
Justin Clark-Casey (justincc)
49a3740ee9
minor: remove mono compiler warnings, some code spacing adjustments
2011-07-30 03:56:29 +01:00