diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | 31 |
2 files changed, 30 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 479fb91..651884f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -5750,7 +5750,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
5750 | if (AnimationsNames == null) | 5750 | if (AnimationsNames == null) |
5751 | return null; | 5751 | return null; |
5752 | 5752 | ||
5753 | |||
5754 | lock (animsLock) | 5753 | lock (animsLock) |
5755 | { | 5754 | { |
5756 | if (AnimationsNames.Count == 0) | 5755 | if (AnimationsNames.Count == 0) |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 590a5d4..a664d0c 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -235,7 +235,6 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
235 | if (doScriptStates) | 235 | if (doScriptStates) |
236 | sceneObject.SaveScriptedState(writer); | 236 | sceneObject.SaveScriptedState(writer); |
237 | 237 | ||
238 | |||
239 | if (!noRootElement) | 238 | if (!noRootElement) |
240 | writer.WriteEndElement(); // SceneObjectGroup | 239 | writer.WriteEndElement(); // SceneObjectGroup |
241 | 240 | ||
@@ -499,6 +498,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
499 | m_SOPXmlProcessors.Add("SoundRadius", ProcessSoundRadius); | 498 | m_SOPXmlProcessors.Add("SoundRadius", ProcessSoundRadius); |
500 | m_SOPXmlProcessors.Add("SoundQueueing", ProcessSoundQueueing); | 499 | m_SOPXmlProcessors.Add("SoundQueueing", ProcessSoundQueueing); |
501 | 500 | ||
501 | m_SOPXmlProcessors.Add("SOPAnims", ProcessSOPAnims); | ||
502 | |||
502 | #endregion | 503 | #endregion |
503 | 504 | ||
504 | #region TaskInventoryXmlProcessors initialization | 505 | #region TaskInventoryXmlProcessors initialization |
@@ -826,6 +827,27 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
826 | } | 827 | } |
827 | } | 828 | } |
828 | 829 | ||
830 | private static void ProcessSOPAnims(SceneObjectPart obj, XmlReader reader) | ||
831 | { | ||
832 | obj.Animations = null; | ||
833 | try | ||
834 | { | ||
835 | string datastr; | ||
836 | datastr = reader.ReadElementContentAsString(); | ||
837 | if(string.IsNullOrEmpty(datastr)) | ||
838 | return; | ||
839 | |||
840 | byte[] pdata = Convert.FromBase64String(datastr); | ||
841 | obj.DeSerializeAnimations(pdata); | ||
842 | return; | ||
843 | } | ||
844 | catch {} | ||
845 | |||
846 | m_log.DebugFormat( | ||
847 | "[SceneObjectSerializer]: Parsing ProcessSOPAnims for object part {0} {1} encountered errors", | ||
848 | obj.Name, obj.UUID); | ||
849 | } | ||
850 | |||
829 | private static void ProcessShape(SceneObjectPart obj, XmlReader reader) | 851 | private static void ProcessShape(SceneObjectPart obj, XmlReader reader) |
830 | { | 852 | { |
831 | List<string> errorNodeNames; | 853 | List<string> errorNodeNames; |
@@ -1588,6 +1610,13 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1588 | } | 1610 | } |
1589 | writer.WriteElementString("SoundQueueing", sop.SoundQueueing.ToString().ToLower()); | 1611 | writer.WriteElementString("SoundQueueing", sop.SoundQueueing.ToString().ToLower()); |
1590 | 1612 | ||
1613 | if (sop.Animations != null) | ||
1614 | { | ||
1615 | Byte[] data = sop.SerializeAnimations(); | ||
1616 | if(data != null && data.Length > 0) | ||
1617 | writer.WriteElementString("SOPAnims", Convert.ToBase64String(data)); | ||
1618 | } | ||
1619 | |||
1591 | writer.WriteEndElement(); | 1620 | writer.WriteEndElement(); |
1592 | } | 1621 | } |
1593 | 1622 | ||