mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
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:
@@ -163,6 +163,7 @@ namespace OpenSim.Region.ClientStack
|
||||
private ObjectDuplicateOnRay handlerObjectDuplicateOnRay = null;
|
||||
private ObjectSelect handlerObjectSelect = null;
|
||||
private ObjectDeselect handlerObjectDeselect = null;
|
||||
private ObjectIncludeInSearch handlerObjectIncludeInSearch = null;
|
||||
private UpdatePrimFlags handlerUpdatePrimFlags = null; //OnUpdatePrimFlags;
|
||||
private UpdatePrimTexture handlerUpdatePrimTexture = null;
|
||||
private UpdateVector handlerGrabObject = null; //OnGrabObject;
|
||||
@@ -699,6 +700,7 @@ namespace OpenSim.Region.ClientStack
|
||||
public event ObjectDeselect OnObjectDeselect;
|
||||
public event GenericCall7 OnObjectDescription;
|
||||
public event GenericCall7 OnObjectName;
|
||||
public event ObjectIncludeInSearch OnObjectIncludeInSearch;
|
||||
public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
|
||||
public event UpdatePrimFlags OnUpdatePrimFlags;
|
||||
public event UpdatePrimTexture OnUpdatePrimTexture;
|
||||
@@ -3791,6 +3793,22 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
|
||||
break;
|
||||
case PacketType.ObjectIncludeInSearch:
|
||||
//This lets us set objects to appear in search (stuff like DataSnapshot, etc)
|
||||
ObjectIncludeInSearchPacket packInSearch = (ObjectIncludeInSearchPacket)Pack;
|
||||
handlerObjectIncludeInSearch = null;
|
||||
|
||||
foreach (ObjectIncludeInSearchPacket.ObjectDataBlock objData in packInSearch.ObjectData) {
|
||||
bool inSearch = objData.IncludeInSearch;
|
||||
uint localID = objData.ObjectLocalID;
|
||||
|
||||
handlerObjectIncludeInSearch = OnObjectIncludeInSearch;
|
||||
|
||||
if (handlerObjectIncludeInSearch != null) {
|
||||
handlerObjectIncludeInSearch(this, inSearch, localID);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -1578,6 +1578,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
client.OnAvatarPickerRequest += ProcessAvatarPickerRequest;
|
||||
client.OnPacketStats += AddPacketStats;
|
||||
|
||||
client.OnObjectIncludeInSearch += m_innerScene.MakeObjectSearchable;
|
||||
|
||||
EventManager.TriggerOnNewClient(client);
|
||||
}
|
||||
|
||||
|
||||
@@ -161,6 +161,8 @@ namespace OpenSim.Region.Examples.SimpleModule
|
||||
public event MoneyBalanceRequest OnMoneyBalanceRequest;
|
||||
public event UpdateAvatarProperties OnUpdateAvatarProperties;
|
||||
|
||||
public event ObjectIncludeInSearch OnObjectIncludeInSearch;
|
||||
|
||||
|
||||
#pragma warning restore 67
|
||||
|
||||
|
||||
Reference in New Issue
Block a user