diff options
author | Justin Clarke Casey | 2008-03-14 16:28:33 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2008-03-14 16:28:33 +0000 |
commit | dc84f350a763b3c5ba5a5b8ad173fde3867f24f4 (patch) | |
tree | 1953d18633bf3a3edc46fb6914914c555958217e | |
parent | * You can leave godmode if you want now. (diff) | |
download | opensim-SC-dc84f350a763b3c5ba5a5b8ad173fde3867f24f4.zip opensim-SC-dc84f350a763b3c5ba5a5b8ad173fde3867f24f4.tar.gz opensim-SC-dc84f350a763b3c5ba5a5b8ad173fde3867f24f4.tar.bz2 opensim-SC-dc84f350a763b3c5ba5a5b8ad173fde3867f24f4.tar.xz |
* 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 here
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 8 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 12 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 10 |
3 files changed, 27 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index e295f87..4c69930 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -947,6 +947,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
947 | /// <param name="objectGroup">The group of prims which should be linked to this group</param> | 947 | /// <param name="objectGroup">The group of prims which should be linked to this group</param> |
948 | public void LinkToGroup(SceneObjectGroup objectGroup) | 948 | public void LinkToGroup(SceneObjectGroup objectGroup) |
949 | { | 949 | { |
950 | if (objectGroup.RootPart.UpdateFlag > 0) | ||
951 | return; | ||
952 | |||
950 | SceneObjectPart linkPart = objectGroup.m_rootPart; | 953 | SceneObjectPart linkPart = objectGroup.m_rootPart; |
951 | 954 | ||
952 | Vector3 oldGroupPosition = | 955 | Vector3 oldGroupPosition = |
@@ -1014,10 +1017,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
1014 | /// <param name="partID"></param> | 1017 | /// <param name="partID"></param> |
1015 | public void DelinkFromGroup(uint partID) | 1018 | public void DelinkFromGroup(uint partID) |
1016 | { | 1019 | { |
1020 | if (RootPart.UpdateFlag > 0) | ||
1021 | return; | ||
1022 | |||
1017 | SceneObjectPart linkPart = GetChildPart(partID); | 1023 | SceneObjectPart linkPart = GetChildPart(partID); |
1018 | 1024 | ||
1019 | if (null != linkPart) | 1025 | if (null != linkPart) |
1020 | { | 1026 | { |
1021 | LLQuaternion worldRot = linkPart.GetWorldRotation(); | 1027 | LLQuaternion worldRot = linkPart.GetWorldRotation(); |
1022 | 1028 | ||
1023 | // Remove the part from this object | 1029 | // Remove the part from this object |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 060003e..4fc688a 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -1114,7 +1114,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
1114 | m_parentGroup.QueueForUpdateCheck(); | 1114 | m_parentGroup.QueueForUpdateCheck(); |
1115 | } | 1115 | } |
1116 | 1116 | ||
1117 | TimeStampFull = (uint) Util.UnixTimeSinceEpoch(); | 1117 | int timeNow = Util.UnixTimeSinceEpoch(); |
1118 | |||
1119 | if (timeNow == TimeStampFull) | ||
1120 | { | ||
1121 | TimeStampFull += 1; | ||
1122 | } | ||
1123 | else | ||
1124 | { | ||
1125 | TimeStampFull = (uint)timeNow; | ||
1126 | } | ||
1127 | |||
1118 | m_updateFlag = 2; | 1128 | m_updateFlag = 2; |
1119 | } | 1129 | } |
1120 | 1130 | ||
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index fb0e836..44d2316 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -479,8 +479,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
479 | // | 479 | // |
480 | // If we don't do this, various events (such as linking and delinking in the same | 480 | // If we don't do this, various events (such as linking and delinking in the same |
481 | // second), will stop working properly! | 481 | // second), will stop working properly! |
482 | if (update.LastFullUpdateTime <= part.TimeStampFull) | 482 | if (update.LastFullUpdateTime < part.TimeStampFull) |
483 | { | 483 | { |
484 | // m_log.DebugFormat( | ||
485 | // "[SCENE PRESENCE]: Fully updating prim {0}, {1} - part timestamp {2}", | ||
486 | // part.Name, part.UUID, part.TimeStampFull); | ||
487 | |||
484 | //need to do a full update | 488 | //need to do a full update |
485 | part.SendFullUpdate(ControllingClient, GenerateClientFlags(part.UUID)); | 489 | part.SendFullUpdate(ControllingClient, GenerateClientFlags(part.UUID)); |
486 | 490 | ||
@@ -494,6 +498,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
494 | } | 498 | } |
495 | else if (update.LastTerseUpdateTime <= part.TimeStampTerse) | 499 | else if (update.LastTerseUpdateTime <= part.TimeStampTerse) |
496 | { | 500 | { |
501 | // m_log.DebugFormat( | ||
502 | // "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}", | ||
503 | // part.Name, part.UUID, part.TimeStampTerse); | ||
504 | |||
497 | part.SendTerseUpdate(ControllingClient); | 505 | part.SendTerseUpdate(ControllingClient); |
498 | 506 | ||
499 | update.LastTerseUpdateTime = part.TimeStampTerse; | 507 | update.LastTerseUpdateTime = part.TimeStampTerse; |