Improved sitted avatars crossings ( plus tests on vehicles)

avinationmerge
UbitUmarov 2012-05-02 22:08:09 +01:00
parent 8ef2a2b7de
commit a135e51d23
2 changed files with 18 additions and 9 deletions

View File

@ -634,10 +634,18 @@ namespace OpenSim.Region.Framework.Scenes
ScenePresence agent = icon.EndInvoke(iar);
//// If the cross was successful, this agent is a child agent
//if (agent.IsChildAgent)
// agent.Reset();
//else // Not successful
// agent.RestoreInCurrentScene();
if (agent.IsChildAgent)
{
if (agent.ParentUUID != UUID.Zero)
{
agent.ParentPart = null;
agent.ParentPosition = Vector3.Zero;
}
}
// agent.Reset();
// else // Not successful
// agent.RestoreInCurrentScene();
// In any case
agent.IsInTransit = false;

View File

@ -793,10 +793,7 @@ namespace OpenSim.Region.Physics.OdePlugin
float perr;
// default to global but don't go underground
if (t < m_VhoverHeight)
perr = m_VhoverHeight - pos.Z;
else
perr = t - pos.Z; ;
if ((m_flags & VehicleFlag.HOVER_GLOBAL_HEIGHT) == 0)
{
@ -817,9 +814,13 @@ namespace OpenSim.Region.Physics.OdePlugin
perr += w;
}
}
else if (t > m_VhoverHeight)
perr = t - pos.Z; ;
if ((m_flags & VehicleFlag.HOVER_UP_ONLY) == 0 || perr > 0)
{
force.Z += (perr / m_VhoverTimescale / m_VhoverTimescale - curVel.Z * m_VhoverEfficiency) / m_timestep;
// force.Z += (perr / m_VhoverTimescale / m_VhoverTimescale - curVel.Z * m_VhoverEfficiency) / m_timestep;
force.Z += (perr / m_VhoverTimescale - curVel.Z * m_VhoverEfficiency);// * m_invtimestep);
force.Z += _pParentScene.gravityz * (1f - m_VehicleBuoyancy);
}
else // no buoyancy