* Renaming ObjectPropertiesRequestType to ReportType, filling out the enum
Simian:
* Added UUIDNameRequest, MultipleObjectUpdate, ObjectDeselect, and RequestObjectPropertiesFamily handlers
* Fixed some bugs in object-object collision
* Slightly improved prim spawn location (will always be hacky until we have a collision system)

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2177 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
John Hurliman
2008-08-28 02:38:32 +00:00
parent 5144fd6b32
commit eb8ee37b34
4 changed files with 185 additions and 23 deletions

View File

@@ -25,6 +25,7 @@ namespace Simian.Extensions
Server.UDPServer.RegisterPacketCallback(PacketType.AgentSetAppearance, new UDPServer.PacketCallback(AgentSetAppearanceHandler));
Server.UDPServer.RegisterPacketCallback(PacketType.AgentAnimation, new UDPServer.PacketCallback(AgentAnimationHandler));
Server.UDPServer.RegisterPacketCallback(PacketType.ViewerEffect, new UDPServer.PacketCallback(ViewerEffectHandler));
Server.UDPServer.RegisterPacketCallback(PacketType.UUIDNameRequest, new UDPServer.PacketCallback(UUIDNameRequestHandler));
}
public void Stop()
@@ -232,6 +233,45 @@ namespace Simian.Extensions
}
}
void UUIDNameRequestHandler(Packet packet, Agent agent)
{
UUIDNameRequestPacket request = (UUIDNameRequestPacket)packet;
Dictionary<UUID, Agent> replies = new Dictionary<UUID, Agent>(request.UUIDNameBlock.Length);
// FIXME: This is messy/slow until we get a proper ISceneProvider
for (int i = 0; i < request.UUIDNameBlock.Length; i++)
{
lock (Server.Agents)
{
foreach (Agent curAgent in Server.Agents.Values)
{
if (curAgent.AgentID == request.UUIDNameBlock[i].ID)
{
replies[curAgent.AgentID] = curAgent;
break;
}
}
}
}
if (replies.Count > 0)
{
UUIDNameReplyPacket reply = new UUIDNameReplyPacket();
reply.UUIDNameBlock = new UUIDNameReplyPacket.UUIDNameBlockBlock[replies.Count];
int i = 0;
foreach (KeyValuePair<UUID, Agent> kvp in replies)
{
reply.UUIDNameBlock[i] = new UUIDNameReplyPacket.UUIDNameBlockBlock();
reply.UUIDNameBlock[i].ID = kvp.Key;
reply.UUIDNameBlock[i].FirstName = Utils.StringToBytes(kvp.Value.FirstName);
reply.UUIDNameBlock[i].LastName = Utils.StringToBytes(kvp.Value.LastName);
}
agent.SendPacket(reply);
}
}
public static AvatarAppearancePacket BuildAppearancePacket(Agent agent)
{
AvatarAppearancePacket appearance = new AvatarAppearancePacket();