aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorSignpostMarv2012-09-02 13:43:16 +0100
committerMelanie2012-09-03 13:55:40 +0100
commitf7b88d1c40ba06c62491d8d32809fe6c1c4d360d (patch)
tree5b97a9d7e933ce11b3d82caed02399b3cf77f9f3 /OpenSim
parentBulletSim: update the SOs and DLLs (diff)
downloadopensim-SC-f7b88d1c40ba06c62491d8d32809fe6c1c4d360d.zip
opensim-SC-f7b88d1c40ba06c62491d8d32809fe6c1c4d360d.tar.gz
opensim-SC-f7b88d1c40ba06c62491d8d32809fe6c1c4d360d.tar.bz2
opensim-SC-f7b88d1c40ba06c62491d8d32809fe6c1c4d360d.tar.xz
made setting rotation match Second Life
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs33
1 files changed, 1 insertions, 32 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index be22cb4..9f952d1 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2083,23 +2083,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2083 public void llSetRot(LSL_Rotation rot) 2083 public void llSetRot(LSL_Rotation rot)
2084 { 2084 {
2085 m_host.AddScriptLPS(1); 2085 m_host.AddScriptLPS(1);
2086
2087 // try to let this work as in SL...
2088 if (m_host.ParentID == 0)
2089 {
2090 // special case: If we are root, rotate complete SOG to new rotation
2091 SetRot(m_host, rot); 2086 SetRot(m_host, rot);
2092 }
2093 else
2094 {
2095 // we are a child. The rotation values will be set to the one of root modified by rot, as in SL. Don't ask.
2096 SceneObjectPart rootPart = m_host.ParentGroup.RootPart;
2097 if (rootPart != null) // better safe than sorry
2098 {
2099 SetRot(m_host, rootPart.RotationOffset * (Quaternion)rot);
2100 }
2101 }
2102
2103 ScriptSleep(200); 2087 ScriptSleep(200);
2104 } 2088 }
2105 2089
@@ -7292,22 +7276,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7292 7276
7293 break; 7277 break;
7294 case (int)ScriptBaseClass.PRIM_ROTATION: 7278 case (int)ScriptBaseClass.PRIM_ROTATION:
7279 case (int)ScriptBaseClass.PRIM_ROT_LOCAL:
7295 if (remain < 1) 7280 if (remain < 1)
7296 return null; 7281 return null;
7297 7282
7298 LSL_Rotation q = rules.GetQuaternionItem(idx++); 7283 LSL_Rotation q = rules.GetQuaternionItem(idx++);
7299 // try to let this work as in SL...
7300 if (part.ParentID == 0)
7301 {
7302 // special case: If we are root, rotate complete SOG to new rotation
7303 SetRot(part, q); 7284 SetRot(part, q);
7304 }
7305 else
7306 {
7307 // we are a child. The rotation values will be set to the one of root modified by rot, as in SL. Don't ask.
7308 SceneObjectPart rootPart = part.ParentGroup.RootPart;
7309 SetRot(part, rootPart.RotationOffset * (Quaternion)q);
7310 }
7311 7285
7312 break; 7286 break;
7313 7287
@@ -7614,11 +7588,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7614 string primDesc = rules.GetLSLStringItem(idx++); 7588 string primDesc = rules.GetLSLStringItem(idx++);
7615 part.Description = primDesc; 7589 part.Description = primDesc;
7616 break; 7590 break;
7617 case (int)ScriptBaseClass.PRIM_ROT_LOCAL:
7618 if (remain < 1)
7619 return null;
7620 SetRot(part, rules.GetQuaternionItem(idx++));
7621 break;
7622 case (int)ScriptBaseClass.PRIM_OMEGA: 7591 case (int)ScriptBaseClass.PRIM_OMEGA:
7623 if (remain < 3) 7592 if (remain < 3)
7624 return null; 7593 return null;