mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 05:45:37 +08:00
Merge branch 'master' into careminster
This commit is contained in:
@@ -1266,10 +1266,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
//
|
||||
if (totalItems == 0 && totalFolders == 0)
|
||||
currentPacket = CreateInventoryDescendentsPacket(ownerID, folderID, version, items.Count + folders.Count, 0, 0);
|
||||
|
||||
|
||||
// To preserve SL compatibility, we will NOT combine folders and items in one packet
|
||||
//
|
||||
while(itemsSent < totalItems || foldersSent < totalFolders)
|
||||
while (itemsSent < totalItems || foldersSent < totalFolders)
|
||||
{
|
||||
if (currentPacket == null) // Start a new packet
|
||||
{
|
||||
@@ -1289,7 +1289,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
|
||||
if (foldersToSend-- > 0)
|
||||
currentPacket.FolderData[foldersSent % MAX_FOLDERS_PER_PACKET] = CreateFolderDataBlock(folders[foldersSent++]);
|
||||
else if(itemsToSend-- > 0)
|
||||
else if (itemsToSend-- > 0)
|
||||
currentPacket.ItemData[itemsSent % MAX_ITEMS_PER_PACKET] = CreateItemDataBlock(items[itemsSent++]);
|
||||
else
|
||||
{
|
||||
@@ -2043,7 +2043,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
packet.AgentData.SessionID = SessionId;
|
||||
|
||||
packet.Effect = effectBlocks;
|
||||
|
||||
|
||||
OutPacket(packet, ThrottleOutPacketType.State);
|
||||
}
|
||||
|
||||
@@ -2742,7 +2742,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
}
|
||||
llsd.Add("GroupData", GroupData);
|
||||
llsd.Add("NewGroupData", NewGroupData);
|
||||
|
||||
|
||||
IEventQueue eq = this.Scene.RequestModuleInterface<IEventQueue>();
|
||||
if (eq != null)
|
||||
{
|
||||
@@ -4295,11 +4295,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
AddLocalPacketHandler(PacketType.AgentWearablesRequest, HandlerAgentWearablesRequest);
|
||||
AddLocalPacketHandler(PacketType.AgentSetAppearance, HandlerAgentSetAppearance);
|
||||
AddLocalPacketHandler(PacketType.AgentIsNowWearing, HandlerAgentIsNowWearing);
|
||||
AddLocalPacketHandler(PacketType.RezSingleAttachmentFromInv, HandlerRezSingleAttachmentFromInv);
|
||||
AddLocalPacketHandler(PacketType.RezMultipleAttachmentsFromInv, HandleRezMultipleAttachmentsFromInv);
|
||||
AddLocalPacketHandler(PacketType.DetachAttachmentIntoInv, HandleDetachAttachmentIntoInv);
|
||||
AddLocalPacketHandler(PacketType.ObjectAttach, HandleObjectAttach);
|
||||
AddLocalPacketHandler(PacketType.ObjectDetach, HandleObjectDetach);
|
||||
AddLocalPacketHandler(PacketType.ObjectDrop, HandleObjectDrop);
|
||||
AddLocalPacketHandler(PacketType.SetAlwaysRun, HandleSetAlwaysRun);
|
||||
AddLocalPacketHandler(PacketType.CompleteAgentMovement, HandleCompleteAgentMovement);
|
||||
AddLocalPacketHandler(PacketType.AgentAnimation, HandleAgentAnimation);
|
||||
AddLocalPacketHandler(PacketType.AgentRequestSit, HandleAgentRequestSit);
|
||||
AddLocalPacketHandler(PacketType.AgentSit, HandleAgentSit);
|
||||
AddLocalPacketHandler(PacketType.SoundTrigger, HandleSoundTrigger);
|
||||
//AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
|
||||
//AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
|
||||
//AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
|
||||
//AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
|
||||
//AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
|
||||
|
||||
}
|
||||
|
||||
#region Packet Handlers
|
||||
@@ -4957,6 +4969,281 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandlerRezSingleAttachmentFromInv(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
RezSingleAttachmentFromInv handlerRezSingleAttachment = OnRezSingleAttachmentFromInv;
|
||||
if (handlerRezSingleAttachment != null)
|
||||
{
|
||||
RezSingleAttachmentFromInvPacket rez = (RezSingleAttachmentFromInvPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
if (rez.AgentData.SessionID != SessionId ||
|
||||
rez.AgentData.AgentID != AgentId)
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
handlerRezSingleAttachment(this, rez.ObjectData.ItemID,
|
||||
rez.ObjectData.AttachmentPt);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleRezMultipleAttachmentsFromInv(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
RezMultipleAttachmentsFromInv handlerRezMultipleAttachments = OnRezMultipleAttachmentsFromInv;
|
||||
if (handlerRezMultipleAttachments != null)
|
||||
{
|
||||
RezMultipleAttachmentsFromInvPacket rez = (RezMultipleAttachmentsFromInvPacket)Pack;
|
||||
handlerRezMultipleAttachments(this, rez.HeaderData,
|
||||
rez.ObjectData);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleDetachAttachmentIntoInv(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
UUIDNameRequest handlerDetachAttachmentIntoInv = OnDetachAttachmentIntoInv;
|
||||
if (handlerDetachAttachmentIntoInv != null)
|
||||
{
|
||||
DetachAttachmentIntoInvPacket detachtoInv = (DetachAttachmentIntoInvPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
// UNSUPPORTED ON THIS PACKET
|
||||
#endregion
|
||||
|
||||
UUID itemID = detachtoInv.ObjectData.ItemID;
|
||||
// UUID ATTACH_agentID = detachtoInv.ObjectData.AgentID;
|
||||
|
||||
handlerDetachAttachmentIntoInv(itemID, this);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleObjectAttach(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
if (OnObjectAttach != null)
|
||||
{
|
||||
ObjectAttachPacket att = (ObjectAttachPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
if (att.AgentData.SessionID != SessionId ||
|
||||
att.AgentData.AgentID != AgentId)
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
ObjectAttach handlerObjectAttach = OnObjectAttach;
|
||||
|
||||
if (handlerObjectAttach != null)
|
||||
{
|
||||
if (att.ObjectData.Length > 0)
|
||||
{
|
||||
handlerObjectAttach(this, att.ObjectData[0].ObjectLocalID, att.AgentData.AttachmentPoint, att.ObjectData[0].Rotation, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleObjectDetach(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
ObjectDetachPacket dett = (ObjectDetachPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
if (dett.AgentData.SessionID != SessionId ||
|
||||
dett.AgentData.AgentID != AgentId)
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
for (int j = 0; j < dett.ObjectData.Length; j++)
|
||||
{
|
||||
uint obj = dett.ObjectData[j].ObjectLocalID;
|
||||
ObjectDeselect handlerObjectDetach = OnObjectDetach;
|
||||
if (handlerObjectDetach != null)
|
||||
{
|
||||
handlerObjectDetach(obj, this);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleObjectDrop(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
ObjectDropPacket dropp = (ObjectDropPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
if (dropp.AgentData.SessionID != SessionId ||
|
||||
dropp.AgentData.AgentID != AgentId)
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
for (int j = 0; j < dropp.ObjectData.Length; j++)
|
||||
{
|
||||
uint obj = dropp.ObjectData[j].ObjectLocalID;
|
||||
ObjectDrop handlerObjectDrop = OnObjectDrop;
|
||||
if (handlerObjectDrop != null)
|
||||
{
|
||||
handlerObjectDrop(obj, this);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleSetAlwaysRun(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
SetAlwaysRunPacket run = (SetAlwaysRunPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
if (run.AgentData.SessionID != SessionId ||
|
||||
run.AgentData.AgentID != AgentId)
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
SetAlwaysRun handlerSetAlwaysRun = OnSetAlwaysRun;
|
||||
if (handlerSetAlwaysRun != null)
|
||||
handlerSetAlwaysRun(this, run.AgentData.AlwaysRun);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleCompleteAgentMovement(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
GenericCall2 handlerCompleteMovementToRegion = OnCompleteMovementToRegion;
|
||||
if (handlerCompleteMovementToRegion != null)
|
||||
{
|
||||
handlerCompleteMovementToRegion();
|
||||
}
|
||||
handlerCompleteMovementToRegion = null;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleAgentAnimation(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
if (AgentAni.AgentData.SessionID != SessionId ||
|
||||
AgentAni.AgentData.AgentID != AgentId)
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
StartAnim handlerStartAnim = null;
|
||||
StopAnim handlerStopAnim = null;
|
||||
|
||||
for (int i = 0; i < AgentAni.AnimationList.Length; i++)
|
||||
{
|
||||
if (AgentAni.AnimationList[i].StartAnim)
|
||||
{
|
||||
handlerStartAnim = OnStartAnim;
|
||||
if (handlerStartAnim != null)
|
||||
{
|
||||
handlerStartAnim(this, AgentAni.AnimationList[i].AnimID);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
handlerStopAnim = OnStopAnim;
|
||||
if (handlerStopAnim != null)
|
||||
{
|
||||
handlerStopAnim(this, AgentAni.AnimationList[i].AnimID);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleAgentRequestSit(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
if (OnAgentRequestSit != null)
|
||||
{
|
||||
AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
if (agentRequestSit.AgentData.SessionID != SessionId ||
|
||||
agentRequestSit.AgentData.AgentID != AgentId)
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
AgentRequestSit handlerAgentRequestSit = OnAgentRequestSit;
|
||||
if (handlerAgentRequestSit != null)
|
||||
handlerAgentRequestSit(this, agentRequestSit.AgentData.AgentID,
|
||||
agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleAgentSit(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
if (OnAgentSit != null)
|
||||
{
|
||||
AgentSitPacket agentSit = (AgentSitPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
if (agentSit.AgentData.SessionID != SessionId ||
|
||||
agentSit.AgentData.AgentID != AgentId)
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
AgentSit handlerAgentSit = OnAgentSit;
|
||||
if (handlerAgentSit != null)
|
||||
{
|
||||
OnAgentSit(this, agentSit.AgentData.AgentID);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleSoundTrigger(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
SoundTriggerPacket soundTriggerPacket = (SoundTriggerPacket)Pack;
|
||||
|
||||
#region Packet Session and User Check
|
||||
if (m_checkPackets)
|
||||
{
|
||||
// UNSUPPORTED ON THIS PACKET
|
||||
}
|
||||
#endregion
|
||||
|
||||
SoundTrigger handlerSoundTrigger = OnSoundTrigger;
|
||||
if (handlerSoundTrigger != null)
|
||||
{
|
||||
handlerSoundTrigger(soundTriggerPacket.SoundData.SoundID, soundTriggerPacket.SoundData.OwnerID,
|
||||
soundTriggerPacket.SoundData.ObjectID, soundTriggerPacket.SoundData.ParentID,
|
||||
soundTriggerPacket.SoundData.Gain, soundTriggerPacket.SoundData.Position,
|
||||
soundTriggerPacket.SoundData.Handle);
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
#endregion Packet Handlers
|
||||
|
||||
public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question)
|
||||
@@ -5448,8 +5735,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Main packet processing conditional
|
||||
switch (Pack.Type)
|
||||
{
|
||||
@@ -5475,7 +5760,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.ChatFromViewer:
|
||||
ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack;
|
||||
|
||||
@@ -5514,7 +5799,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
handlerChatFromClient(this, args);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.AvatarPropertiesUpdate:
|
||||
AvatarPropertiesUpdatePacket avatarProps = (AvatarPropertiesUpdatePacket)Pack;
|
||||
|
||||
@@ -5542,7 +5827,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
handlerUpdateAvatarProperties(this, UserProfile);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.ScriptDialogReply:
|
||||
ScriptDialogReplyPacket rdialog = (ScriptDialogReplyPacket)Pack;
|
||||
|
||||
@@ -5573,7 +5858,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.ImprovedInstantMessage:
|
||||
ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack;
|
||||
|
||||
@@ -5607,7 +5892,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
handlerInstantMessage(this, im);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.AcceptFriendship:
|
||||
AcceptFriendshipPacket afriendpack = (AcceptFriendshipPacket)Pack;
|
||||
|
||||
@@ -5680,7 +5965,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
handlerTerminateFriendship(this, listOwnerAgentID, exFriendID);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.RezObject:
|
||||
RezObjectPacket rezPacket = (RezObjectPacket)Pack;
|
||||
|
||||
@@ -5735,7 +6020,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.ModifyLand:
|
||||
ModifyLandPacket modify = (ModifyLandPacket)Pack;
|
||||
|
||||
@@ -5867,8 +6152,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
}
|
||||
}
|
||||
break;
|
||||
*/
|
||||
#endregion
|
||||
|
||||
case PacketType.RezSingleAttachmentFromInv:
|
||||
RezSingleAttachmentFromInv handlerRezSingleAttachment = OnRezSingleAttachmentFromInv;
|
||||
if (handlerRezSingleAttachment != null)
|
||||
@@ -6118,7 +6402,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
*/
|
||||
#endregion
|
||||
case PacketType.AvatarPickerRequest:
|
||||
AvatarPickerRequestPacket avRequestQuery = (AvatarPickerRequestPacket)Pack;
|
||||
|
||||
@@ -10175,7 +10460,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
Utils.BytesToString(avatarInterestUpdate.PropertiesData.SkillsText),
|
||||
Utils.BytesToString(avatarInterestUpdate.PropertiesData.LanguagesText));
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.GrantUserRights:
|
||||
GrantUserRightsPacket GrantUserRights =
|
||||
(GrantUserRightsPacket)Pack;
|
||||
@@ -10194,7 +10479,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
GrantUserRights.Rights[0].AgentRelated,
|
||||
GrantUserRights.Rights[0].RelatedRights);
|
||||
break;
|
||||
|
||||
|
||||
case PacketType.PlacesQuery:
|
||||
PlacesQueryPacket placesQueryPacket =
|
||||
(PlacesQueryPacket)Pack;
|
||||
|
||||
Reference in New Issue
Block a user