aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
authorMelanie2012-02-22 20:40:44 +0100
committerMelanie2012-02-22 20:40:44 +0100
commit1e1270166f6d574916ada7b2bd5923115bd07052 (patch)
treeedd8ba7a8ed5629675943e5295a38d08078e95c8 /OpenSim/Region/Framework/Scenes/ScenePresence.cs
parentMerge branch 'master' into careminster (diff)
downloadopensim-SC-1e1270166f6d574916ada7b2bd5923115bd07052.zip
opensim-SC-1e1270166f6d574916ada7b2bd5923115bd07052.tar.gz
opensim-SC-1e1270166f6d574916ada7b2bd5923115bd07052.tar.bz2
opensim-SC-1e1270166f6d574916ada7b2bd5923115bd07052.tar.xz
Adjust sit target and the llSetLinkPrimitiveParams sit position hack
to match SL.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs24
1 files changed, 22 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 283de39..ec8716b 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -91,7 +91,7 @@ namespace OpenSim.Region.Framework.Scenes
91 /// rotation, prim cut, prim twist, prim taper, and prim shear. See mantis 91 /// rotation, prim cut, prim twist, prim taper, and prim shear. See mantis
92 /// issue #1716 92 /// issue #1716
93 /// </summary> 93 /// </summary>
94 public static readonly Vector3 SIT_TARGET_ADJUSTMENT = new Vector3(0.0f, 0.0f, 0.418f); 94 public static readonly Vector3 SIT_TARGET_ADJUSTMENT = new Vector3(0.0f, 0.0f, 0.4f);
95 95
96 /// <summary> 96 /// <summary>
97 /// Movement updates for agents in neighboring regions are sent directly to clients. 97 /// Movement updates for agents in neighboring regions are sent directly to clients.
@@ -2301,7 +2301,27 @@ namespace OpenSim.Region.Framework.Scenes
2301 2301
2302 //Quaternion result = (sitTargetOrient * vq) * nq; 2302 //Quaternion result = (sitTargetOrient * vq) * nq;
2303 2303
2304 m_pos = sitTargetPos + SIT_TARGET_ADJUSTMENT; 2304 double x, y, z, m;
2305
2306 Quaternion r = sitTargetOrient;
2307 m = r.X * r.X + r.Y * r.Y + r.Z * r.Z + r.W * r.W;
2308
2309 if (Math.Abs(1.0 - m) > 0.000001)
2310 {
2311 m = 1.0 / Math.Sqrt(m);
2312 r.X *= (float)m;
2313 r.Y *= (float)m;
2314 r.Z *= (float)m;
2315 r.W *= (float)m;
2316 }
2317
2318 x = 2 * (r.X * r.Z + r.Y * r.W);
2319 y = 2 * (-r.X * r.W + r.Y * r.Z);
2320 z = -r.X * r.X - r.Y * r.Y + r.Z * r.Z + r.W * r.W;
2321
2322 Vector3 up = new Vector3((float)x, (float)y, (float)z);
2323 Vector3 sitOffset = up * Appearance.AvatarHeight * 0.02638f;
2324 m_pos = sitTargetPos + sitOffset + SIT_TARGET_ADJUSTMENT;
2305 Rotation = sitTargetOrient; 2325 Rotation = sitTargetOrient;
2306 ParentPosition = part.AbsolutePosition; 2326 ParentPosition = part.AbsolutePosition;
2307 part.ParentGroup.AddAvatar(UUID); 2327 part.ParentGroup.AddAvatar(UUID);