huds bug fix

avinationmerge
UbitUmarov 2014-09-09 05:20:43 +01:00
parent f4efa25820
commit 4ed3461573
1 changed files with 50 additions and 28 deletions

View File

@ -4845,17 +4845,24 @@ namespace OpenSim.Region.Framework.Scenes
int nparts = j; int nparts = j;
bool priv = sog.HasPrivateAttachmentPoint; ControllingClient.SendEntityUpdate(rootpart, rootflag);
for (int i = 0; i < nparts; i++)
{
ControllingClient.SendEntityUpdate(parts[i], flags[i]);
}
if (sog.HasPrivateAttachmentPoint)
return;
List<ScenePresence> allPresences = m_scene.GetScenePresences(); List<ScenePresence> allPresences = m_scene.GetScenePresences();
foreach (ScenePresence p in allPresences) foreach (ScenePresence p in allPresences)
{ {
if (p != this) if (p == this)
{ continue;
if (priv ||
(ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200)) if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200)
continue; continue;
}
p.ControllingClient.SendEntityUpdate(rootpart, rootflag); p.ControllingClient.SendEntityUpdate(rootpart, rootflag);
@ -4892,17 +4899,29 @@ namespace OpenSim.Region.Framework.Scenes
rootpart.UpdateFlag = 0; rootpart.UpdateFlag = 0;
bool priv = sog.HasPrivateAttachmentPoint; ControllingClient.SendEntityUpdate(rootpart, flag);
for (int i = 0; i < parts.Length; i++)
{
SceneObjectPart part = parts[i];
if (part == rootpart)
continue;
ControllingClient.SendEntityUpdate(part, flag);
part.UpdateFlag = 0;
}
if (sog.HasPrivateAttachmentPoint)
return;
List<ScenePresence> allPresences = m_scene.GetScenePresences(); List<ScenePresence> allPresences = m_scene.GetScenePresences();
foreach (ScenePresence p in allPresences) foreach (ScenePresence p in allPresences)
{ {
if (p != this) if (p == this)
{ continue;
if (priv ||
(ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200)) if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200)
continue; continue;
}
p.ControllingClient.SendEntityUpdate(rootpart, flag); p.ControllingClient.SendEntityUpdate(rootpart, flag);
@ -4941,23 +4960,25 @@ namespace OpenSim.Region.Framework.Scenes
part.UpdateFlag = 0; part.UpdateFlag = 0;
bool priv = part.ParentGroup.HasPrivateAttachmentPoint; ControllingClient.SendEntityUpdate(part, flag);
if (part.ParentGroup.HasPrivateAttachmentPoint)
return;
List<ScenePresence> allPresences = m_scene.GetScenePresences(); List<ScenePresence> allPresences = m_scene.GetScenePresences();
foreach (ScenePresence p in allPresences) foreach (ScenePresence p in allPresences)
{ {
if (p != this) if (p == this)
{ continue;
if (priv || if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200)
(ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200))
continue; continue;
}
p.ControllingClient.SendEntityUpdate(part, flag); p.ControllingClient.SendEntityUpdate(part, flag);
} }
} }
public void SendAttachmentUpdate(SceneObjectPart part, UpdateRequired UpdateFlag) public void SendAttachmentUpdate(SceneObjectPart part, UpdateRequired UpdateFlag)
{ {
if (IsChildAgent || IsInTransit) if (IsChildAgent || IsInTransit)
@ -4981,17 +5002,18 @@ namespace OpenSim.Region.Framework.Scenes
part.UpdateFlag = 0; part.UpdateFlag = 0;
bool priv = part.ParentGroup.HasPrivateAttachmentPoint; ControllingClient.SendEntityUpdate(part, flag);
if (part.ParentGroup.HasPrivateAttachmentPoint)
return;
List<ScenePresence> allPresences = m_scene.GetScenePresences(); List<ScenePresence> allPresences = m_scene.GetScenePresences();
foreach (ScenePresence p in allPresences) foreach (ScenePresence p in allPresences)
{ {
if (p != this) if (p == this)
{ continue;
if ( priv || if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200)
(ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200))
continue; continue;
}
p.ControllingClient.SendEntityUpdate(part, flag); p.ControllingClient.SendEntityUpdate(part, flag);
} }