diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 71 |
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) |