aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs47
1 files changed, 3 insertions, 44 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index bf29288..dda8257 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2314,31 +2314,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2314 public void llSetRot(LSL_Rotation rot) 2314 public void llSetRot(LSL_Rotation rot)
2315 { 2315 {
2316 m_host.AddScriptLPS(1); 2316 m_host.AddScriptLPS(1);
2317 2317 SetRot(m_host, rot);
2318 // try to let this work as in SL...
2319 if (m_host.LinkNum < 2)
2320 {
2321 // Special case: If we are root, rotate complete SOG to new
2322 // rotation.
2323 // We are root if the link number is 0 (single prim) or 1
2324 // (root prim). ParentID may be nonzero in attachments and
2325 // using it would cause attachments and HUDs to rotate
2326 // to the wrong positions.
2327
2328 SetRot(m_host, rot);
2329 }
2330 else
2331 {
2332 // we are a child. The rotation values will be set to the one of root modified by rot, as in SL. Don't ask.
2333 SceneObjectPart rootPart;
2334 if (m_host.ParentGroup != null) // better safe than sorry
2335 {
2336 rootPart = m_host.ParentGroup.RootPart;
2337 if (rootPart != null)
2338 SetRot(m_host, rootPart.RotationOffset * (Quaternion)rot);
2339 }
2340 }
2341
2342 ScriptSleep(200); 2318 ScriptSleep(200);
2343 } 2319 }
2344 2320
@@ -7870,23 +7846,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7870 7846
7871 break; 7847 break;
7872 case (int)ScriptBaseClass.PRIM_ROTATION: 7848 case (int)ScriptBaseClass.PRIM_ROTATION:
7849 case (int)ScriptBaseClass.PRIM_ROT_LOCAL:
7873 if (remain < 1) 7850 if (remain < 1)
7874 return null; 7851 return null;
7875 7852
7876 LSL_Rotation q = rules.GetQuaternionItem(idx++); 7853 SetRot(part, rules.GetQuaternionItem(idx++));
7877 SceneObjectPart rootPart = parentgrp.RootPart;
7878 // try to let this work as in SL...
7879 if (rootPart == part)
7880 {
7881 // special case: If we are root, rotate complete SOG to new rotation
7882 SetRot(part, q);
7883 }
7884 else
7885 {
7886 // we are a child. The rotation values will be set to the one of root modified by rot, as in SL. Don't ask.
7887 // sounds like sl bug that we need to replicate
7888 SetRot(part, rootPart.RotationOffset * (Quaternion)q);
7889 }
7890 7854
7891 break; 7855 break;
7892 7856
@@ -8223,11 +8187,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8223 string primDesc = rules.GetLSLStringItem(idx++); 8187 string primDesc = rules.GetLSLStringItem(idx++);
8224 part.Description = primDesc; 8188 part.Description = primDesc;
8225 break; 8189 break;
8226 case (int)ScriptBaseClass.PRIM_ROT_LOCAL:
8227 if (remain < 1)
8228 return null;
8229 SetRot(part, rules.GetQuaternionItem(idx++));
8230 break;
8231 case (int)ScriptBaseClass.PRIM_OMEGA: 8190 case (int)ScriptBaseClass.PRIM_OMEGA:
8232 if (remain < 3) 8191 if (remain < 3)
8233 return null; 8192 return null;