aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDr Scofield2009-01-13 08:15:43 +0000
committerDr Scofield2009-01-13 08:15:43 +0000
commit9bcaf98e37e9aba10f84e71e85cf8f79bb5f580a (patch)
tree233c1d3418fd9be2f44174806b55c9afc50775fb
parent* Extend current stub packet handler test into a really basic one that checks... (diff)
downloadopensim-SC_OLD-9bcaf98e37e9aba10f84e71e85cf8f79bb5f580a.zip
opensim-SC_OLD-9bcaf98e37e9aba10f84e71e85cf8f79bb5f580a.tar.gz
opensim-SC_OLD-9bcaf98e37e9aba10f84e71e85cf8f79bb5f580a.tar.bz2
opensim-SC_OLD-9bcaf98e37e9aba10f84e71e85cf8f79bb5f580a.tar.xz
From: Christopher Yeoh <yeohc@au1.ibm.com>
The attached patch adds the automatic granting of PERMISSION_CONTROL_CAMERA on request to a script when an avatar is sitting on the object that the script resides in. It also automatically removes PERMISSION_TAKE_CONTROLS and PERMISSION_CONTROL_CAMERA from the scripts when an avatar stands up. It doesn't remove the other automatically granted permissions but this follows LL server behavior. Removing these two permissions avoids some potential race conditions (accidentally taking control after the avatar has stood up) which may be why LL put them in the first place.
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs3
2 files changed, 5 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 78e3a83..1a3971d 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -1434,6 +1434,9 @@ namespace OpenSim.Region.Environment.Scenes
1434 foreach (UUID taskID in taskIDict.Keys) 1434 foreach (UUID taskID in taskIDict.Keys)
1435 { 1435 {
1436 UnRegisterControlEventsToScript(LocalId, taskID); 1436 UnRegisterControlEventsToScript(LocalId, taskID);
1437 taskIDict[taskID].PermsMask &= ~(
1438 2048 | //PERMISSION_CONTROL_CAMERA
1439 4); // PERMISSION_TAKE_CONTROLS
1437 } 1440 }
1438 } 1441 }
1439 1442
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 34a3a26..393e708 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2958,7 +2958,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2958 // When agent is sitting, certain permissions are implicit if requested from sitting agent 2958 // When agent is sitting, certain permissions are implicit if requested from sitting agent
2959 int implicitPerms = ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION | 2959 int implicitPerms = ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION |
2960 ScriptBaseClass.PERMISSION_CONTROL_CAMERA | 2960 ScriptBaseClass.PERMISSION_CONTROL_CAMERA |
2961 ScriptBaseClass.PERMISSION_TRACK_CAMERA; 2961 ScriptBaseClass.PERMISSION_TRACK_CAMERA |
2962 ScriptBaseClass.PERMISSION_TAKE_CONTROLS;
2962 2963
2963 if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms 2964 if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms
2964 { 2965 {