aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-08-29 23:40:21 +0100
committerJustin Clark-Casey (justincc)2014-08-29 23:40:21 +0100
commit099212167b2b3d5f8bdf529d24a6c47536716706 (patch)
tree7f258a6c50ee2b00c81c82e588afb4ccdb7329ae /OpenSim/Region/ScriptEngine/Shared/Api/Implementation
parentIgnore whitespace when reading serialized XML objects. (diff)
downloadopensim-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.cs18
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())