Thank you very much, Kmeisthax for:

This patch makes the "Show in Search" checkbox on the viewer work. Additionally, I also discovered that show-in-search objects use the JointWheel flag, so this patch currently uses that flag. LibSL needs to add a flag to enum LLObject.ObjectFlags, "IncludeSearch = 32768" so we aren't using a legacy flag.

Additionally this patch also contains a small fix to BaseHTTPServer that lets the response content-type to be something other than text/html. For some reason this didn't get submitted with the DataSnapshot merge.
This commit is contained in:
Charles Krinke
2008-04-16 03:55:21 +00:00
parent e777f88028
commit bf7e7b2c57
6 changed files with 82 additions and 3 deletions

View File

@@ -1236,6 +1236,50 @@ namespace OpenSim.Region.Environment.Scenes
}
}
public void MakeObjectSearchable(IClientAPI remoteClient, bool IncludeInSearch, uint localID)
{
LLUUID user = remoteClient.AgentId;
LLUUID objid = null;
SceneObjectPart obj = null;
List<EntityBase> EntityList = GetEntities();
foreach (EntityBase ent in EntityList)
{
if (ent is SceneObjectGroup)
{
foreach (KeyValuePair<LLUUID, SceneObjectPart> subent in ((SceneObjectGroup)ent).Children)
{
if (subent.Value.LocalId == localID)
{
objid = subent.Key;
obj = subent.Value;
}
}
}
}
//Protip: In my day, we didn't call them searchable objects, we called them limited point-to-point joints
//aka ObjectFlags.JointWheel = IncludeInSearch
//Permissions model: Object can be REMOVED from search IFF:
// * User owns object
//use CanEditObject
//Object can be ADDED to search IFF:
// * User owns object
// * Asset/DRM permission bit "modify" is enabled
//use CanEditObjectPosition
if (IncludeInSearch && PermissionsMngr.CanEditObject(user, objid))
{
obj.AddFlag(LLObject.ObjectFlags.JointWheel);
}
else if (!IncludeInSearch && PermissionsMngr.CanEditObjectPosition(user, objid))
{
obj.RemFlag(LLObject.ObjectFlags.JointWheel);
}
}
/// <summary>
/// Duplicate the given object.
/// </summary>