aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
authorUbitUmarov2018-12-31 13:33:00 +0000
committerUbitUmarov2018-12-31 13:33:00 +0000
commitae00623b6567eb328eb6249bf2f2f9ad08175844 (patch)
treebabb02a7aea911bc30ab01f7c027b54fcc2bece3 /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
parentadd a bit more persistence (still mysql only) (diff)
downloadopensim-SC-ae00623b6567eb328eb6249bf2f2f9ad08175844.zip
opensim-SC-ae00623b6567eb328eb6249bf2f2f9ad08175844.tar.gz
opensim-SC-ae00623b6567eb328eb6249bf2f2f9ad08175844.tar.bz2
opensim-SC-ae00623b6567eb328eb6249bf2f2f9ad08175844.tar.xz
lost in updates
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs76
1 files changed, 41 insertions, 35 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 080faeb..8274136 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -950,7 +950,7 @@ namespace OpenSim.Region.Framework.Scenes
950 950
951 sog.inTransit = false; 951 sog.inTransit = false;
952 AttachToBackup(); 952 AttachToBackup();
953 sog.ScheduleGroupForFullUpdate(); 953 sog.ScheduleGroupForFullAnimUpdate();
954 } 954 }
955 } 955 }
956 956
@@ -2668,7 +2668,7 @@ namespace OpenSim.Region.Framework.Scenes
2668 dupe.HasGroupChanged = true; 2668 dupe.HasGroupChanged = true;
2669 dupe.AttachToBackup(); 2669 dupe.AttachToBackup();
2670 2670
2671 dupe.ScheduleGroupForFullUpdate(); 2671 dupe.ScheduleGroupForFullAnimUpdate();
2672 } 2672 }
2673 2673
2674 dupe.InvalidatePartsLinkMaps(); 2674 dupe.InvalidatePartsLinkMaps();
@@ -3028,10 +3028,12 @@ namespace OpenSim.Region.Framework.Scenes
3028 /// </remarks> 3028 /// </remarks>
3029 public void ScheduleGroupForFullUpdate() 3029 public void ScheduleGroupForFullUpdate()
3030 { 3030 {
3031// if (IsAttachment) 3031 // if (IsAttachment)
3032// m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, LocalId); 3032 // m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, LocalId);
3033
3034 checkAtTargets(); 3033 checkAtTargets();
3034 if (Scene.GetNumberOfClients() == 0)
3035 return;
3036
3035 RootPart.ScheduleFullUpdate(); 3037 RootPart.ScheduleFullUpdate();
3036 3038
3037 SceneObjectPart[] parts = m_parts.GetArray(); 3039 SceneObjectPart[] parts = m_parts.GetArray();
@@ -3043,54 +3045,58 @@ namespace OpenSim.Region.Framework.Scenes
3043 } 3045 }
3044 } 3046 }
3045 3047
3046 /// <summary> 3048 public void ScheduleGroupForFullAnimUpdate()
3047 /// Schedule a terse update for this scene object to all interested viewers.
3048 /// </summary>
3049 /// <remarks>
3050 /// Ultimately, this should be managed such that region modules can invoke it at the end of a set of operations
3051 /// so that either all changes are sent at once. However, currently, a large amount of internal
3052 /// code will set this anyway when some object properties are changed.
3053 /// </remarks>
3054 public void ScheduleGroupForTerseUpdate()
3055 { 3049 {
3056// m_log.DebugFormat("[SOG]: Scheduling terse update for {0} {1}", Name, UUID); 3050 // if (IsAttachment)
3057 3051 // m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, LocalId);
3058 SceneObjectPart[] parts = m_parts.GetArray(); 3052 checkAtTargets();
3059 for (int i = 0; i < parts.Length; i++)
3060 parts[i].ScheduleTerseUpdate();
3061 }
3062 3053
3063 /// <summary> 3054 if (Scene.GetNumberOfClients() == 0)
3064 /// Immediately send a full update for this scene object.
3065 /// </summary>
3066 public void SendGroupFullUpdate()
3067 {
3068 if (IsDeleted)
3069 return; 3055 return;
3070 3056
3071// m_log.DebugFormat("[SOG]: Sending immediate full group update for {0} {1}", Name, UUID); 3057 SceneObjectPart[] parts = m_parts.GetArray();
3072 3058
3073 if (IsAttachment) 3059 if (!RootPart.Shape.MeshFlagEntry)
3074 { 3060 {
3075 ScenePresence sp = m_scene.GetScenePresence(AttachedAvatar); 3061 RootPart.ScheduleFullUpdate();
3076 if (sp != null) 3062
3063 for (int i = 0; i < parts.Length; i++)
3077 { 3064 {
3078 sp.SendAttachmentUpdate(this, PrimUpdateFlags.FullUpdate); 3065 SceneObjectPart part = parts[i];
3079 return; 3066 if (part != RootPart)
3067 part.ScheduleFullUpdate();
3080 } 3068 }
3069 return;
3081 } 3070 }
3082 3071
3083 RootPart.SendFullUpdateToAllClientsNoAttachment(); 3072 RootPart.ScheduleFullAnimUpdate();
3084 SceneObjectPart[] parts = m_parts.GetArray(); 3073
3085 for (int i = 0; i < parts.Length; i++) 3074 for (int i = 0; i < parts.Length; i++)
3086 { 3075 {
3087 SceneObjectPart part = parts[i]; 3076 SceneObjectPart part = parts[i];
3088 if (part != RootPart) 3077 if (part != RootPart)
3089 part.SendFullUpdateToAllClientsNoAttachment(); 3078 part.ScheduleFullAnimUpdate();
3090 } 3079 }
3091 } 3080 }
3092 3081
3093 /// <summary> 3082 /// <summary>
3083 /// Schedule a terse update for this scene object to all interested viewers.
3084 /// </summary>
3085 /// <remarks>
3086 /// Ultimately, this should be managed such that region modules can invoke it at the end of a set of operations
3087 /// so that either all changes are sent at once. However, currently, a large amount of internal
3088 /// code will set this anyway when some object properties are changed.
3089 /// </remarks>
3090 public void ScheduleGroupForTerseUpdate()
3091 {
3092// m_log.DebugFormat("[SOG]: Scheduling terse update for {0} {1}", Name, UUID);
3093
3094 SceneObjectPart[] parts = m_parts.GetArray();
3095 for (int i = 0; i < parts.Length; i++)
3096 parts[i].ScheduleTerseUpdate();
3097 }
3098
3099 /// <summary>
3094 /// Immediately send an update for this scene object's root prim only. 3100 /// Immediately send an update for this scene object's root prim only.
3095 /// This is for updates regarding the object as a whole, and none of its parts in particular. 3101 /// This is for updates regarding the object as a whole, and none of its parts in particular.
3096 /// Note: this may not be used by opensim (it probably should) but it's used by 3102 /// Note: this may not be used by opensim (it probably should) but it's used by