| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
error log lines.
|
| |
|
|
|
|
| |
constructor
|
|
|
|
|
|
| |
when we've already passed size information to the avatar at PhysicsScene.AddAvatar()
Eliminate some copypasta for height setting in 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
|
| |
|
|
|
|
|
|
| |
we can inspect count of taint lists instead.
also groups OdeCharacter.CreateOdeStructures() and DestroyOdeStructures() together
|
|
|
|
|
|
| |
remove the character whilst iterating over the list.
This commit also removes locking on OdeScene._characters since code is single threaded
|
|
|
|
| |
match existing DestroyOdeStructures()
|
| |
|
|
|
|
| |
nothing right now
|
|
|
|
| |
point of detection rather than later on.
|
|
|
|
|
|
| |
DestroyODEStructures()/AvatarGeomAndBodyCreation().
This saves us having to do it separately when a character capsule size is changed
|
|
|
|
| |
actor maps
|
|
|
|
|
|
| |
the actor reference in OdeScene.actor_name_map rather than leaving it dangling.
This also largely centralizes adds/removes in OdeScene.AddCharacter()/RemoveCharacter()
|
|
|
|
| |
maintaining their own properties
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
ODEPrim.changevelocity()
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
ODECharacter.ProcessTaints() though this makes no practical difference
|
|
|
|
|
| |
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
|
|
|
|
| |
from collision events
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Despite its name, this wasn't actually being used in any collision checking
|
|
|
|
| |
Eliminate redundant argument on ProcessTaints()
|
| |
|
|
|
|
|
|
| |
into a DestroyOdeStructures() method
also adds some method doc
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
avatar.
There is a bug here - once an avatar has landed it glides to its new position instead of performing a walk animation
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
to reflect OpenSim standards.
|
|
|
|
| |
100% sure of what all the consequences of this change are. Pushing up, so others can take a look.
|
|
|
|
|
|
|
|
| |
Fixes: Undo, T-pose of others on login, modifiedBulletX works again, feet now stand on the ground instead of in the ground, adds checks to CombatModule. Adds: Redo, Land Undo, checks to agentUpdate (so one can not fall off of a region), more vehicle parts. Finishes almost all of LSL (1 function left, 2 events).
Direct flames and kudos to Revolution, please
Signed-off-by: Melanie <melanie@t-data.com>
|
| |
|
| |
|
|
|
|
|
| |
* Change the PhysicsCollision callback for objects to send full contact point information. This will be used to calculate the collision plane for avatars
* Send the physics engine velocity in terse updates, not the current force being applied to the avatar. This should fix several issues including crouching through the floor and walking through walls
|
| |
|
|
|
|
|
|
| |
based on something that could change
* Tweaked a few other GetHashCode() overrides to bring them in line with MSDN recommendations
|
| |
|
|
|
|
| |
it will definitely get us closer to the root cause.
|
|
|
|
| |
debugging easier. Without this, from the user's perspective.. they cannot move, fly or otherwise do anything physical and without a message on the console, it would be hard to tell that this is what is occurring.
|
|
|
|
|
|
| |
allocate memory, and therefore the unmanaged wrapper call fails or worse.. there's some unmanaged resource accounting in the ODEPlugin for ODECharacter that isn't being done properly now.
* The broken avatar may not be able to move, but it won't stop simulate from pressing on now. And, the simulator will try to destroy the avatar's physics proxy and recreate it again... but if this is what I think it is, it may not help.
|
|
|
|
|
|
|
| |
ScenePresence.AddToPhysicalScene.
* This causes time to be counted in ODECharacter and, when a collision occurs, the physics scene will report the collisions only if the the difference of last time it reported the collisions from now was more then the set ms.
* This is cool because the time accrues while collisions are not taking place and when they do take place again, you get an immediate update.
|