From 2a3bdde0fa78c5a59c530e6d974dfd6709aa1519 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Wed, 23 Apr 2008 15:32:19 +0000 Subject: * Adds llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z,TF) * Currently if you apply that to only one or two axis you get unpredictable and sometimes explosive results. * Three axis works well enough to play with it anyway. More work is needed here. * Fixed an incorrectly named method in ODE.NET --- .../Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Common') diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 3dff98f..09cd4af 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs @@ -692,6 +692,9 @@ namespace OpenSim.Region.ScriptEngine.Common public void llSetStatus(int status, int value) { m_host.AddScriptLPS(1); + + int statusrotationaxis = 0; + if ((status & BuiltIn_Commands_BaseClass.STATUS_PHYSICS) == BuiltIn_Commands_BaseClass.STATUS_PHYSICS) { if (value == 1) @@ -713,15 +716,16 @@ namespace OpenSim.Region.ScriptEngine.Common } if ((status & BuiltIn_Commands_BaseClass.STATUS_ROTATE_X) == BuiltIn_Commands_BaseClass.STATUS_ROTATE_X) { - NotImplemented("llSetStatus - STATUS_ROTATE_X"); + statusrotationaxis |= BuiltIn_Commands_BaseClass.STATUS_ROTATE_X; + } if ((status & BuiltIn_Commands_BaseClass.STATUS_ROTATE_Y) == BuiltIn_Commands_BaseClass.STATUS_ROTATE_Y) { - NotImplemented("llSetStatus - STATUS_ROTATE_Y"); + statusrotationaxis |= BuiltIn_Commands_BaseClass.STATUS_ROTATE_Y; } if ((status & BuiltIn_Commands_BaseClass.STATUS_ROTATE_Z) == BuiltIn_Commands_BaseClass.STATUS_ROTATE_Z) { - NotImplemented("llSetStatus - STATUS_ROTATE_Z"); + statusrotationaxis |= BuiltIn_Commands_BaseClass.STATUS_ROTATE_Z; } if ((status & BuiltIn_Commands_BaseClass.STATUS_BLOCK_GRAB) == BuiltIn_Commands_BaseClass.STATUS_BLOCK_GRAB) { @@ -739,7 +743,11 @@ namespace OpenSim.Region.ScriptEngine.Common { NotImplemented("llSetStatus - STATUS_SANDBOX"); } - + if (statusrotationaxis != 0) + { + m_host.SetAxisRotation(statusrotationaxis, value); + + } return; } -- cgit v1.1