diff options
author | Justin Clark-Casey (justincc) | 2014-08-29 23:40:21 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2014-08-29 23:40:21 +0100 |
commit | 099212167b2b3d5f8bdf529d24a6c47536716706 (patch) | |
tree | 7f258a6c50ee2b00c81c82e588afb4ccdb7329ae /OpenSim/Region/ScriptEngine/Shared/Api/Implementation | |
parent | Ignore whitespace when reading serialized XML objects. (diff) | |
download | opensim-SC_OLD-099212167b2b3d5f8bdf529d24a6c47536716706.zip opensim-SC_OLD-099212167b2b3d5f8bdf529d24a6c47536716706.tar.gz opensim-SC_OLD-099212167b2b3d5f8bdf529d24a6c47536716706.tar.bz2 opensim-SC_OLD-099212167b2b3d5f8bdf529d24a6c47536716706.tar.xz |
Implement STATUS_BLOCK_GRAB_OBJECT in llSetStatus()/llGetStatus() and correct effect of STATUS_BLOCK_GRAB
As per http://wiki.secondlife.com/wiki/LlSetStatus
Setting STATUS_BLOCK_GRAB_OBJECT prevents or allows move of a physical linkset by grab on any prim.
Setting STATUS_BLOCK_GRAB prevents or allows move of a physical linkset by grab on a particular prim.
Previously, setting STATUS_BLOCK_GRAB would prevent drag via all prims of the linkset.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 50e4804..5aef892 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -1377,12 +1377,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1377 | } | 1377 | } |
1378 | 1378 | ||
1379 | if ((status & ScriptBaseClass.STATUS_BLOCK_GRAB) == ScriptBaseClass.STATUS_BLOCK_GRAB) | 1379 | if ((status & ScriptBaseClass.STATUS_BLOCK_GRAB) == ScriptBaseClass.STATUS_BLOCK_GRAB) |
1380 | { | 1380 | m_host.BlockGrab = value != 0; |
1381 | if (value != 0) | 1381 | |
1382 | m_host.SetBlockGrab(true); | 1382 | if ((status & ScriptBaseClass.STATUS_BLOCK_GRAB_OBJECT) == ScriptBaseClass.STATUS_BLOCK_GRAB_OBJECT) |
1383 | else | 1383 | m_host.ParentGroup.BlockGrabOverride = value != 0; |
1384 | m_host.SetBlockGrab(false); | ||
1385 | } | ||
1386 | 1384 | ||
1387 | if ((status & ScriptBaseClass.STATUS_DIE_AT_EDGE) == ScriptBaseClass.STATUS_DIE_AT_EDGE) | 1385 | if ((status & ScriptBaseClass.STATUS_DIE_AT_EDGE) == ScriptBaseClass.STATUS_DIE_AT_EDGE) |
1388 | { | 1386 | { |
@@ -1443,10 +1441,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1443 | return 0; | 1441 | return 0; |
1444 | 1442 | ||
1445 | case ScriptBaseClass.STATUS_BLOCK_GRAB: | 1443 | case ScriptBaseClass.STATUS_BLOCK_GRAB: |
1446 | if (m_host.GetBlockGrab()) | 1444 | return m_host.BlockGrab ? 1 : 0; |
1447 | return 1; | 1445 | |
1448 | else | 1446 | case ScriptBaseClass.STATUS_BLOCK_GRAB_OBJECT: |
1449 | return 0; | 1447 | return m_host.ParentGroup.BlockGrabOverride ? 1 : 0; |
1450 | 1448 | ||
1451 | case ScriptBaseClass.STATUS_DIE_AT_EDGE: | 1449 | case ScriptBaseClass.STATUS_DIE_AT_EDGE: |
1452 | if (m_host.GetDieAtEdge()) | 1450 | if (m_host.GetDieAtEdge()) |