From 31307849342c36c133b5cb8039296116c5456136 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Tue, 17 Feb 2009 04:16:42 +0000 Subject: Re-add the objectID field to the anim pack, that was deemed unneccessary and dropped nonths ago, because it is required to get smooth region crossings with AO running. Without it, in some corner cases, anims will continue to run in an unstoppable state. --- OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index dd0f6ac..3565e5a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -2493,15 +2493,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(avp, ThrottleOutPacketType.Task); } - public void SendAnimations(UUID[] animations, int[] seqs, UUID sourceAgentId) + public void SendAnimations(UUID[] animations, int[] seqs, UUID sourceAgentId, UUID[] objectIDs) { //m_log.DebugFormat("[CLIENT]: Sending animations to {0}", Name); AvatarAnimationPacket ani = (AvatarAnimationPacket)PacketPool.Instance.GetPacket(PacketType.AvatarAnimation); // TODO: don't create new blocks if recycling an old packet - ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[1]; - ani.AnimationSourceList[0] = new AvatarAnimationPacket.AnimationSourceListBlock(); - ani.AnimationSourceList[0].ObjectID = sourceAgentId; + ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[animations.Length]; ani.Sender = new AvatarAnimationPacket.SenderBlock(); ani.Sender.ID = sourceAgentId; ani.AnimationList = new AvatarAnimationPacket.AnimationListBlock[animations.Length]; @@ -2511,6 +2509,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP ani.AnimationList[i] = new AvatarAnimationPacket.AnimationListBlock(); ani.AnimationList[i].AnimID = animations[i]; ani.AnimationList[i].AnimSequenceID = seqs[i]; + + ani.AnimationSourceList[i] = new AvatarAnimationPacket.AnimationSourceListBlock(); + ani.AnimationSourceList[i].ObjectID = objectIDs[i]; + if (objectIDs[i] == UUID.Zero) + ani.AnimationSourceList[i].ObjectID = sourceAgentId; } ani.Header.Reliable = false; OutPacket(ani, ThrottleOutPacketType.Task); -- cgit v1.1