Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Add an optional mechanism for physics modules to collect and return ↵ | Justin Clark-Casey (justincc) | 2012-05-31 | 1 | -10/+129 |
| | | | | | | | | | | | 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. | ||||
* | refactor: move EventQueueGet path generation into common method. Rename ↵ | Justin Clark-Casey (justincc) | 2012-05-18 | 1 | -1/+1 |
| | | | | some local variables in line with code conventions. Add commented out EQG log lines for future use. | ||||
* | Don't eagerly clear frame collision events when physics actors subscribe and ↵ | Justin Clark-Casey (justincc) | 2012-05-17 | 1 | -2/+8 |
| | | | | | | | | 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 | ||||
* | Restore _parent_scene.actor_name_map[prim_geom] = this; accidentally removed ↵ | Justin Clark-Casey (justincc) | 2012-04-24 | 1 | -0/+1 |
| | | | | | | | | 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 | ||||
* | Comment out spurious Body != IntPtr.Zero code after disableBody(), since ↵ | Justin Clark-Casey (justincc) | 2012-04-21 | 2 | -10/+20 |
| | | | | disableBody() sets Body == IntPtr.Zero on all code paths. | ||||
* | refactor: Simplify ODEPrim.AddChildPrim() by returning early where appropriate. | Justin Clark-Casey (justincc) | 2012-04-21 | 1 | -115/+117 |
| | |||||
* | Remove redundant prim_geom != IntPtr.Zero checks in ODEPrim. | Justin Clark-Casey (justincc) | 2012-04-21 | 1 | -116/+88 |
| | | | | | | 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. | ||||
* | If a physical prim is manually moved (e.g. by a user) then set the geometry ↵ | Justin Clark-Casey (justincc) | 2012-04-20 | 1 | -12/+10 |
| | | | | | | | 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 | ||||
* | refactor: precalculate the fixed movement factor for avatar tilting ↵ | Justin Clark-Casey (justincc) | 2012-03-20 | 2 | -8/+16 |
| | | | | (sqrt(2)) rather than doing it multiple times on every move. | ||||
* | refactor: Eliminate unnecessary duplicate avCapsuleTilted | Justin Clark-Casey (justincc) | 2012-03-20 | 1 | -3/+7 |
| | |||||
* | Fix crash where two scene loop threads could changes m_MeshToTriMeshMap at ↵ | Justin Clark-Casey (justincc) | 2012-03-20 | 1 | -10/+16 |
| | | | | | | 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. | ||||
* | Stop spurious scene loop startup timeout alarms for scenes with many prims. | Justin Clark-Casey (justincc) | 2012-02-24 | 1 | -0/+2 |
| | | | | | | | | 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. | ||||
* | Add 64 bit Windows sqlite3.dll and use this if running a 64-bit windows process. | Justin Clark-Casey (justincc) | 2012-02-21 | 1 | -14/+1 |
| | |||||
* | Report an error if the required native Windows ODE library can't be found. | Justin Clark-Casey (justincc) | 2012-02-18 | 1 | -1/+4 |
| | |||||
* | On Windows automatically load the correct native ODE library depending on ↵ | Justin Clark-Casey (justincc) | 2012-02-18 | 1 | -2/+22 |
| | | | | | | | | | 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. | ||||
* | correct the default avatar_terminal_velocity value that I accidentally left ↵ | Justin Clark-Casey (justincc) | 2012-02-11 | 1 | -1/+1 |
| | | | | in whilst testing | ||||
* | Clamp ODE character velocity. Make ODE falling character 54m/s by default. | Justin Clark-Casey (justincc) | 2012-02-11 | 2 | -1/+53 |
| | | | | | | | 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 | ||||
* | Serialize calls to ODE Collide() function across OdeScene instances to ↵ | Justin Clark-Casey (justincc) | 2012-01-25 | 2 | -1/+32 |
| | | | | | | | | | 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. | ||||
* | Restrict accessible of ODECharacter Shell and Body. Add method doc and some ↵ | Justin Clark-Casey (justincc) | 2012-01-24 | 2 | -12/+27 |
| | | | | error log lines. | ||||
* | Adding commented out log messages and some minor formatting for future bug ↵ | Justin Clark-Casey (justincc) | 2012-01-02 | 1 | -0/+1 |
| | | | | hunting. No functional changes. | ||||
* | Align default ODE_STEPSIZE with that already used through OpenSimDefaults.ini | Justin Clark-Casey (justincc) | 2011-12-22 | 1 | -2/+2 |
| | |||||
* | Remove unused SetAcceleration and add set on Acceleration parameter | Dan Lake | 2011-12-20 | 2 | -6/+2 |
| | |||||
* | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim | Diva Canto | 2011-12-20 | 1 | -1/+1 |
|\ | |||||
| * | Comment out accidentally left in "Adding physics prim" log message | Justin Clark-Casey (justincc) | 2011-12-16 | 1 | -1/+1 |
| | | |||||
* | | Fixed bug of avie going under the terrain when crossing regions in certain ↵ | Diva Canto | 2011-12-20 | 1 | -2/+2 |
|/ | | | | 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. | ||||
* | Stop pointlessly setting the m_colliderarr[] to false in the ODECharacter ↵ | Justin Clark-Casey (justincc) | 2011-12-15 | 1 | -5/+0 |
| | | | | constructor | ||||
* | Stop having to call SetHeight again in ScenePresence.AddToPhysicalScene() ↵ | Justin Clark-Casey (justincc) | 2011-12-15 | 1 | -16/+22 |
| | | | | | | when we've already passed size information to the avatar at PhysicsScene.AddAvatar() Eliminate some copypasta for height setting in OdeCharacter | ||||
* | Code cleanup related to ScenePresence.PhysicsActor and OdeScene/OdeCharacter | Justin Clark-Casey (justincc) | 2011-12-15 | 2 | -8/+24 |
| | | | | | | 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 | ||||
* | minor: add some currently commented log lines for use in debugging | Justin Clark-Casey (justincc) | 2011-12-14 | 1 | -1/+8 |
| | |||||
* | Simplify some manipulation of _taintedActors in OdeScene | Justin Clark-Casey (justincc) | 2011-12-14 | 1 | -13/+6 |
| | |||||
* | Eliminate _taintedPrimsH and _taintedPrimsL (and _taintedPrimLock) in favour ↵ | Justin Clark-Casey (justincc) | 2011-12-14 | 1 | -45/+14 |
| | | | | | | 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. | ||||
* | minor: remove pointless comment from OdeScene.cs | Justin Clark-Casey (justincc) | 2011-12-12 | 1 | -2/+1 |
| | |||||
* | remove some mono compiler warnings | Justin Clark-Casey (justincc) | 2011-11-25 | 2 | -7/+7 |
| | |||||
* | Log error if we attempt to add/remove an OdeCharacter from the _characters ↵ | Justin Clark-Casey (justincc) | 2011-11-22 | 1 | -23/+33 |
| | | | | list inappropriately | ||||
* | Stop removing actor from the hash maps in OdeScene.RemoveCharacter() since ↵ | Justin Clark-Casey (justincc) | 2011-11-22 | 1 | -6/+1 |
| | | | | this is now being down in OdeCharacter.DestroyOdeStructures() | ||||
* | Comment out uncalled OdeScene.UnCombine() | Justin Clark-Casey (justincc) | 2011-11-22 | 1 | -58/+58 |
| | |||||
* | slightly simplify OdeScene.Simulate() by removing bool processtaints, since ↵ | Justin Clark-Casey (justincc) | 2011-11-22 | 3 | -141/+128 |
| | | | | | | we can inspect count of taint lists instead. also groups OdeCharacter.CreateOdeStructures() and DestroyOdeStructures() together | ||||
* | Slightly improve "Unable to space collide" logging message, though I don't ↵ | Justin Clark-Casey (justincc) | 2011-11-21 | 1 | -1/+2 |
| | | | | think I've ever seen this. | ||||
* | Get rid of OdeCharacter != null checks since OdeScene._characters can never ↵ | Justin Clark-Casey (justincc) | 2011-11-21 | 1 | -17/+4 |
| | | | | | | contain a null character. Ignoring the ancient code glyphs not to do this.... | ||||
* | remove unnecessary OdeScene._activeprims locking. Code is single-threaded | Justin Clark-Casey (justincc) | 2011-11-21 | 1 | -53/+46 |
| | |||||
* | Restore defects list. In hindsight, the reason for this is becuase we can't ↵ | Justin Clark-Casey (justincc) | 2011-11-21 | 2 | -92/+112 |
| | | | | | | remove the character whilst iterating over the list. This commit also removes locking on OdeScene._characters since code is single threaded | ||||
* | simplify operation of OdeScene._perloopContact | Justin Clark-Casey (justincc) | 2011-11-21 | 1 | -45/+51 |
| | |||||
* | don't bother locking OdeScene._perloopContact in single threaded code | Justin Clark-Casey (justincc) | 2011-11-21 | 1 | -47/+42 |
| | |||||
* | don't lock OdeScene.contacts since only ever accessed by a single thread | Justin Clark-Casey (justincc) | 2011-11-21 | 1 | -10/+24 |
| | |||||
* | rename ODECharacter.AvatarGeomAndBodyCreation() -> CreateOdeStructures() to ↵ | Justin Clark-Casey (justincc) | 2011-11-21 | 1 | -8/+10 |
| | | | | match existing DestroyOdeStructures() | ||||
* | refactor: Eliminate one line ODECharacter.doForce() method for code clarity | Justin Clark-Casey (justincc) | 2011-11-21 | 1 | -15/+3 |
| | |||||
* | Comment out calls to OdeScene.waitForSpaceUnlock() since that method does ↵ | Justin Clark-Casey (justincc) | 2011-11-21 | 3 | -23/+24 |
| | | | | nothing right now | ||||
* | Reduce complexity of OdeScene.Simulate() by fully removing bad characters at ↵ | Justin Clark-Casey (justincc) | 2011-11-21 | 2 | -70/+29 |
| | | | | point of detection rather than later on. | ||||
* | move geom/actor map maintenance into ↵ | Justin Clark-Casey (justincc) | 2011-11-21 | 2 | -10/+9 |
| | | | | | | DestroyODEStructures()/AvatarGeomAndBodyCreation(). This saves us having to do it separately when a character capsule size is changed | ||||
* | When changing avatar size in ODE, remove the old actor from the name and ↵ | Justin Clark-Casey (justincc) | 2011-11-21 | 2 | -8/+14 |
| | | | | actor maps |