lost in updates
parent
d841c593b9
commit
ae00623b65
|
@ -356,7 +356,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
rootGroup.LinkToGroup(allparts[j]);
|
rootGroup.LinkToGroup(allparts[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
rootGroup.ScheduleGroupForFullUpdate();
|
rootGroup.ScheduleGroupForFullAnimUpdate();
|
||||||
pos
|
pos
|
||||||
= m_scene.GetNewRezLocation(
|
= m_scene.GetNewRezLocation(
|
||||||
Vector3.Zero, rootpos, UUID.Zero, rot, (byte)1, 1, true, allparts[0].GroupScale, false);
|
Vector3.Zero, rootpos, UUID.Zero, rot, (byte)1, 1, true, allparts[0].GroupScale, false);
|
||||||
|
|
|
@ -1096,7 +1096,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
// will succeed, as that will not update if an attachment is selected.
|
// will succeed, as that will not update if an attachment is selected.
|
||||||
so.IsSelected = false; // fudge....
|
so.IsSelected = false; // fudge....
|
||||||
|
|
||||||
so.ScheduleGroupForFullUpdate();
|
so.ScheduleGroupForFullAnimUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
// In case it is later dropped again, don't let
|
// In case it is later dropped again, don't let
|
||||||
|
|
|
@ -2537,7 +2537,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
sceneObject.RootPart.CreatorIdentification = UserManagementModule.GetUserUUI(ownerID);
|
sceneObject.RootPart.CreatorIdentification = UserManagementModule.GetUserUUI(ownerID);
|
||||||
|
|
||||||
sceneObject.InvalidateDeepEffectivePerms();;
|
sceneObject.InvalidateDeepEffectivePerms();;
|
||||||
sceneObject.ScheduleGroupForFullUpdate();
|
sceneObject.ScheduleGroupForFullAnimUpdate();
|
||||||
|
|
||||||
return sceneObject;
|
return sceneObject;
|
||||||
}
|
}
|
||||||
|
|
|
@ -485,7 +485,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sendClientUpdates)
|
if (sendClientUpdates)
|
||||||
sceneObject.ScheduleGroupForFullUpdate();
|
sceneObject.ScheduleGroupForFullAnimUpdate();
|
||||||
|
|
||||||
if (attachToBackup)
|
if (attachToBackup)
|
||||||
sceneObject.AttachToBackup();
|
sceneObject.AttachToBackup();
|
||||||
|
@ -1825,7 +1825,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
List<SceneObjectGroup> childGroups = new List<SceneObjectGroup>();
|
List<SceneObjectGroup> childGroups = new List<SceneObjectGroup>();
|
||||||
|
|
||||||
// We do this in reverse to get the link order of the prims correct
|
// We do this in reverse to get the link order of the prims correct
|
||||||
|
@ -1870,8 +1869,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
parentGroup.RootPart.CreateSelected = true;
|
parentGroup.RootPart.CreateSelected = true;
|
||||||
parentGroup.TriggerScriptChangedEvent(Changed.LINK);
|
parentGroup.TriggerScriptChangedEvent(Changed.LINK);
|
||||||
parentGroup.HasGroupChanged = true;
|
|
||||||
parentGroup.ScheduleGroupForFullUpdate();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
@ -1886,7 +1883,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
parentGroup.AdjustChildPrimPermissions(false);
|
parentGroup.AdjustChildPrimPermissions(false);
|
||||||
parentGroup.HasGroupChanged = true;
|
parentGroup.HasGroupChanged = true;
|
||||||
parentGroup.ProcessBackup(m_parentScene.SimulationDataService, true);
|
parentGroup.ProcessBackup(m_parentScene.SimulationDataService, true);
|
||||||
parentGroup.ScheduleGroupForFullUpdate();
|
parentGroup.ScheduleGroupForFullAnimUpdate();
|
||||||
Monitor.Exit(m_updateLock);
|
Monitor.Exit(m_updateLock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1949,7 +1946,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
child.ParentGroup.DelinkFromGroup(child, true);
|
child.ParentGroup.DelinkFromGroup(child, true);
|
||||||
//child.ParentGroup is now other
|
//child.ParentGroup is now other
|
||||||
child.ParentGroup.HasGroupChanged = true;
|
child.ParentGroup.HasGroupChanged = true;
|
||||||
child.ParentGroup.ScheduleGroupForFullUpdate();
|
child.ParentGroup.ScheduleGroupForFullAnimUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1991,7 +1988,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
newRoot.TriggerScriptChangedEvent(Changed.LINK);
|
newRoot.TriggerScriptChangedEvent(Changed.LINK);
|
||||||
newRoot.ParentGroup.HasGroupChanged = true;
|
newRoot.ParentGroup.HasGroupChanged = true;
|
||||||
newRoot.ParentGroup.InvalidatePartsLinkMaps();
|
newRoot.ParentGroup.InvalidatePartsLinkMaps();
|
||||||
newRoot.ParentGroup.ScheduleGroupForFullUpdate();
|
newRoot.ParentGroup.ScheduleGroupForFullAnimUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2131,7 +2128,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
copy.ResumeScripts();
|
copy.ResumeScripts();
|
||||||
|
|
||||||
copy.HasGroupChanged = true;
|
copy.HasGroupChanged = true;
|
||||||
copy.ScheduleGroupForFullUpdate();
|
copy.ScheduleGroupForFullAnimUpdate();
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -950,7 +950,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
sog.inTransit = false;
|
sog.inTransit = false;
|
||||||
AttachToBackup();
|
AttachToBackup();
|
||||||
sog.ScheduleGroupForFullUpdate();
|
sog.ScheduleGroupForFullAnimUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2668,7 +2668,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
dupe.HasGroupChanged = true;
|
dupe.HasGroupChanged = true;
|
||||||
dupe.AttachToBackup();
|
dupe.AttachToBackup();
|
||||||
|
|
||||||
dupe.ScheduleGroupForFullUpdate();
|
dupe.ScheduleGroupForFullAnimUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
dupe.InvalidatePartsLinkMaps();
|
dupe.InvalidatePartsLinkMaps();
|
||||||
|
@ -3030,8 +3030,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
// if (IsAttachment)
|
// if (IsAttachment)
|
||||||
// m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, LocalId);
|
// m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, LocalId);
|
||||||
|
|
||||||
checkAtTargets();
|
checkAtTargets();
|
||||||
|
if (Scene.GetNumberOfClients() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
RootPart.ScheduleFullUpdate();
|
RootPart.ScheduleFullUpdate();
|
||||||
|
|
||||||
SceneObjectPart[] parts = m_parts.GetArray();
|
SceneObjectPart[] parts = m_parts.GetArray();
|
||||||
|
@ -3043,6 +3045,40 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ScheduleGroupForFullAnimUpdate()
|
||||||
|
{
|
||||||
|
// if (IsAttachment)
|
||||||
|
// m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, LocalId);
|
||||||
|
checkAtTargets();
|
||||||
|
|
||||||
|
if (Scene.GetNumberOfClients() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
SceneObjectPart[] parts = m_parts.GetArray();
|
||||||
|
|
||||||
|
if (!RootPart.Shape.MeshFlagEntry)
|
||||||
|
{
|
||||||
|
RootPart.ScheduleFullUpdate();
|
||||||
|
|
||||||
|
for (int i = 0; i < parts.Length; i++)
|
||||||
|
{
|
||||||
|
SceneObjectPart part = parts[i];
|
||||||
|
if (part != RootPart)
|
||||||
|
part.ScheduleFullUpdate();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RootPart.ScheduleFullAnimUpdate();
|
||||||
|
|
||||||
|
for (int i = 0; i < parts.Length; i++)
|
||||||
|
{
|
||||||
|
SceneObjectPart part = parts[i];
|
||||||
|
if (part != RootPart)
|
||||||
|
part.ScheduleFullAnimUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Schedule a terse update for this scene object to all interested viewers.
|
/// Schedule a terse update for this scene object to all interested viewers.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -3060,36 +3096,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
parts[i].ScheduleTerseUpdate();
|
parts[i].ScheduleTerseUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Immediately send a full update for this scene object.
|
|
||||||
/// </summary>
|
|
||||||
public void SendGroupFullUpdate()
|
|
||||||
{
|
|
||||||
if (IsDeleted)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// m_log.DebugFormat("[SOG]: Sending immediate full group update for {0} {1}", Name, UUID);
|
|
||||||
|
|
||||||
if (IsAttachment)
|
|
||||||
{
|
|
||||||
ScenePresence sp = m_scene.GetScenePresence(AttachedAvatar);
|
|
||||||
if (sp != null)
|
|
||||||
{
|
|
||||||
sp.SendAttachmentUpdate(this, PrimUpdateFlags.FullUpdate);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RootPart.SendFullUpdateToAllClientsNoAttachment();
|
|
||||||
SceneObjectPart[] parts = m_parts.GetArray();
|
|
||||||
for (int i = 0; i < parts.Length; i++)
|
|
||||||
{
|
|
||||||
SceneObjectPart part = parts[i];
|
|
||||||
if (part != RootPart)
|
|
||||||
part.SendFullUpdateToAllClientsNoAttachment();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Immediately send an update for this scene object's root prim only.
|
/// Immediately send an update for this scene object's root prim only.
|
||||||
/// This is for updates regarding the object as a whole, and none of its parts in particular.
|
/// This is for updates regarding the object as a whole, and none of its parts in particular.
|
||||||
|
|
|
@ -3297,6 +3297,26 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this, true);
|
ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ScheduleFullAnimUpdate()
|
||||||
|
{
|
||||||
|
if (ParentGroup == null || ParentGroup.IsDeleted || ParentGroup.Scene == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (ParentGroup.Scene.GetNumberOfClients() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
PrimUpdateFlags update = PrimUpdateFlags.FullUpdatewithAnim;
|
||||||
|
if (Animations == null || !ParentGroup.RootPart.Shape.MeshFlagEntry)
|
||||||
|
update = PrimUpdateFlags.FullUpdate;
|
||||||
|
|
||||||
|
ParentGroup.QueueForUpdateCheck(); // just in case
|
||||||
|
|
||||||
|
lock (UpdateFlagLock)
|
||||||
|
UpdateFlag |= update;
|
||||||
|
|
||||||
|
ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Schedule a terse update for this prim. Terse updates only send position,
|
/// Schedule a terse update for this prim. Terse updates only send position,
|
||||||
/// rotation, velocity and rotational velocity information.
|
/// rotation, velocity and rotational velocity information.
|
||||||
|
@ -3334,6 +3354,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (ParentGroup == null || ParentGroup.IsDeleted || ParentGroup.Scene == null)
|
if (ParentGroup == null || ParentGroup.IsDeleted || ParentGroup.Scene == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (Animations == null)
|
||||||
|
update &= ~PrimUpdateFlags.Animations;
|
||||||
|
if (update == PrimUpdateFlags.None)
|
||||||
|
return;
|
||||||
|
|
||||||
ParentGroup.HasGroupChanged = true;
|
ParentGroup.HasGroupChanged = true;
|
||||||
|
|
||||||
if (ParentGroup.Scene.GetNumberOfClients() == 0)
|
if (ParentGroup.Scene.GetNumberOfClients() == 0)
|
||||||
|
@ -4571,7 +4596,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (ParentGroup != null)
|
if (ParentGroup != null)
|
||||||
{
|
{
|
||||||
ParentGroup.HasGroupChanged = true;
|
ParentGroup.HasGroupChanged = true;
|
||||||
ScheduleFullUpdate();
|
ScheduleFullAnimUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5367,16 +5392,23 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
public void SendUpdateToClient(IClientAPI remoteClient, PrimUpdateFlags PrimUpdateFlags)
|
public void SendUpdateToClient(IClientAPI remoteClient, PrimUpdateFlags update)
|
||||||
{
|
{
|
||||||
if (ParentGroup.IsDeleted)
|
if (ParentGroup.IsDeleted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (Animations == null)
|
||||||
|
{
|
||||||
|
update &= ~PrimUpdateFlags.Animations;
|
||||||
|
if (update == PrimUpdateFlags.None)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (ParentGroup.IsAttachment &&
|
if (ParentGroup.IsAttachment &&
|
||||||
(ParentGroup.RootPart != this || ParentGroup.AttachedAvatar != remoteClient.AgentId && ParentGroup.HasPrivateAttachmentPoint))
|
(ParentGroup.RootPart != this || ParentGroup.AttachedAvatar != remoteClient.AgentId && ParentGroup.HasPrivateAttachmentPoint))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
remoteClient.SendEntityUpdate(this, PrimUpdateFlags);
|
remoteClient.SendEntityUpdate(this, update);
|
||||||
|
|
||||||
ParentGroup.Scene.StatsReporter.AddObjectUpdates(1);
|
ParentGroup.Scene.StatsReporter.AddObjectUpdates(1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5364,7 +5364,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
return validated;
|
return validated;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
public void SendAttachmentsToAllAgents()
|
public void SendAttachmentsToAllAgents()
|
||||||
{
|
{
|
||||||
lock (m_attachments)
|
lock (m_attachments)
|
||||||
|
@ -5385,7 +5385,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
// send attachments to a client without filters except for huds
|
// send attachments to a client without filters except for huds
|
||||||
// for now they are checked in several places down the line...
|
// for now they are checked in several places down the line...
|
||||||
public void SendAttachmentsToAgentNF(ScenePresence p)
|
public void SendAttachmentsToAgentNF(ScenePresence p)
|
||||||
|
@ -5429,14 +5429,18 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (IsChildAgent || IsInTransit)
|
if (IsChildAgent || IsInTransit)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
SceneObjectPart[] origparts = sog.Parts;
|
SceneObjectPart[] origparts = sog.Parts;
|
||||||
SceneObjectPart[] parts = new SceneObjectPart[origparts.Length];
|
SceneObjectPart[] parts = new SceneObjectPart[origparts.Length];
|
||||||
PrimUpdateFlags[] flags = new PrimUpdateFlags[origparts.Length];
|
PrimUpdateFlags[] flags = new PrimUpdateFlags[origparts.Length];
|
||||||
|
|
||||||
SceneObjectPart rootpart = sog.RootPart;
|
SceneObjectPart rootpart = sog.RootPart;
|
||||||
PrimUpdateFlags cur = sog.RootPart.GetAndClearUpdateFlag();
|
PrimUpdateFlags cur = sog.RootPart.GetAndClearUpdateFlag();
|
||||||
|
bool noanim = !rootpart.Shape.MeshFlagEntry;
|
||||||
|
|
||||||
int nparts = 0;
|
int nparts = 0;
|
||||||
|
if (noanim || rootpart.Animations == null)
|
||||||
|
cur &= ~PrimUpdateFlags.Animations;
|
||||||
if (cur != PrimUpdateFlags.None)
|
if (cur != PrimUpdateFlags.None)
|
||||||
{
|
{
|
||||||
flags[nparts] = cur;
|
flags[nparts] = cur;
|
||||||
|
@ -5450,6 +5454,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
cur = origparts[i].GetAndClearUpdateFlag();
|
cur = origparts[i].GetAndClearUpdateFlag();
|
||||||
|
if (noanim || origparts[i].Animations == null)
|
||||||
|
cur &= ~PrimUpdateFlags.Animations;
|
||||||
if (cur == PrimUpdateFlags.None)
|
if (cur == PrimUpdateFlags.None)
|
||||||
continue;
|
continue;
|
||||||
flags[nparts] = cur;
|
flags[nparts] = cur;
|
||||||
|
@ -5485,19 +5491,45 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (IsChildAgent || IsInTransit)
|
if (IsChildAgent || IsInTransit)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SceneObjectPart[] parts = sog.Parts;
|
SceneObjectPart[] origparts = sog.Parts;
|
||||||
|
SceneObjectPart[] parts = new SceneObjectPart[origparts.Length];
|
||||||
|
PrimUpdateFlags[] flags = new PrimUpdateFlags[origparts.Length];
|
||||||
|
|
||||||
SceneObjectPart rootpart = sog.RootPart;
|
SceneObjectPart rootpart = sog.RootPart;
|
||||||
|
bool noanim = !rootpart.Shape.MeshFlagEntry;
|
||||||
|
|
||||||
ControllingClient.SendEntityUpdate(rootpart, update);
|
int nparts = 0;
|
||||||
|
PrimUpdateFlags cur = update;
|
||||||
for (int i = 0; i < parts.Length; i++)
|
if (noanim || rootpart.Animations == null)
|
||||||
|
cur &= ~PrimUpdateFlags.Animations;
|
||||||
|
if (cur != PrimUpdateFlags.None)
|
||||||
{
|
{
|
||||||
SceneObjectPart part = parts[i];
|
flags[nparts] = cur;
|
||||||
if (part == rootpart)
|
parts[nparts] = rootpart;
|
||||||
continue;
|
++nparts;
|
||||||
ControllingClient.SendEntityUpdate(part, update);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < origparts.Length; i++)
|
||||||
|
{
|
||||||
|
if (origparts[i] == rootpart)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
cur = update;
|
||||||
|
if (noanim || origparts[i].Animations == null)
|
||||||
|
cur &= ~PrimUpdateFlags.Animations;
|
||||||
|
if (cur == PrimUpdateFlags.None)
|
||||||
|
continue;
|
||||||
|
flags[nparts] = cur;
|
||||||
|
parts[nparts] = origparts[i];
|
||||||
|
++nparts;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nparts == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for(int i = 0; i < nparts; i++)
|
||||||
|
ControllingClient.SendEntityUpdate(parts[i], flags[i]);
|
||||||
|
|
||||||
if (sog.HasPrivateAttachmentPoint)
|
if (sog.HasPrivateAttachmentPoint)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -5512,22 +5544,24 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
p.ControllingClient.SendEntityUpdate(rootpart, update);
|
p.ControllingClient.SendEntityUpdate(rootpart, update);
|
||||||
|
|
||||||
for (int i = 0; i < parts.Length; i++)
|
for (int i = 0; i < nparts; i++)
|
||||||
{
|
p.ControllingClient.SendEntityUpdate(parts[i], flags[i]);
|
||||||
SceneObjectPart part = parts[i];
|
|
||||||
if (part == rootpart)
|
|
||||||
continue;
|
|
||||||
p.ControllingClient.SendEntityUpdate(part, update);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendAttachmentUpdate(SceneObjectPart part, PrimUpdateFlags flag)
|
public void SendAttachmentUpdate(SceneObjectPart part, PrimUpdateFlags update)
|
||||||
{
|
{
|
||||||
if (IsChildAgent || IsInTransit)
|
if (IsChildAgent || IsInTransit)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ControllingClient.SendEntityUpdate(part, flag);
|
if ((update & PrimUpdateFlags.Animations) != 0 && part.Animations == null)
|
||||||
|
{
|
||||||
|
update &= ~PrimUpdateFlags.Animations;
|
||||||
|
if (update == PrimUpdateFlags.None)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ControllingClient.SendEntityUpdate(part, update);
|
||||||
|
|
||||||
if (part.ParentGroup.HasPrivateAttachmentPoint)
|
if (part.ParentGroup.HasPrivateAttachmentPoint)
|
||||||
return;
|
return;
|
||||||
|
@ -5540,7 +5574,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod)
|
if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
p.ControllingClient.SendEntityUpdate(part, flag);
|
p.ControllingClient.SendEntityUpdate(part, update);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue