aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2015-01-22 23:12:10 +0000
committerJustin Clark-Casey (justincc)2015-01-23 00:27:57 +0000
commitd0a2ea0857c1342a42db31bce282c62c88c57e55 (patch)
treeb727ce53574216d12cc6549e74982ce5de850654 /OpenSim/Region/Framework/Scenes
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-d0a2ea0857c1342a42db31bce282c62c88c57e55.zip
opensim-SC-d0a2ea0857c1342a42db31bce282c62c88c57e55.tar.gz
opensim-SC-d0a2ea0857c1342a42db31bce282c62c88c57e55.tar.bz2
opensim-SC-d0a2ea0857c1342a42db31bce282c62c88c57e55.tar.xz
Fix regression where the stored state of every second script in an object rezzed from inventory (e.g. attachments) was no longer loaded.
Likely a regression since f132f642 (2014-08-28) Relates to http://opensimulator.org/mantis/view.php?id=7278
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs34
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs8
2 files changed, 28 insertions, 14 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index ec37836..19e557f 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -911,28 +911,36 @@ namespace OpenSim.Region.Framework.Scenes
911 911
912 public void LoadScriptState(XmlReader reader) 912 public void LoadScriptState(XmlReader reader)
913 { 913 {
914// m_log.DebugFormat("[SCENE OBJECT GROUP]: Looking for script state for {0} in {1}", Name); 914// m_log.DebugFormat("[SCENE OBJECT GROUP]: Looking for script state for {0}", Name);
915 915
916 while (reader.ReadToFollowing("SavedScriptState")) 916 while (true)
917 { 917 {
918// m_log.DebugFormat("[SCENE OBJECT GROUP]: Loading script state for {0}", Name); 918 if (reader.Name == "SavedScriptState" && reader.NodeType == XmlNodeType.Element)
919 {
920// m_log.DebugFormat("[SCENE OBJECT GROUP]: Loading script state for {0}", Name);
919 921
920 if (m_savedScriptState == null) 922 if (m_savedScriptState == null)
921 m_savedScriptState = new Dictionary<UUID, string>(); 923 m_savedScriptState = new Dictionary<UUID, string>();
922 924
923 string uuid = reader.GetAttribute("UUID"); 925 string uuid = reader.GetAttribute("UUID");
924 926
925 if (uuid != null) 927 if (uuid != null)
926 { 928 {
927// m_log.DebugFormat("[SCENE OBJECT GROUP]: Found state for item ID {0} in object {1}", uuid, Name); 929// m_log.DebugFormat("[SCENE OBJECT GROUP]: Found state for item ID {0} in object {1}", uuid, Name);
928 930
929 UUID itemid = new UUID(uuid); 931 UUID itemid = new UUID(uuid);
930 if (itemid != UUID.Zero) 932 if (itemid != UUID.Zero)
931 m_savedScriptState[itemid] = reader.ReadInnerXml(); 933 m_savedScriptState[itemid] = reader.ReadInnerXml();
934 }
935 else
936 {
937 m_log.WarnFormat("[SCENE OBJECT GROUP]: SavedScriptState element had no UUID in object {0}", Name);
938 }
932 } 939 }
933 else 940 else
934 { 941 {
935 m_log.WarnFormat("[SCENE OBJECT GROUP]: SavedScriptState element had no UUID in object {0}", Name); 942 if (!reader.Read())
943 break;
936 } 944 }
937 } 945 }
938 } 946 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 578909c..ec39726 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -400,6 +400,10 @@ namespace OpenSim.Region.Framework.Scenes
400 400
401 private UUID RestoreSavedScriptState(UUID loadedID, UUID oldID, UUID newID) 401 private UUID RestoreSavedScriptState(UUID loadedID, UUID oldID, UUID newID)
402 { 402 {
403// m_log.DebugFormat(
404// "[PRIM INVENTORY]: Restoring scripted state for item {0}, oldID {1}, loadedID {2}",
405// newID, oldID, loadedID);
406
403 IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>(); 407 IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
404 if (engines.Length == 0) // No engine at all 408 if (engines.Length == 0) // No engine at all
405 return oldID; 409 return oldID;
@@ -412,7 +416,7 @@ namespace OpenSim.Region.Framework.Scenes
412 XmlDocument doc = new XmlDocument(); 416 XmlDocument doc = new XmlDocument();
413 417
414 doc.LoadXml(m_part.ParentGroup.m_savedScriptState[stateID]); 418 doc.LoadXml(m_part.ParentGroup.m_savedScriptState[stateID]);
415 419
416 ////////// CRUFT WARNING /////////////////////////////////// 420 ////////// CRUFT WARNING ///////////////////////////////////
417 // 421 //
418 // Old objects will have <ScriptState><State> ... 422 // Old objects will have <ScriptState><State> ...
@@ -442,6 +446,8 @@ namespace OpenSim.Region.Framework.Scenes
442 // This created document has only the minimun data 446 // This created document has only the minimun data
443 // necessary for XEngine to parse it successfully 447 // necessary for XEngine to parse it successfully
444 448
449// m_log.DebugFormat("[PRIM INVENTORY]: Adding legacy state {0} in {1}", stateID, newID);
450
445 m_part.ParentGroup.m_savedScriptState[stateID] = newDoc.OuterXml; 451 m_part.ParentGroup.m_savedScriptState[stateID] = newDoc.OuterXml;
446 } 452 }
447 453