diff options
author | Justin Clark-Casey (justincc) | 2013-11-26 01:40:55 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2013-11-26 01:40:55 +0000 |
commit | a3c72dafe6459f20297a937bb4bca3dc00a24c9f (patch) | |
tree | b922884a8cf1e236c6418ca84e16f2a60f21c5ba | |
parent | fix position changes when sitting on a prim with position and/or orientation ... (diff) | |
download | opensim-SC_OLD-a3c72dafe6459f20297a937bb4bca3dc00a24c9f.zip opensim-SC_OLD-a3c72dafe6459f20297a937bb4bca3dc00a24c9f.tar.gz opensim-SC_OLD-a3c72dafe6459f20297a937bb4bca3dc00a24c9f.tar.bz2 opensim-SC_OLD-a3c72dafe6459f20297a937bb4bca3dc00a24c9f.tar.xz |
Only translate linked prim specified offset pos by the link prim rotation, not any specified avatar rotation as well.
Don't translate root prim position by avatar rotation.
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 42a9b4d..a73d140 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -2277,16 +2277,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
2277 | offset = part.SitTargetPosition; | 2277 | offset = part.SitTargetPosition; |
2278 | sitOrientation = part.SitTargetOrientation; | 2278 | sitOrientation = part.SitTargetOrientation; |
2279 | 2279 | ||
2280 | // m_log.DebugFormat("Old sit orient {0}", sitOrientation); | 2280 | if (!part.IsRoot) |
2281 | if (part.IsRoot) | 2281 | { |
2282 | sitOrientation = sitOrientation; | 2282 | // m_log.DebugFormat("Old sit orient {0}", sitOrientation); |
2283 | else | ||
2284 | sitOrientation = part.RotationOffset * sitOrientation; | 2283 | sitOrientation = part.RotationOffset * sitOrientation; |
2285 | // m_log.DebugFormat("New sit orient {0}", sitOrientation); | 2284 | // m_log.DebugFormat("New sit orient {0}", sitOrientation); |
2286 | |||
2287 | // m_log.DebugFormat("Old sit offset {0}", offset); | 2285 | // m_log.DebugFormat("Old sit offset {0}", offset); |
2288 | offset = offset * sitOrientation; | 2286 | offset = offset * part.RotationOffset; |
2289 | // m_log.DebugFormat("New sit offset {0}", offset); | 2287 | // m_log.DebugFormat("New sit offset {0}", offset); |
2288 | } | ||
2290 | 2289 | ||
2291 | canSit = true; | 2290 | canSit = true; |
2292 | } | 2291 | } |
@@ -2604,19 +2603,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
2604 | //Quaternion result = (sitTargetOrient * vq) * nq; | 2603 | //Quaternion result = (sitTargetOrient * vq) * nq; |
2605 | 2604 | ||
2606 | Vector3 newPos = sitTargetPos + SIT_TARGET_ADJUSTMENT; | 2605 | Vector3 newPos = sitTargetPos + SIT_TARGET_ADJUSTMENT; |
2606 | Quaternion newRot; | ||
2607 | 2607 | ||
2608 | if (part.IsRoot) | 2608 | if (part.IsRoot) |
2609 | Rotation = sitTargetOrient; | 2609 | { |
2610 | newRot = sitTargetOrient; | ||
2611 | } | ||
2610 | else | 2612 | else |
2611 | Rotation = part.RotationOffset * sitTargetOrient; | 2613 | { |
2612 | 2614 | newPos = newPos * part.RotationOffset; | |
2613 | // m_log.DebugFormat("Old offset2 {0}", newPos); | 2615 | newRot = part.RotationOffset * sitTargetOrient; |
2614 | newPos = newPos * Rotation; | 2616 | } |
2615 | // m_log.DebugFormat("New offset2 {0}", newPos); | ||
2616 | 2617 | ||
2617 | newPos += part.OffsetPosition; | 2618 | newPos += part.OffsetPosition; |
2618 | 2619 | ||
2619 | m_pos = newPos; | 2620 | m_pos = newPos; |
2621 | Rotation = newRot; | ||
2620 | ParentPosition = part.AbsolutePosition; | 2622 | ParentPosition = part.AbsolutePosition; |
2621 | } | 2623 | } |
2622 | else | 2624 | else |