diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index b7e9117..7dfcc7a 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -4967,15 +4967,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4967 | continue; | 4967 | continue; |
4968 | } | 4968 | } |
4969 | 4969 | ||
4970 | if (m_SupportObjectAnimations && updateFlags.HasFlag(PrimUpdateFlags.Animations)) | 4970 | if (updateFlags == PrimUpdateFlags.Animations) |
4971 | { | 4971 | { |
4972 | if (part.Animations != null) | 4972 | if (m_SupportObjectAnimations && part.Animations != null) |
4973 | { | 4973 | { |
4974 | if (ObjectAnimationUpdates == null) | 4974 | if (ObjectAnimationUpdates == null) |
4975 | ObjectAnimationUpdates = new List<SceneObjectPart>(); | 4975 | ObjectAnimationUpdates = new List<SceneObjectPart>(); |
4976 | ObjectAnimationUpdates.Add(part); | 4976 | ObjectAnimationUpdates.Add(part); |
4977 | maxUpdatesBytes -= 20 * part.Animations.Count + 24; | 4977 | maxUpdatesBytes -= 20 * part.Animations.Count + 24; |
4978 | } | 4978 | } |
4979 | continue; | ||
4979 | } | 4980 | } |
4980 | 4981 | ||
4981 | if(viewerCache) | 4982 | if(viewerCache) |
@@ -5126,7 +5127,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5126 | if (eu.Entity is ScenePresence) | 5127 | if (eu.Entity is ScenePresence) |
5127 | CreateAvatarUpdateBlock((ScenePresence)eu.Entity, zc); | 5128 | CreateAvatarUpdateBlock((ScenePresence)eu.Entity, zc); |
5128 | else | 5129 | else |
5129 | CreatePrimUpdateBlock((SceneObjectPart)eu.Entity, mysp, zc); | 5130 | { |
5131 | SceneObjectPart part = (SceneObjectPart)eu.Entity; | ||
5132 | if (eu.Flags.HasFlag(PrimUpdateFlags.Animations)) | ||
5133 | { | ||
5134 | if (m_SupportObjectAnimations && part.Animations != null) | ||
5135 | { | ||
5136 | if (ObjectAnimationUpdates == null) | ||
5137 | ObjectAnimationUpdates = new List<SceneObjectPart>(); | ||
5138 | ObjectAnimationUpdates.Add(part); | ||
5139 | } | ||
5140 | eu.Flags &= ~PrimUpdateFlags.Animations; | ||
5141 | } | ||
5142 | CreatePrimUpdateBlock(part, mysp, zc); | ||
5143 | } | ||
5130 | if (zc.Position < LLUDPServer.MAXPAYLOAD - 200) | 5144 | if (zc.Position < LLUDPServer.MAXPAYLOAD - 200) |
5131 | { | 5145 | { |
5132 | tau.Add(eu); | 5146 | tau.Add(eu); |
@@ -5273,6 +5287,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5273 | SceneObjectPart sop = (SceneObjectPart)eu.Entity; | 5287 | SceneObjectPart sop = (SceneObjectPart)eu.Entity; |
5274 | if (sop.ParentGroup == null || sop.ParentGroup.IsDeleted) | 5288 | if (sop.ParentGroup == null || sop.ParentGroup.IsDeleted) |
5275 | continue; | 5289 | continue; |
5290 | |||
5291 | if (eu.Flags.HasFlag(PrimUpdateFlags.Animations)) | ||
5292 | { | ||
5293 | if (m_SupportObjectAnimations && sop.Animations != null) | ||
5294 | { | ||
5295 | if (ObjectAnimationUpdates == null) | ||
5296 | ObjectAnimationUpdates = new List<SceneObjectPart>(); | ||
5297 | ObjectAnimationUpdates.Add(sop); | ||
5298 | } | ||
5299 | eu.Flags &= ~PrimUpdateFlags.Animations; | ||
5300 | } | ||
5301 | |||
5276 | lastpos = zc.Position; | 5302 | lastpos = zc.Position; |
5277 | lastzc = zc.ZeroCount; | 5303 | lastzc = zc.ZeroCount; |
5278 | 5304 | ||
@@ -6996,7 +7022,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6996 | zc.AddUInt(part.LocalId); | 7022 | zc.AddUInt(part.LocalId); |
6997 | zc.AddByte(state); // state | 7023 | zc.AddByte(state); // state |
6998 | zc.AddUUID(part.UUID); | 7024 | zc.AddUUID(part.UUID); |
6999 | zc.AddZeros(4); // crc unused | 7025 | zc.AddUInt((uint)part.ParentGroup.PseudoCRC); |
7000 | zc.AddByte((byte)pcode); | 7026 | zc.AddByte((byte)pcode); |
7001 | // material 1 | 7027 | // material 1 |
7002 | // clickaction 1 | 7028 | // clickaction 1 |
@@ -7108,7 +7134,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7108 | zc.AddUInt(part.LocalId); | 7134 | zc.AddUInt(part.LocalId); |
7109 | zc.AddByte(state); // state | 7135 | zc.AddByte(state); // state |
7110 | zc.AddUUID(part.UUID); | 7136 | zc.AddUUID(part.UUID); |
7111 | zc.AddZeros(4); // crc unused | 7137 | zc.AddUInt((uint)part.ParentGroup.PseudoCRC); |
7112 | zc.AddByte((byte)pcode); | 7138 | zc.AddByte((byte)pcode); |
7113 | zc.AddByte(part.Material); | 7139 | zc.AddByte(part.Material); |
7114 | zc.AddByte(part.ClickAction); // clickaction | 7140 | zc.AddByte(part.ClickAction); // clickaction |