Replace axis rotation numeric constants (STATUS_ROTATE_XYZ) with symbols. Also made it so llSetStatus() can individually enable disable rotation axi using the bitmask of flags.

0.7.5-pf-bulletsim
Robert Adams 2012-12-18 14:59:41 -08:00
parent ae67435146
commit d15bfcf614
3 changed files with 19 additions and 9 deletions

View File

@ -99,6 +99,15 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary>
public partial class SceneObjectGroup : EntityBase, ISceneObject
{
// Axis selection bitmask used by SetAxisRotation()
// Just happen to be the same bits used by llSetStatus() and defined in ScriptBaseClass.
public enum axisSelect : int
{
STATUS_ROTATE_X = 0x002,
STATUS_ROTATE_Y = 0x004,
STATUS_ROTATE_Z = 0x008,
}
// private PrimCountTaintedDelegate handlerPrimCountTainted = null;
/// <summary>

View File

@ -1918,11 +1918,11 @@ namespace OpenSim.Region.Framework.Scenes
public int GetAxisRotation(int axis)
{
//Cannot use ScriptBaseClass constants as no referance to it currently.
if (axis == 2)//STATUS_ROTATE_X
if (axis == (int)SceneObjectGroup.axisSelect.STATUS_ROTATE_X)
return STATUS_ROTATE_X;
if (axis == 4)//STATUS_ROTATE_Y
if (axis == (int)SceneObjectGroup.axisSelect.STATUS_ROTATE_Y)
return STATUS_ROTATE_Y;
if (axis == 8)//STATUS_ROTATE_Z
if (axis == (int)SceneObjectGroup.axisSelect.STATUS_ROTATE_Z)
return STATUS_ROTATE_Z;
return 0;
@ -2671,13 +2671,13 @@ namespace OpenSim.Region.Framework.Scenes
ParentGroup.SetAxisRotation(axis, rotate);
//Cannot use ScriptBaseClass constants as no referance to it currently.
if (axis == 2)//STATUS_ROTATE_X
if ((axis & (int)SceneObjectGroup.axisSelect.STATUS_ROTATE_X) != 0)
STATUS_ROTATE_X = rotate;
if (axis == 4)//STATUS_ROTATE_Y
if ((axis & (int)SceneObjectGroup.axisSelect.STATUS_ROTATE_Y) != 0)
STATUS_ROTATE_Y = rotate;
if (axis == 8)//STATUS_ROTATE_Z
if ((axis & (int)SceneObjectGroup.axisSelect.STATUS_ROTATE_Z) != 0)
STATUS_ROTATE_Z = rotate;
}

View File

@ -1334,19 +1334,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return 0;
case ScriptBaseClass.STATUS_ROTATE_X:
if (m_host.GetAxisRotation(2) == 2)
// if (m_host.GetAxisRotation(2) != 0)
if (m_host.GetAxisRotation((int)SceneObjectGroup.axisSelect.STATUS_ROTATE_X) != 0)
return 1;
else
return 0;
case ScriptBaseClass.STATUS_ROTATE_Y:
if (m_host.GetAxisRotation(4) == 4)
if (m_host.GetAxisRotation((int)SceneObjectGroup.axisSelect.STATUS_ROTATE_Y) != 0)
return 1;
else
return 0;
case ScriptBaseClass.STATUS_ROTATE_Z:
if (m_host.GetAxisRotation(8) == 8)
if (m_host.GetAxisRotation((int)SceneObjectGroup.axisSelect.STATUS_ROTATE_Z) != 0)
return 1;
else
return 0;