diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 22b81dc9ed..a4a33a4e16 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -2579,7 +2579,15 @@ namespace OpenSim.Region.Framework.Scenes /// Number of seconds over which to reach target public void SetHoverHeight(float height, PIDHoverType hoverType, float tau) { - PhysicsActor pa = RootPart.PhysActor; + PhysicsActor pa = null; + if(IsAttachment) + { + ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar); + if (avatar != null) + pa = avatar.PhysicsActor; + } + else + pa = RootPart.PhysActor; if (pa != null) { diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 8d40a38d94..16c1f168dc 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3942,25 +3942,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { m_host.AddScriptLPS(1); - if (m_host.PhysActor != null) + PIDHoverType hoverType = PIDHoverType.Ground; + if (water != 0) { - PIDHoverType hoverType = PIDHoverType.Ground; - if (water != 0) - { - hoverType = PIDHoverType.GroundAndWater; - } - - m_host.SetHoverHeight((float)height, hoverType, (float)tau); + hoverType = PIDHoverType.GroundAndWater; } + m_host.SetHoverHeight((float)height, hoverType, (float)tau); } public void llStopHover() { m_host.AddScriptLPS(1); - if (m_host.PhysActor != null) - { - m_host.SetHoverHeight(0f, PIDHoverType.Ground, 0f); - } + m_host.SetHoverHeight(0f, PIDHoverType.Ground, 0f); } public void llMinEventDelay(double delay)