aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs71
1 files changed, 18 insertions, 53 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index a308abb..5bd1cf1 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2168,11 +2168,6 @@ namespace OpenSim.Region.Framework.Scenes
2168 { 2168 {
2169 if( ParentPart != null && !IsNPC && (crossingFlags & 0x08) != 0) 2169 if( ParentPart != null && !IsNPC && (crossingFlags & 0x08) != 0)
2170 { 2170 {
2171
2172// SceneObjectPart root = ParentPart.ParentGroup.RootPart;
2173// if(root.LocalId != ParentPart.LocalId)
2174// ControllingClient.SendEntityTerseUpdateImmediate(root);
2175// ControllingClient.SendEntityTerseUpdateImmediate(ParentPart);
2176 ParentPart.ParentGroup.SendFullAnimUpdateToClient(ControllingClient); 2171 ParentPart.ParentGroup.SendFullAnimUpdateToClient(ControllingClient);
2177 } 2172 }
2178 2173
@@ -5439,35 +5434,34 @@ namespace OpenSim.Region.Framework.Scenes
5439 PrimUpdateFlags[] flags = new PrimUpdateFlags[origparts.Length]; 5434 PrimUpdateFlags[] flags = new PrimUpdateFlags[origparts.Length];
5440 5435
5441 SceneObjectPart rootpart = sog.RootPart; 5436 SceneObjectPart rootpart = sog.RootPart;
5442 PrimUpdateFlags rootreq = sog.RootPart.GetAndClearUpdateFlag(); 5437 PrimUpdateFlags cur = sog.RootPart.GetAndClearUpdateFlag();
5443 5438
5444 int j = 0; 5439 int nparts = 0;
5440 if (cur != PrimUpdateFlags.None)
5441 {
5442 flags[nparts] = cur;
5443 parts[nparts] = rootpart;
5444 ++nparts;
5445 }
5445 5446
5446 PrimUpdateFlags cur;
5447 for (int i = 0; i < origparts.Length; i++) 5447 for (int i = 0; i < origparts.Length; i++)
5448 { 5448 {
5449 if (origparts[i] != rootpart) 5449 if (origparts[i] == rootpart)
5450 { 5450 continue;
5451 cur = origparts[i].GetAndClearUpdateFlag(); 5451
5452 if(cur == PrimUpdateFlags.None) 5452 cur = origparts[i].GetAndClearUpdateFlag();
5453 continue; 5453 if(cur == PrimUpdateFlags.None)
5454 flags[j] = cur; 5454 continue;
5455 parts[j] = origparts[i]; 5455 flags[nparts] = cur;
5456 j++; 5456 parts[nparts] = origparts[i];
5457 } 5457 ++nparts;
5458 } 5458 }
5459 5459
5460 if (j == 0 && rootreq == PrimUpdateFlags.None) 5460 if (nparts == 0)
5461 return; 5461 return;
5462 5462
5463 int nparts = j;
5464
5465 ControllingClient.SendEntityUpdate(rootpart, rootreq);
5466
5467 for (int i = 0; i < nparts; i++) 5463 for (int i = 0; i < nparts; i++)
5468 {
5469 ControllingClient.SendEntityUpdate(parts[i], flags[i]); 5464 ControllingClient.SendEntityUpdate(parts[i], flags[i]);
5470 }
5471 5465
5472 if (sog.HasPrivateAttachmentPoint) 5466 if (sog.HasPrivateAttachmentPoint)
5473 return; 5467 return;
@@ -5481,12 +5475,8 @@ namespace OpenSim.Region.Framework.Scenes
5481 if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod) 5475 if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod)
5482 continue; 5476 continue;
5483 5477
5484 p.ControllingClient.SendEntityUpdate(rootpart, rootreq);
5485
5486 for (int i = 0; i < nparts; i++) 5478 for (int i = 0; i < nparts; i++)
5487 {
5488 p.ControllingClient.SendEntityUpdate(parts[i], flags[i]); 5479 p.ControllingClient.SendEntityUpdate(parts[i], flags[i]);
5489 }
5490 } 5480 }
5491 } 5481 }
5492 5482
@@ -5532,31 +5522,6 @@ namespace OpenSim.Region.Framework.Scenes
5532 } 5522 }
5533 } 5523 }
5534 5524
5535 public void SendAttachmentScheduleUpdate(SceneObjectPart part)
5536 {
5537 if (IsChildAgent || IsInTransit)
5538 return;
5539
5540 PrimUpdateFlags flag = part.GetAndClearUpdateFlag();
5541
5542 ControllingClient.SendEntityUpdate(part, flag);
5543
5544 if (part.ParentGroup.HasPrivateAttachmentPoint)
5545 return;
5546
5547 List<ScenePresence> allPresences = m_scene.GetScenePresences();
5548 foreach (ScenePresence p in allPresences)
5549 {
5550 if (p == this)
5551 continue;
5552
5553 if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod)
5554 continue;
5555
5556 p.ControllingClient.SendEntityUpdate(part, flag);
5557 }
5558 }
5559
5560 public void SendAttachmentUpdate(SceneObjectPart part, PrimUpdateFlags flag) 5525 public void SendAttachmentUpdate(SceneObjectPart part, PrimUpdateFlags flag)
5561 { 5526 {
5562 if (IsChildAgent || IsInTransit) 5527 if (IsChildAgent || IsInTransit)