Merge branch 'master' into careminster

Conflicts:
	OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
avinationmerge
Melanie 2012-09-03 14:05:18 +01:00
commit 96b50d28f4
1 changed files with 3 additions and 44 deletions

View File

@ -2314,31 +2314,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public void llSetRot(LSL_Rotation rot) public void llSetRot(LSL_Rotation rot)
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
SetRot(m_host, rot);
// try to let this work as in SL...
if (m_host.LinkNum < 2)
{
// Special case: If we are root, rotate complete SOG to new
// rotation.
// We are root if the link number is 0 (single prim) or 1
// (root prim). ParentID may be nonzero in attachments and
// using it would cause attachments and HUDs to rotate
// to the wrong positions.
SetRot(m_host, rot);
}
else
{
// we are a child. The rotation values will be set to the one of root modified by rot, as in SL. Don't ask.
SceneObjectPart rootPart;
if (m_host.ParentGroup != null) // better safe than sorry
{
rootPart = m_host.ParentGroup.RootPart;
if (rootPart != null)
SetRot(m_host, rootPart.RotationOffset * (Quaternion)rot);
}
}
ScriptSleep(200); ScriptSleep(200);
} }
@ -7870,23 +7846,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
break; break;
case (int)ScriptBaseClass.PRIM_ROTATION: case (int)ScriptBaseClass.PRIM_ROTATION:
case (int)ScriptBaseClass.PRIM_ROT_LOCAL:
if (remain < 1) if (remain < 1)
return null; return null;
LSL_Rotation q = rules.GetQuaternionItem(idx++); SetRot(part, rules.GetQuaternionItem(idx++));
SceneObjectPart rootPart = parentgrp.RootPart;
// try to let this work as in SL...
if (rootPart == part)
{
// special case: If we are root, rotate complete SOG to new rotation
SetRot(part, q);
}
else
{
// we are a child. The rotation values will be set to the one of root modified by rot, as in SL. Don't ask.
// sounds like sl bug that we need to replicate
SetRot(part, rootPart.RotationOffset * (Quaternion)q);
}
break; break;
@ -8223,11 +8187,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
string primDesc = rules.GetLSLStringItem(idx++); string primDesc = rules.GetLSLStringItem(idx++);
part.Description = primDesc; part.Description = primDesc;
break; break;
case (int)ScriptBaseClass.PRIM_ROT_LOCAL:
if (remain < 1)
return null;
SetRot(part, rules.GetQuaternionItem(idx++));
break;
case (int)ScriptBaseClass.PRIM_OMEGA: case (int)ScriptBaseClass.PRIM_OMEGA:
if (remain < 3) if (remain < 3)
return null; return null;