* As yet incomplete fix for mantis #766 - terse updates broken
* Currently, terse updates are back, and extremely rapid linking and delinking will only break occasionally * More work to do here0.6.0-stable
parent
ce9c2ecac8
commit
dc84f350a7
|
@ -947,6 +947,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="objectGroup">The group of prims which should be linked to this group</param>
|
/// <param name="objectGroup">The group of prims which should be linked to this group</param>
|
||||||
public void LinkToGroup(SceneObjectGroup objectGroup)
|
public void LinkToGroup(SceneObjectGroup objectGroup)
|
||||||
{
|
{
|
||||||
|
if (objectGroup.RootPart.UpdateFlag > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
SceneObjectPart linkPart = objectGroup.m_rootPart;
|
SceneObjectPart linkPart = objectGroup.m_rootPart;
|
||||||
|
|
||||||
Vector3 oldGroupPosition =
|
Vector3 oldGroupPosition =
|
||||||
|
@ -1014,10 +1017,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="partID"></param>
|
/// <param name="partID"></param>
|
||||||
public void DelinkFromGroup(uint partID)
|
public void DelinkFromGroup(uint partID)
|
||||||
{
|
{
|
||||||
|
if (RootPart.UpdateFlag > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
SceneObjectPart linkPart = GetChildPart(partID);
|
SceneObjectPart linkPart = GetChildPart(partID);
|
||||||
|
|
||||||
if (null != linkPart)
|
if (null != linkPart)
|
||||||
{
|
{
|
||||||
LLQuaternion worldRot = linkPart.GetWorldRotation();
|
LLQuaternion worldRot = linkPart.GetWorldRotation();
|
||||||
|
|
||||||
// Remove the part from this object
|
// Remove the part from this object
|
||||||
|
|
|
@ -1114,7 +1114,17 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_parentGroup.QueueForUpdateCheck();
|
m_parentGroup.QueueForUpdateCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeStampFull = (uint) Util.UnixTimeSinceEpoch();
|
int timeNow = Util.UnixTimeSinceEpoch();
|
||||||
|
|
||||||
|
if (timeNow == TimeStampFull)
|
||||||
|
{
|
||||||
|
TimeStampFull += 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TimeStampFull = (uint)timeNow;
|
||||||
|
}
|
||||||
|
|
||||||
m_updateFlag = 2;
|
m_updateFlag = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -479,8 +479,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
//
|
//
|
||||||
// If we don't do this, various events (such as linking and delinking in the same
|
// If we don't do this, various events (such as linking and delinking in the same
|
||||||
// second), will stop working properly!
|
// second), will stop working properly!
|
||||||
if (update.LastFullUpdateTime <= part.TimeStampFull)
|
if (update.LastFullUpdateTime < part.TimeStampFull)
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[SCENE PRESENCE]: Fully updating prim {0}, {1} - part timestamp {2}",
|
||||||
|
// part.Name, part.UUID, part.TimeStampFull);
|
||||||
|
|
||||||
//need to do a full update
|
//need to do a full update
|
||||||
part.SendFullUpdate(ControllingClient, GenerateClientFlags(part.UUID));
|
part.SendFullUpdate(ControllingClient, GenerateClientFlags(part.UUID));
|
||||||
|
|
||||||
|
@ -494,6 +498,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
else if (update.LastTerseUpdateTime <= part.TimeStampTerse)
|
else if (update.LastTerseUpdateTime <= part.TimeStampTerse)
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}",
|
||||||
|
// part.Name, part.UUID, part.TimeStampTerse);
|
||||||
|
|
||||||
part.SendTerseUpdate(ControllingClient);
|
part.SendTerseUpdate(ControllingClient);
|
||||||
|
|
||||||
update.LastTerseUpdateTime = part.TimeStampTerse;
|
update.LastTerseUpdateTime = part.TimeStampTerse;
|
||||||
|
|
Loading…
Reference in New Issue