aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs26
1 files changed, 22 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 9d606a6..2b288df 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -7145,7 +7145,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7145 /// <summary>Whether the object has floating text ala llSetText</summary> 7145 /// <summary>Whether the object has floating text ala llSetText</summary>
7146 HasText = 0x04, 7146 HasText = 0x04,
7147 /// <summary>Whether the object has an active particle system</summary> 7147 /// <summary>Whether the object has an active particle system</summary>
7148 HasParticles = 0x08, 7148 HasParticlesLegacy = 0x08,
7149 /// <summary>Whether the object has sound attached to it</summary> 7149 /// <summary>Whether the object has sound attached to it</summary>
7150 HasSound = 0x10, 7150 HasSound = 0x10,
7151 /// <summary>Whether the object is attached to a root object or not</summary> 7151 /// <summary>Whether the object is attached to a root object or not</summary>
@@ -7157,7 +7157,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7157 /// <summary>Whether the object has a name value pairs string</summary> 7157 /// <summary>Whether the object has a name value pairs string</summary>
7158 HasNameValues = 0x100, 7158 HasNameValues = 0x100,
7159 /// <summary>Whether the object has a Media URL set</summary> 7159 /// <summary>Whether the object has a Media URL set</summary>
7160 MediaURL = 0x200 7160 MediaURL = 0x200,
7161 HasParticlesNew = 0x400
7161 } 7162 }
7162 7163
7163 ///**** temp hack 7164 ///**** temp hack
@@ -7218,10 +7219,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7218 bool hasangvel = part.AngularVelocity.LengthSquared() > 1e-8f; 7219 bool hasangvel = part.AngularVelocity.LengthSquared() > 1e-8f;
7219 bool hasmediaurl = part.MediaUrl != null && part.MediaUrl.Length > 1; 7220 bool hasmediaurl = part.MediaUrl != null && part.MediaUrl.Length > 1;
7220 7221
7222 bool haspsnew = false;
7221 if (hastext) 7223 if (hastext)
7222 cflags |= CompressedFlags.HasText; 7224 cflags |= CompressedFlags.HasText;
7223 if (hasps) 7225 if (hasps)
7224 cflags |= CompressedFlags.HasParticles; 7226 {
7227 if(part.ParticleSystem.Length > 86)
7228 {
7229 hasps= false;
7230 cflags |= CompressedFlags.HasParticlesNew;
7231 haspsnew = true;
7232 }
7233 else
7234 cflags |= CompressedFlags.HasParticlesLegacy;
7235 }
7225 if (hassound) 7236 if (hassound)
7226 cflags |= CompressedFlags.HasSound; 7237 cflags |= CompressedFlags.HasSound;
7227 if (part.ParentID != 0) 7238 if (part.ParentID != 0)
@@ -7277,7 +7288,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7277 7288
7278 Utils.UIntToBytesSafepos((uint)cflags, dest, pos); pos += 4; 7289 Utils.UIntToBytesSafepos((uint)cflags, dest, pos); pos += 4;
7279 7290
7280 if (hasps || hassound) 7291 if (hasps || haspsnew || hassound)
7281 part.OwnerID.ToBytes(dest, pos); 7292 part.OwnerID.ToBytes(dest, pos);
7282 else 7293 else
7283 UUID.Zero.ToBytes(dest, pos); 7294 UUID.Zero.ToBytes(dest, pos);
@@ -7387,6 +7398,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7387 pos += len; 7398 pos += len;
7388 } 7399 }
7389 } 7400 }
7401
7402 if (haspsnew)
7403 {
7404 byte[] ps = part.ParticleSystem;
7405 Buffer.BlockCopy(ps, 0, dest, pos, ps.Length); pos += ps.Length;
7406 }
7407
7390 int totlen = pos - lenpos - 2; 7408 int totlen = pos - lenpos - 2;
7391 dest[lenpos++] = (byte)totlen; 7409 dest[lenpos++] = (byte)totlen;
7392 dest[lenpos++] = (byte)(totlen >> 8); 7410 dest[lenpos++] = (byte)(totlen >> 8);