aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs26
1 files changed, 25 insertions, 1 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 2dbbf70..4e665e9 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -1978,6 +1978,30 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1978 return new LSL_Rotation(q.X, q.Y, q.Z, q.W); 1978 return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
1979 } 1979 }
1980 1980
1981 private LSL_Rotation GetPartRot( SceneObjectPart part )
1982 {
1983 Quaternion q;
1984 if (part.LinkNum == 0 || part.LinkNum == 1) // unlinked or root prim
1985 {
1986 if (part.ParentGroup.RootPart.AttachmentPoint != 0)
1987 {
1988 ScenePresence avatar = World.GetScenePresence(part.AttachedAvatar);
1989 if (avatar != null)
1990 if ((avatar.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0)
1991 q = avatar.CameraRotation; // Mouselook
1992 else
1993 q = avatar.Rotation; // Currently infrequently updated so may be inaccurate
1994 else
1995 q = part.ParentGroup.GroupRotation; // Likely never get here but just in case
1996 }
1997 else
1998 q = part.ParentGroup.GroupRotation; // just the group rotation
1999 return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
2000 }
2001 q = part.GetWorldRotation();
2002 return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
2003 }
2004
1981 public LSL_Rotation llGetLocalRot() 2005 public LSL_Rotation llGetLocalRot()
1982 { 2006 {
1983 m_host.AddScriptLPS(1); 2007 m_host.AddScriptLPS(1);
@@ -7299,7 +7323,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7299 break; 7323 break;
7300 7324
7301 case (int)ScriptBaseClass.PRIM_ROTATION: 7325 case (int)ScriptBaseClass.PRIM_ROTATION:
7302 res.Add(llGetRot()); 7326 res.Add(GetPartRot(part));
7303 break; 7327 break;
7304 7328
7305 case (int)ScriptBaseClass.PRIM_TYPE: 7329 case (int)ScriptBaseClass.PRIM_TYPE: