diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 9a205e0..0277ed8 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -680,8 +680,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
680 | } | 680 | } |
681 | 681 | ||
682 | ApplyPhysics(m_scene.m_physicalPrim); | 682 | ApplyPhysics(m_scene.m_physicalPrim); |
683 | 683 | ||
684 | ScheduleGroupForFullUpdate(); | 684 | // Don't trigger the update here - otherwise some client issues occur when multiple updates are scheduled |
685 | // for the same object with very different properties. The caller must schedule the update. | ||
686 | //ScheduleGroupForFullUpdate(); | ||
685 | } | 687 | } |
686 | 688 | ||
687 | public Vector3 GroupScale() | 689 | public Vector3 GroupScale() |
@@ -1083,10 +1085,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1083 | // don't attach attachments to child agents | 1085 | // don't attach attachments to child agents |
1084 | if (avatar.IsChildAgent) return; | 1086 | if (avatar.IsChildAgent) return; |
1085 | 1087 | ||
1088 | // m_log.DebugFormat("[SOG]: Adding attachment {0} to avatar {1}", Name, avatar.Name); | ||
1089 | |||
1086 | DetachFromBackup(); | 1090 | DetachFromBackup(); |
1087 | 1091 | ||
1088 | // Remove from database and parcel prim count | 1092 | // Remove from database and parcel prim count |
1089 | // | ||
1090 | m_scene.DeleteFromStorage(UUID); | 1093 | m_scene.DeleteFromStorage(UUID); |
1091 | m_scene.EventManager.TriggerParcelPrimCountTainted(); | 1094 | m_scene.EventManager.TriggerParcelPrimCountTainted(); |
1092 | 1095 | ||
@@ -1112,7 +1115,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1112 | SetAttachmentPoint(Convert.ToByte(attachmentpoint)); | 1115 | SetAttachmentPoint(Convert.ToByte(attachmentpoint)); |
1113 | 1116 | ||
1114 | avatar.AddAttachment(this); | 1117 | avatar.AddAttachment(this); |
1115 | m_log.Debug("[SOG]: Added attachment " + UUID + " to avatar " + avatar.UUID); | ||
1116 | 1118 | ||
1117 | if (!silent) | 1119 | if (!silent) |
1118 | { | 1120 | { |
@@ -1129,6 +1131,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1129 | ScheduleGroupForFullUpdate(); | 1131 | ScheduleGroupForFullUpdate(); |
1130 | } | 1132 | } |
1131 | } | 1133 | } |
1134 | else | ||
1135 | { | ||
1136 | m_log.WarnFormat( | ||
1137 | "[SOG]: Tried to add attachment {0} to avatar with UUID {1} in region {2} but the avatar is not present", | ||
1138 | UUID, agentID, Scene.RegionInfo.RegionName); | ||
1139 | } | ||
1132 | } | 1140 | } |
1133 | 1141 | ||
1134 | public byte GetAttachmentPoint() | 1142 | public byte GetAttachmentPoint() |
@@ -2174,6 +2182,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2174 | 2182 | ||
2175 | public void ScheduleFullUpdateToAvatar(ScenePresence presence) | 2183 | public void ScheduleFullUpdateToAvatar(ScenePresence presence) |
2176 | { | 2184 | { |
2185 | // m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1} just to avatar {2}", Name, UUID, presence.Name); | ||
2186 | |||
2177 | RootPart.AddFullUpdateToAvatar(presence); | 2187 | RootPart.AddFullUpdateToAvatar(presence); |
2178 | 2188 | ||
2179 | lockPartsForRead(true); | 2189 | lockPartsForRead(true); |
@@ -2208,6 +2218,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2208 | /// </summary> | 2218 | /// </summary> |
2209 | public void ScheduleGroupForFullUpdate() | 2219 | public void ScheduleGroupForFullUpdate() |
2210 | { | 2220 | { |
2221 | // m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, UUID); | ||
2222 | |||
2211 | checkAtTargets(); | 2223 | checkAtTargets(); |
2212 | RootPart.ScheduleFullUpdate(); | 2224 | RootPart.ScheduleFullUpdate(); |
2213 | 2225 | ||
@@ -2245,9 +2257,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2245 | /// Immediately send a full update for this scene object. | 2257 | /// Immediately send a full update for this scene object. |
2246 | /// </summary> | 2258 | /// </summary> |
2247 | public void SendGroupFullUpdate() | 2259 | public void SendGroupFullUpdate() |
2248 | { | 2260 | { |
2249 | if (IsDeleted) | 2261 | if (IsDeleted) |
2250 | return; | 2262 | return; |
2263 | |||
2264 | // m_log.DebugFormat("[SOG]: Sending immediate full group update for {0} {1}", Name, UUID); | ||
2251 | 2265 | ||
2252 | RootPart.SendFullUpdateToAllClients(); | 2266 | RootPart.SendFullUpdateToAllClients(); |
2253 | 2267 | ||
@@ -2267,7 +2281,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2267 | /// <summary> | 2281 | /// <summary> |
2268 | /// Immediately send an update for this scene object's root prim only. | 2282 | /// Immediately send an update for this scene object's root prim only. |
2269 | /// This is for updates regarding the object as a whole, and none of its parts in particular. | 2283 | /// This is for updates regarding the object as a whole, and none of its parts in particular. |
2270 | /// Note: this may not be cused by opensim (it probably should) but it's used by | 2284 | /// Note: this may not be used by opensim (it probably should) but it's used by |
2271 | /// external modules. | 2285 | /// external modules. |
2272 | /// </summary> | 2286 | /// </summary> |
2273 | public void SendGroupRootTerseUpdate() | 2287 | public void SendGroupRootTerseUpdate() |
@@ -2282,6 +2296,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2282 | { | 2296 | { |
2283 | if (m_scene == null) // Need to check here as it's null during object creation | 2297 | if (m_scene == null) // Need to check here as it's null during object creation |
2284 | return; | 2298 | return; |
2299 | |||
2285 | m_scene.SceneGraph.AddToUpdateList(this); | 2300 | m_scene.SceneGraph.AddToUpdateList(this); |
2286 | } | 2301 | } |
2287 | 2302 | ||
@@ -3783,7 +3798,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
3783 | HasGroupChanged = true; | 3798 | HasGroupChanged = true; |
3784 | } | 3799 | } |
3785 | lockPartsForRead(false); | 3800 | lockPartsForRead(false); |
3786 | ScheduleGroupForFullUpdate(); | 3801 | |
3802 | // Don't trigger the update here - otherwise some client issues occur when multiple updates are scheduled | ||
3803 | // for the same object with very different properties. The caller must schedule the update. | ||
3804 | //ScheduleGroupForFullUpdate(); | ||
3787 | } | 3805 | } |
3788 | 3806 | ||
3789 | public void TriggerScriptChangedEvent(Changed val) | 3807 | public void TriggerScriptChangedEvent(Changed val) |