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
0.8.1-post-fixes
parent
edc155c636
commit
d0a2ea0857
|
@ -297,6 +297,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
{
|
{
|
||||||
if (item != null && item.Owner == ownerID && asset != null)
|
if (item != null && item.Owner == ownerID && asset != null)
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[INVENTORY ACCESS MODULE]: Updating item {0} {1} with new asset {2}",
|
||||||
|
// item.Name, item.ID, asset.ID);
|
||||||
|
|
||||||
item.AssetID = asset.FullID;
|
item.AssetID = asset.FullID;
|
||||||
item.Description = asset.Description;
|
item.Description = asset.Description;
|
||||||
item.Name = asset.Name;
|
item.Name = asset.Name;
|
||||||
|
@ -314,7 +318,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
(item == null || asset == null? "null item or asset" : "wrong owner"));
|
(item == null || asset == null? "null item or asset" : "wrong owner"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual List<InventoryItemBase> CopyToInventory(
|
public virtual List<InventoryItemBase> CopyToInventory(
|
||||||
|
|
|
@ -911,28 +911,36 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
public void LoadScriptState(XmlReader reader)
|
public void LoadScriptState(XmlReader reader)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE OBJECT GROUP]: Looking for script state for {0} in {1}", Name);
|
// m_log.DebugFormat("[SCENE OBJECT GROUP]: Looking for script state for {0}", Name);
|
||||||
|
|
||||||
while (reader.ReadToFollowing("SavedScriptState"))
|
while (true)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE OBJECT GROUP]: Loading script state for {0}", Name);
|
if (reader.Name == "SavedScriptState" && reader.NodeType == XmlNodeType.Element)
|
||||||
|
|
||||||
if (m_savedScriptState == null)
|
|
||||||
m_savedScriptState = new Dictionary<UUID, string>();
|
|
||||||
|
|
||||||
string uuid = reader.GetAttribute("UUID");
|
|
||||||
|
|
||||||
if (uuid != null)
|
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE OBJECT GROUP]: Found state for item ID {0} in object {1}", uuid, Name);
|
// m_log.DebugFormat("[SCENE OBJECT GROUP]: Loading script state for {0}", Name);
|
||||||
|
|
||||||
UUID itemid = new UUID(uuid);
|
if (m_savedScriptState == null)
|
||||||
if (itemid != UUID.Zero)
|
m_savedScriptState = new Dictionary<UUID, string>();
|
||||||
m_savedScriptState[itemid] = reader.ReadInnerXml();
|
|
||||||
|
string uuid = reader.GetAttribute("UUID");
|
||||||
|
|
||||||
|
if (uuid != null)
|
||||||
|
{
|
||||||
|
// m_log.DebugFormat("[SCENE OBJECT GROUP]: Found state for item ID {0} in object {1}", uuid, Name);
|
||||||
|
|
||||||
|
UUID itemid = new UUID(uuid);
|
||||||
|
if (itemid != UUID.Zero)
|
||||||
|
m_savedScriptState[itemid] = reader.ReadInnerXml();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.WarnFormat("[SCENE OBJECT GROUP]: SavedScriptState element had no UUID in object {0}", Name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[SCENE OBJECT GROUP]: SavedScriptState element had no UUID in object {0}", Name);
|
if (!reader.Read())
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -400,6 +400,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
private UUID RestoreSavedScriptState(UUID loadedID, UUID oldID, UUID newID)
|
private UUID RestoreSavedScriptState(UUID loadedID, UUID oldID, UUID newID)
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[PRIM INVENTORY]: Restoring scripted state for item {0}, oldID {1}, loadedID {2}",
|
||||||
|
// newID, oldID, loadedID);
|
||||||
|
|
||||||
IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
|
IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
|
||||||
if (engines.Length == 0) // No engine at all
|
if (engines.Length == 0) // No engine at all
|
||||||
return oldID;
|
return oldID;
|
||||||
|
@ -442,6 +446,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// This created document has only the minimun data
|
// This created document has only the minimun data
|
||||||
// necessary for XEngine to parse it successfully
|
// necessary for XEngine to parse it successfully
|
||||||
|
|
||||||
|
// m_log.DebugFormat("[PRIM INVENTORY]: Adding legacy state {0} in {1}", stateID, newID);
|
||||||
|
|
||||||
m_part.ParentGroup.m_savedScriptState[stateID] = newDoc.OuterXml;
|
m_part.ParentGroup.m_savedScriptState[stateID] = newDoc.OuterXml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1043,6 +1043,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
|
|
||||||
public void SetVars(Dictionary<string, object> vars)
|
public void SetVars(Dictionary<string, object> vars)
|
||||||
{
|
{
|
||||||
|
// foreach (KeyValuePair<string, object> kvp in vars)
|
||||||
|
// m_log.DebugFormat("[SCRIPT INSTANCE]: Setting var {0}={1}", kvp.Key, kvp.Value);
|
||||||
|
|
||||||
m_Script.SetVars(vars);
|
m_Script.SetVars(vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue