mirror of
https://github.com/opensim/opensim.git
synced 2026-08-10 11:33:28 +08:00
* Added AvatarPicker in Standalone mode. Works for finding avatar to ban, manually trying to add a friend (with the add button) or useful to those who are curious which usernames have visited your standalone sim. Important for future development :D.
* Grid mode always returns 0 results until the Grid Communications portion is done.
This commit is contained in:
@@ -55,6 +55,7 @@ namespace OpenSim.Region.ClientStack
|
||||
public event UpdateAgent OnAgentUpdate;
|
||||
public event AgentRequestSit OnAgentRequestSit;
|
||||
public event AgentSit OnAgentSit;
|
||||
public event AvatarPickerRequest OnAvatarPickerRequest;
|
||||
public event StartAnim OnStartAnim;
|
||||
public event Action<IClientAPI> OnRequestAvatarsData;
|
||||
public event LinkObjects OnLinkObjects;
|
||||
@@ -705,6 +706,10 @@ namespace OpenSim.Region.ClientStack
|
||||
sendXfer.DataPacket.Data = data;
|
||||
OutPacket(sendXfer);
|
||||
}
|
||||
public void SendAvatarPickerReply(AvatarPickerReplyPacket replyPacket)
|
||||
{
|
||||
OutPacket(replyPacket);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
|
||||
@@ -217,7 +217,16 @@ namespace OpenSim.Region.ClientStack
|
||||
OnAgentSit(this, agentSit.AgentData.AgentID);
|
||||
}
|
||||
break;
|
||||
|
||||
case PacketType.AvatarPickerRequest:
|
||||
AvatarPickerRequestPacket avRequestQuery = (AvatarPickerRequestPacket)Pack;
|
||||
AvatarPickerRequestPacket.AgentDataBlock Requestdata = avRequestQuery.AgentData;
|
||||
AvatarPickerRequestPacket.DataBlock querydata = avRequestQuery.Data;
|
||||
//System.Console.WriteLine("Agent Sends:" + Helpers.FieldToUTF8String(querydata.Name));
|
||||
if (OnAvatarPickerRequest != null)
|
||||
{
|
||||
OnAvatarPickerRequest(this, Requestdata.AgentID, Requestdata.QueryID, Helpers.FieldToUTF8String(querydata.Name));
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region Objects/m_sceneObjects
|
||||
|
||||
@@ -295,11 +295,16 @@ namespace OpenSim.Region.ClientStack
|
||||
queuedLast = false;
|
||||
|
||||
// TODO: May be a bit expensive doing this twice.
|
||||
throttleSentPeriod += nextPacket.Packet.ToBytes().Length;
|
||||
|
||||
//Don't throttle AvatarPickerReplies!, they return a null .ToBytes()!
|
||||
if (nextPacket.Packet.Type != PacketType.AvatarPickerReply)
|
||||
throttleSentPeriod += nextPacket.Packet.ToBytes().Length;
|
||||
|
||||
|
||||
//is a out going packet
|
||||
DebugPacket("OUT", nextPacket.Packet);
|
||||
ProcessOutPacket(nextPacket.Packet);
|
||||
//is a out going packet
|
||||
DebugPacket("OUT", nextPacket.Packet);
|
||||
ProcessOutPacket(nextPacket.Packet);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using libsecondlife;
|
||||
using Nwc.XmlRpc;
|
||||
@@ -85,6 +86,13 @@ namespace OpenSim.Region.Communications.OGS1
|
||||
return GetUserProfile(firstName + " " + lastName);
|
||||
}
|
||||
|
||||
|
||||
public List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(LLUUID queryID, string query)
|
||||
{
|
||||
List<AvatarPickerAvatar> pickerlist = new List<AvatarPickerAvatar>();
|
||||
|
||||
return pickerlist;
|
||||
}
|
||||
public UserProfileData GetUserProfile(string name)
|
||||
{
|
||||
try
|
||||
|
||||
@@ -29,6 +29,7 @@ using System.Collections.Generic;
|
||||
using libsecondlife;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.UserManagement;
|
||||
using OpenSim.Framework.Console;
|
||||
|
||||
namespace OpenSim.Region.Environment.Scenes
|
||||
@@ -155,5 +156,43 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
}
|
||||
}
|
||||
}
|
||||
public void ProcessAvatarPickerRequest(IClientAPI client, LLUUID avatarID, LLUUID RequestID, string query)
|
||||
{
|
||||
//EventManager.TriggerAvatarPickerRequest();
|
||||
|
||||
|
||||
List<AvatarPickerAvatar> AvatarResponses = new List<AvatarPickerAvatar>();
|
||||
AvatarResponses = CommsManager.GenerateAgentPickerRequestResponse(RequestID, query);
|
||||
|
||||
AvatarPickerReplyPacket replyPacket = new AvatarPickerReplyPacket();
|
||||
AvatarPickerReplyPacket.DataBlock[] searchData = new AvatarPickerReplyPacket.DataBlock[AvatarResponses.Count];
|
||||
AvatarPickerReplyPacket.AgentDataBlock agentData = new AvatarPickerReplyPacket.AgentDataBlock();
|
||||
|
||||
agentData.AgentID = avatarID;
|
||||
agentData.QueryID = RequestID;
|
||||
replyPacket.AgentData = agentData;
|
||||
byte[] bytes = new byte[AvatarResponses.Count * 32];
|
||||
|
||||
int i = 0;
|
||||
foreach (AvatarPickerAvatar item in AvatarResponses)
|
||||
{
|
||||
LLUUID translatedIDtem = item.AvatarID;
|
||||
searchData[i] = new AvatarPickerReplyPacket.DataBlock();
|
||||
searchData[i].AvatarID = translatedIDtem;
|
||||
searchData[i].FirstName = Helpers.StringToField((string)item.firstName);
|
||||
searchData[i].LastName = Helpers.StringToField((string)item.lastName);
|
||||
i++;
|
||||
|
||||
}
|
||||
if (AvatarResponses.Count == 0)
|
||||
{
|
||||
searchData = new AvatarPickerReplyPacket.DataBlock[0];
|
||||
}
|
||||
replyPacket.Data = searchData;
|
||||
client.SendAvatarPickerReply(replyPacket);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -38,10 +38,10 @@ using OpenSim.Framework;
|
||||
using OpenSim.Framework.Communications;
|
||||
using OpenSim.Framework.Communications.Cache;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Region.Environment.LandManagement;
|
||||
using OpenSim.Framework.Servers;
|
||||
using OpenSim.Region.Capabilities;
|
||||
using OpenSim.Region.Environment.Interfaces;
|
||||
using OpenSim.Region.Environment.LandManagement;
|
||||
using OpenSim.Region.Environment.Modules;
|
||||
using OpenSim.Region.Environment.Scenes.Scripting;
|
||||
using OpenSim.Region.Environment.Types;
|
||||
@@ -732,7 +732,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
client.OnRemoveTaskItem += RemoveTaskInventory;
|
||||
|
||||
client.OnGrabObject += ProcessObjectGrab;
|
||||
|
||||
client.OnAvatarPickerRequest += ProcessAvatarPickerRequest;
|
||||
|
||||
EventManager.TriggerOnNewClient(client);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,9 +32,11 @@ using libsecondlife;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework.Communications;
|
||||
using OpenSim.Region.Environment.Types;
|
||||
using OpenSim.Region.Physics.Manager;
|
||||
|
||||
|
||||
namespace OpenSim.Region.Environment.Scenes
|
||||
{
|
||||
public partial class ScenePresence : EntityBase
|
||||
@@ -274,6 +276,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
m_controllingClient.OnAgentRequestSit += HandleAgentRequestSit;
|
||||
m_controllingClient.OnAgentSit += HandleAgentSit;
|
||||
m_controllingClient.OnSetAlwaysRun += HandleSetAlwaysRun;
|
||||
|
||||
// ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack);
|
||||
// ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
|
||||
//ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
|
||||
@@ -1227,5 +1230,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
{
|
||||
m_controllingClient.SendWearables(m_wearables, m_wearablesSerial++);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,6 +71,7 @@ namespace SimpleApp
|
||||
public event UpdateAgent OnAgentUpdate;
|
||||
public event AgentRequestSit OnAgentRequestSit;
|
||||
public event AgentSit OnAgentSit;
|
||||
public event AvatarPickerRequest OnAvatarPickerRequest;
|
||||
public event Action<IClientAPI> OnRequestAvatarsData;
|
||||
public event AddNewPrim OnAddPrim;
|
||||
public event ObjectDuplicate OnObjectDuplicate;
|
||||
@@ -179,7 +180,10 @@ namespace SimpleApp
|
||||
public virtual void SendStartPingCheck(byte seq)
|
||||
{
|
||||
}
|
||||
public virtual void SendAvatarPickerReply(AvatarPickerReplyPacket response)
|
||||
{
|
||||
|
||||
}
|
||||
public virtual void SendKillObject(ulong regionHandle, uint localID)
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user