diff options
author | UbitUmarov | 2018-12-31 13:33:00 +0000 |
---|---|---|
committer | UbitUmarov | 2018-12-31 13:33:00 +0000 |
commit | ae00623b6567eb328eb6249bf2f2f9ad08175844 (patch) | |
tree | babb02a7aea911bc30ab01f7c027b54fcc2bece3 /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |
parent | add a bit more persistence (still mysql only) (diff) | |
download | opensim-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.cs | 76 |
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 |