Fixes Mantis #3260. Thank you kindly, MCortez for a patch that:

llSetHoverHeight() should not clamp the x/y position of an object the way MoveTo does, 
and it should recalculate the absolute height to hover at as an object moves to reflect 
the current ground/water height under it.
Correctly implementing required adjusting the Physics interfaces and implementing at 
the physics plug-in level. The attached is a patch that correctly implements 
llSetHoverHeight() including updates to the ODE physics plug-in.
This commit is contained in:
Charles Krinke
2009-03-06 23:01:35 +00:00
parent 05ebd44791
commit b637a11b58
12 changed files with 239 additions and 19 deletions

View File

@@ -1748,6 +1748,23 @@ if (m_shape != null) {
}
}
/// <summary>
/// Uses a PID to attempt to clamp the object on the Z axis at the given height over tau seconds.
/// </summary>
/// <param name="height">Height to hover. Height of zero disables hover.</param>
/// <param name="hoverType">Determines what the height is relative to </param>
/// <param name="tau">Number of seconds over which to reach target</param>
public void SetHoverHeight(float height, PIDHoverType hoverType, float tau)
{
m_parentGroup.SetHoverHeight(height, hoverType, tau);
}
public void StopHover()
{
m_parentGroup.SetHoverHeight(0f, PIDHoverType.Ground, 0f);
}
public virtual void OnGrab(Vector3 offsetPos, IClientAPI remoteClient)
{
}