mirror of
https://github.com/opensim/opensim.git
synced 2026-08-01 06:06:06 +08:00
Improved sitted avatars crossings ( plus tests on vehicles)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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; ;
|
||||
perr = m_VhoverHeight - 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
|
||||
|
||||
Reference in New Issue
Block a user