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.
0.6.2-post-fixes
Dr Scofield 2009-01-13 08:15:43 +00:00
parent efcf6ff095
commit 9bcaf98e37
2 changed files with 5 additions and 1 deletions

View File

@ -1434,6 +1434,9 @@ namespace OpenSim.Region.Environment.Scenes
foreach (UUID taskID in taskIDict.Keys)
{
UnRegisterControlEventsToScript(LocalId, taskID);
taskIDict[taskID].PermsMask &= ~(
2048 | //PERMISSION_CONTROL_CAMERA
4); // PERMISSION_TAKE_CONTROLS
}
}

View File

@ -2958,7 +2958,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
// When agent is sitting, certain permissions are implicit if requested from sitting agent
int implicitPerms = ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION |
ScriptBaseClass.PERMISSION_CONTROL_CAMERA |
ScriptBaseClass.PERMISSION_TRACK_CAMERA;
ScriptBaseClass.PERMISSION_TRACK_CAMERA |
ScriptBaseClass.PERMISSION_TAKE_CONTROLS;
if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms
{