Moved Simian's RegionHandle property to main Simian class and AgentUpdate handling to Movement extension class. Added broadcasting of ObjectUpdate packets to all users when AgentUpdate is received. Added required inventory param to LogoutRequestReply.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2106 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -11,7 +11,6 @@ namespace Simian
|
||||
Simian server;
|
||||
int currentLocalID = 0;
|
||||
int currentWearablesSerialNum = 0;
|
||||
ulong regionHandle;
|
||||
|
||||
public SceneManager(Simian server)
|
||||
{
|
||||
@@ -20,12 +19,7 @@ namespace Simian
|
||||
|
||||
public void Start()
|
||||
{
|
||||
uint regionX = 256000;
|
||||
uint regionY = 256000;
|
||||
regionHandle = Helpers.UIntsToLong(regionX, regionY);
|
||||
|
||||
server.UDPServer.RegisterPacketCallback(PacketType.CompleteAgentMovement, new UDPServer.PacketCallback(CompleteAgentMovementHandler));
|
||||
server.UDPServer.RegisterPacketCallback(PacketType.AgentUpdate, new UDPServer.PacketCallback(AgentUpdateHandler));
|
||||
server.UDPServer.RegisterPacketCallback(PacketType.AgentWearablesRequest, new UDPServer.PacketCallback(AgentWearablesRequestHandler));
|
||||
}
|
||||
|
||||
@@ -53,20 +47,13 @@ namespace Simian
|
||||
complete.AgentData.SessionID = agent.SessionID;
|
||||
complete.Data.LookAt = Vector3.UnitX;
|
||||
complete.Data.Position = avatar.Position;
|
||||
complete.Data.RegionHandle = regionHandle;
|
||||
complete.Data.RegionHandle = server.RegionHandle;
|
||||
complete.Data.Timestamp = Utils.DateTimeToUnixTime(DateTime.Now);
|
||||
complete.SimData.ChannelVersion = Utils.StringToBytes("Simian");
|
||||
|
||||
agent.SendPacket(complete);
|
||||
}
|
||||
|
||||
void AgentUpdateHandler(Packet packet, Agent agent)
|
||||
{
|
||||
AgentUpdatePacket update = (AgentUpdatePacket)packet;
|
||||
|
||||
SendFullUpdate(agent, agent.Avatar, update.AgentData.State, update.AgentData.Flags);
|
||||
}
|
||||
|
||||
void AgentWearablesRequestHandler(Packet packet, Agent agent)
|
||||
{
|
||||
/*AgentWearablesUpdatePacket update = new AgentWearablesUpdatePacket();
|
||||
@@ -80,73 +67,5 @@ namespace Simian
|
||||
agent.SendPacket(update);*/
|
||||
}
|
||||
|
||||
void SendFullUpdate(Agent agent, LLObject obj, byte state, uint flags)
|
||||
{
|
||||
byte[] objectData = new byte[60];
|
||||
int pos = 0;
|
||||
agent.Avatar.Position.GetBytes().CopyTo(objectData, pos);
|
||||
pos += 12;
|
||||
agent.Avatar.Velocity.GetBytes().CopyTo(objectData, pos);
|
||||
pos += 12;
|
||||
agent.Avatar.Acceleration.GetBytes().CopyTo(objectData, pos);
|
||||
pos += 12;
|
||||
agent.Avatar.Rotation.GetBytes().CopyTo(objectData, pos);
|
||||
pos += 12;
|
||||
agent.Avatar.AngularVelocity.GetBytes().CopyTo(objectData, pos);
|
||||
|
||||
ObjectUpdatePacket update = new ObjectUpdatePacket();
|
||||
update.RegionData.RegionHandle = regionHandle;
|
||||
update.RegionData.TimeDilation = Helpers.FloatToByte(1f, 0f, 1f);
|
||||
update.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1];
|
||||
update.ObjectData[0] = new ObjectUpdatePacket.ObjectDataBlock();
|
||||
update.ObjectData[0].ClickAction = (byte)0;
|
||||
update.ObjectData[0].CRC = 0;
|
||||
update.ObjectData[0].ExtraParams = new byte[0];
|
||||
update.ObjectData[0].Flags = 0;
|
||||
update.ObjectData[0].FullID = obj.ID;
|
||||
update.ObjectData[0].Gain = 0;
|
||||
update.ObjectData[0].ID = obj.LocalID;
|
||||
update.ObjectData[0].JointAxisOrAnchor = Vector3.Zero;
|
||||
update.ObjectData[0].JointPivot = Vector3.Zero;
|
||||
update.ObjectData[0].JointType = (byte)0;
|
||||
update.ObjectData[0].Material = (byte)3;
|
||||
update.ObjectData[0].MediaURL = new byte[0];
|
||||
update.ObjectData[0].NameValue = new byte[0];
|
||||
update.ObjectData[0].ObjectData = objectData;
|
||||
update.ObjectData[0].OwnerID = UUID.Zero;
|
||||
update.ObjectData[0].ParentID = 0;
|
||||
update.ObjectData[0].PathBegin = 0;
|
||||
update.ObjectData[0].PathCurve = (byte)32;
|
||||
update.ObjectData[0].PathEnd = 0;
|
||||
update.ObjectData[0].PathRadiusOffset = (sbyte)0;
|
||||
update.ObjectData[0].PathRevolutions = (byte)0;
|
||||
update.ObjectData[0].PathScaleX = (byte)100;
|
||||
update.ObjectData[0].PathScaleY = (byte)150;
|
||||
update.ObjectData[0].PathShearX = (byte)0;
|
||||
update.ObjectData[0].PathShearY = (byte)0;
|
||||
update.ObjectData[0].PathSkew = (sbyte)0;
|
||||
update.ObjectData[0].PathTaperX = (sbyte)0;
|
||||
update.ObjectData[0].PathTaperY = (sbyte)0;
|
||||
update.ObjectData[0].PathTwist = (sbyte)0;
|
||||
update.ObjectData[0].PathTwistBegin = (sbyte)0;
|
||||
update.ObjectData[0].PCode = (byte)PCode.Avatar;
|
||||
update.ObjectData[0].ProfileBegin = 0;
|
||||
update.ObjectData[0].ProfileCurve = (byte)0;
|
||||
update.ObjectData[0].ProfileEnd = 0;
|
||||
update.ObjectData[0].ProfileHollow = 0;
|
||||
update.ObjectData[0].PSBlock = new byte[0];
|
||||
update.ObjectData[0].TextColor = Vector3.Zero.GetBytes();
|
||||
update.ObjectData[0].TextureAnim = new byte[0];
|
||||
update.ObjectData[0].TextureEntry = new byte[63];
|
||||
update.ObjectData[0].Radius = 0f;
|
||||
update.ObjectData[0].Scale = obj.Scale;
|
||||
update.ObjectData[0].Sound = UUID.Zero;
|
||||
update.ObjectData[0].State = state;
|
||||
update.ObjectData[0].Text = new byte[0];
|
||||
update.ObjectData[0].UpdateFlags = flags;
|
||||
update.ObjectData[0].Data = new byte[0];
|
||||
|
||||
agent.SendPacket(update);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user