mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
ubitODE - again avatar/terrain collision. Reduce new viewers interpolators efects reporting null velocity and aceleration when stopped near the right position, where they can still have instantanius large values that can get magnified by interpolators, specially using diferent timing estimation.
This commit is contained in:
@@ -862,12 +862,12 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||
float depth = terrainheight - chrminZ;
|
||||
if (!flying)
|
||||
{
|
||||
vec.Z = -vel.Z * PID_D * 1.5f + depth * PID_P * 60;
|
||||
vec.Z = -vel.Z * PID_D * 1.5f + depth * PID_P * 50;
|
||||
}
|
||||
else
|
||||
vec.Z = depth * PID_P * 60;
|
||||
vec.Z = depth * PID_P * 50;
|
||||
|
||||
if (depth < 0.2f)
|
||||
if (depth < 0.1f)
|
||||
{
|
||||
m_iscolliding = true;
|
||||
m_colliderfilter = 2;
|
||||
@@ -1009,9 +1009,17 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||
|
||||
// update our local ideia of position velocity and aceleration
|
||||
_position = localpos;
|
||||
_acceleration = _velocity; // previus velocity
|
||||
_velocity = vel;
|
||||
_acceleration = (vel - _acceleration) / timeStep;
|
||||
if (_zeroFlag)
|
||||
{
|
||||
_velocity = Vector3.Zero;
|
||||
_acceleration = Vector3.Zero;
|
||||
}
|
||||
else
|
||||
{
|
||||
_acceleration = _velocity; // previus velocity
|
||||
_velocity = vel;
|
||||
_acceleration = (vel - _acceleration) / timeStep;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user