diff options
author | SignpostMarv | 2012-09-02 13:43:16 +0100 |
---|---|---|
committer | Melanie | 2012-09-03 13:55:40 +0100 |
commit | f7b88d1c40ba06c62491d8d32809fe6c1c4d360d (patch) | |
tree | 5b97a9d7e933ce11b3d82caed02399b3cf77f9f3 /OpenSim | |
parent | BulletSim: update the SOs and DLLs (diff) | |
download | opensim-SC_OLD-f7b88d1c40ba06c62491d8d32809fe6c1c4d360d.zip opensim-SC_OLD-f7b88d1c40ba06c62491d8d32809fe6c1c4d360d.tar.gz opensim-SC_OLD-f7b88d1c40ba06c62491d8d32809fe6c1c4d360d.tar.bz2 opensim-SC_OLD-f7b88d1c40ba06c62491d8d32809fe6c1c4d360d.tar.xz |
made setting rotation match Second Life
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 33 |
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; |