Added AvatarPropertiesReply and basic ImageDelivery extension to Simian.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2111 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
61
Programs/Simian/Extensions/AvatarPropertiesReply.cs
Normal file
61
Programs/Simian/Extensions/AvatarPropertiesReply.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.Packets;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Simian.Extensions
|
||||
{
|
||||
class AvatarPropertiesReply : ISimianExtension
|
||||
{
|
||||
Simian Server;
|
||||
|
||||
public AvatarPropertiesReply(Simian server)
|
||||
{
|
||||
Server = server;
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Server.UDPServer.RegisterPacketCallback(PacketType.AvatarPropertiesRequest, new UDPServer.PacketCallback(AvatarPropertiesRequestHandler));
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
|
||||
void AvatarPropertiesRequestHandler(Packet packet, Agent agent)
|
||||
{
|
||||
AvatarPropertiesRequestPacket request = (AvatarPropertiesRequestPacket)packet;
|
||||
|
||||
lock (Server.Agents)
|
||||
{
|
||||
foreach (Agent agt in Server.Agents.Values)
|
||||
{
|
||||
if (agent.AgentID == request.AgentData.AvatarID)
|
||||
{
|
||||
AvatarPropertiesReplyPacket reply = new AvatarPropertiesReplyPacket();
|
||||
reply.AgentData.AgentID = agt.AgentID;
|
||||
reply.AgentData.AvatarID = request.AgentData.AvatarID;
|
||||
reply.PropertiesData.AboutText = Utils.StringToBytes("Profile info unavailable");
|
||||
reply.PropertiesData.BornOn = Utils.StringToBytes("Unknown");
|
||||
reply.PropertiesData.CharterMember = Utils.StringToBytes("Test User");
|
||||
reply.PropertiesData.FLAboutText = Utils.StringToBytes("First life info unavailable");
|
||||
reply.PropertiesData.Flags = 0;
|
||||
//TODO: at least generate static image uuids based on name.
|
||||
//this will prevent re-caching the default image for the same av name.
|
||||
reply.PropertiesData.FLImageID = agent.AgentID; //temporary hack
|
||||
reply.PropertiesData.ImageID = agent.AgentID; //temporary hack
|
||||
reply.PropertiesData.PartnerID = UUID.Zero;
|
||||
reply.PropertiesData.ProfileURL = Utils.StringToBytes(String.Empty);
|
||||
|
||||
agent.SendPacket(reply);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
59
Programs/Simian/Extensions/ImageDelivery.cs
Normal file
59
Programs/Simian/Extensions/ImageDelivery.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.Imaging;
|
||||
using OpenMetaverse.Packets;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
|
||||
namespace Simian.Extensions
|
||||
{
|
||||
public class ImageDelivery : ISimianExtension
|
||||
{
|
||||
Simian Server;
|
||||
Bitmap DefaultImage;
|
||||
|
||||
public ImageDelivery(Simian server)
|
||||
{
|
||||
Server = server;
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Server.UDPServer.RegisterPacketCallback(PacketType.RequestImage, new UDPServer.PacketCallback(RequestImageHandler));
|
||||
|
||||
if (DefaultImage != null) DefaultImage = null;
|
||||
DefaultImage = new Bitmap(32, 32);
|
||||
Graphics gfx = Graphics.FromImage(DefaultImage);
|
||||
gfx.Clear(Color.White);
|
||||
gfx.FillRectangles(Brushes.LightGray, new Rectangle[] { new Rectangle(16, 16, 16, 16), new Rectangle(0, 0, 16, 16) });
|
||||
gfx.DrawImage(DefaultImage, 0, 0, 32, 32);
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
|
||||
void RequestImageHandler(Packet packet, Agent agent)
|
||||
{
|
||||
RequestImagePacket request = (RequestImagePacket)packet;
|
||||
|
||||
foreach (RequestImagePacket.RequestImageBlock block in request.RequestImage)
|
||||
{
|
||||
//ImageNotInDatabasePacket missing = new ImageNotInDatabasePacket();
|
||||
//missing.ImageID.ID = block.Image;
|
||||
//agent.SendPacket(missing);
|
||||
|
||||
ImageDataPacket imageData = new ImageDataPacket();
|
||||
imageData.ImageData.Data = OpenJPEG.EncodeFromImage(DefaultImage, true);
|
||||
imageData.ImageID.ID = block.Image;
|
||||
imageData.ImageID.Codec = 1;
|
||||
imageData.ImageID.Packets = 1;
|
||||
imageData.ImageID.Size = (uint)imageData.ImageData.Data.Length;
|
||||
|
||||
agent.SendPacket(imageData);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user