diff options
Merge branch 'teravuswork' into avination
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 7ff30ca..7e77b0f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -2353,8 +2353,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2353 | { | 2353 | { |
2354 | m_host.AddScriptLPS(1); | 2354 | m_host.AddScriptLPS(1); |
2355 | 2355 | ||
2356 | |||
2357 | // Teravus: if (m_host.ParentID == 0) is bug code because the ParentID for the Avatar will cause this to be nonzero for root prim attachments | ||
2358 | // which is then treated like a child prim rotation and it's offset gets cumulatively multiplied against. | ||
2359 | // to fix the scripted rotations we also have to check to see if the root part localid is the same as the host's localid. | ||
2360 | // RootPart != null should shortcircuit | ||
2361 | |||
2356 | // try to let this work as in SL... | 2362 | // try to let this work as in SL... |
2357 | if (m_host.ParentID == 0) | 2363 | if (m_host.ParentID == 0 || (m_host.ParentGroup != null && m_host == m_host.ParentGroup.RootPart)) |
2358 | { | 2364 | { |
2359 | // special case: If we are root, rotate complete SOG to new rotation | 2365 | // special case: If we are root, rotate complete SOG to new rotation |
2360 | SetRot(m_host, rot); | 2366 | SetRot(m_host, rot); |
@@ -7911,7 +7917,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7911 | 7917 | ||
7912 | LSL_Rotation q = rules.GetQuaternionItem(idx++); | 7918 | LSL_Rotation q = rules.GetQuaternionItem(idx++); |
7913 | // try to let this work as in SL... | 7919 | // try to let this work as in SL... |
7914 | if (part.ParentID == 0) | 7920 | if (part.ParentID == 0 || (part.ParentGroup != null && part == part.ParentGroup.RootPart)) |
7915 | { | 7921 | { |
7916 | // special case: If we are root, rotate complete SOG to new rotation | 7922 | // special case: If we are root, rotate complete SOG to new rotation |
7917 | SetRot(part, q); | 7923 | SetRot(part, q); |