diff options
author | Charles Krinke | 2009-07-09 16:53:55 +0000 |
---|---|---|
committer | Charles Krinke | 2009-07-09 16:53:55 +0000 |
commit | dc0a19f7370b10ea5affd55d03b05a3aa2748839 (patch) | |
tree | 17e4fd4648d278b1cca2cfa26c6815bf24c0724b /OpenSim/Region/ScriptEngine/Shared | |
parent | Thank you, StrawberryFride, for a patch to fix MSSQL parameter naming. (diff) | |
download | opensim-SC_OLD-dc0a19f7370b10ea5affd55d03b05a3aa2748839.zip opensim-SC_OLD-dc0a19f7370b10ea5affd55d03b05a3aa2748839.tar.gz opensim-SC_OLD-dc0a19f7370b10ea5affd55d03b05a3aa2748839.tar.bz2 opensim-SC_OLD-dc0a19f7370b10ea5affd55d03b05a3aa2748839.tar.xz |
Thank you kindly, Godfrey, for a patch that:
The vector parameter to llSetPos() specifies an absolute position for
an unlinked prim or the root prim of a linkset; however, when the
function is used by a child prim, the vector specifies a relative
offset from the root prim. The changed introduced in llSetPos() treats
this value as an absolute position in all cases, which has the unintended
effect of mangling the position of child prims.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 1d71da3..15188c5 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -1859,15 +1859,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1859 | float ground = World.GetGroundHeight((float)targetPos.x, (float)targetPos.y); | 1859 | float ground = World.GetGroundHeight((float)targetPos.x, (float)targetPos.y); |
1860 | bool disable_underground_movement = m_ScriptEngine.Config.GetBoolean("DisableUndergroundMovement", true); | 1860 | bool disable_underground_movement = m_ScriptEngine.Config.GetBoolean("DisableUndergroundMovement", true); |
1861 | 1861 | ||
1862 | if ((targetPos.z < ground) && disable_underground_movement) | ||
1863 | targetPos.z = ground; | ||
1864 | 1862 | ||
1865 | if (part.ParentGroup == null) | 1863 | if (part.ParentGroup == null) |
1866 | { | 1864 | { |
1865 | if ((targetPos.z < ground) && disable_underground_movement) | ||
1866 | targetPos.z = ground; | ||
1867 | part.UpdateOffSet(new Vector3((float)targetPos.x, (float)targetPos.y, (float)targetPos.z)); | 1867 | part.UpdateOffSet(new Vector3((float)targetPos.x, (float)targetPos.y, (float)targetPos.z)); |
1868 | } | 1868 | } |
1869 | else if (part.ParentGroup.RootPart == part) | 1869 | else if (part.ParentGroup.RootPart == part) |
1870 | { | 1870 | { |
1871 | if ((targetPos.z < ground) && disable_underground_movement) | ||
1872 | targetPos.z = ground; | ||
1871 | SceneObjectGroup parent = part.ParentGroup; | 1873 | SceneObjectGroup parent = part.ParentGroup; |
1872 | parent.UpdateGroupPosition(new Vector3((float)targetPos.x, (float)targetPos.y, (float)targetPos.z)); | 1874 | parent.UpdateGroupPosition(new Vector3((float)targetPos.x, (float)targetPos.y, (float)targetPos.z)); |
1873 | } | 1875 | } |