mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:46:02 +08:00
mantis 9230: flag need for prims inventory saves in more 9un0link cases
This commit is contained in:
@@ -44,7 +44,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||
/// <summary>
|
||||
/// Force the task inventory of this prim to persist at the next update sweep
|
||||
/// </summary>
|
||||
void ForceInventoryPersistence();
|
||||
void ForceInventoryPersistence(bool force = true);
|
||||
|
||||
/// <summary>
|
||||
/// Reset UUIDs for all the items in the prim's inventory.
|
||||
|
||||
@@ -2124,6 +2124,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// from the database. They will be rewritten immediately,
|
||||
// minus the rows for the unlinked child prims.
|
||||
m_parentScene.SimulationDataService.RemoveObject(g.UUID, m_parentScene.RegionInfo.RegionID);
|
||||
g.SetPartsInventoryChanged(); // so we also need to force inventory save
|
||||
g.InvalidatePartsLinkMaps();
|
||||
g.TriggerScriptChangedEvent(Changed.LINK);
|
||||
g.HasGroupChanged = true; // Persist
|
||||
|
||||
@@ -44,11 +44,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// <summary>
|
||||
/// Force all task inventories of prims in the scene object to persist
|
||||
/// </summary>
|
||||
public void ForceInventoryPersistence()
|
||||
public void ForceInventoryPersistence(bool force = true)
|
||||
{
|
||||
SceneObjectPart[] parts = m_parts.GetArray();
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
parts[i].Inventory.ForceInventoryPersistence();
|
||||
parts[i].Inventory.ForceInventoryPersistence(force);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -3462,6 +3462,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
// Single prim left
|
||||
RootPart.LinkNum = 0;
|
||||
RootPart.Inventory?.ForceInventoryPersistence(); // TODO remove need for this
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3470,6 +3471,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
SceneObjectPart part = parts[i];
|
||||
if (part.LinkNum > linkPart.LinkNum)
|
||||
part.LinkNum--;
|
||||
part.Inventory?.ForceInventoryPersistence(); // TODO remove need for this
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3519,7 +3521,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (m_rootPart.PhysActor is not null)
|
||||
m_rootPart.PhysActor.Building = false;
|
||||
|
||||
linkPart.Inventory.ForceInventoryPersistence();
|
||||
linkPart.Inventory.ForceInventoryPersistence(); // TODO remove need for this
|
||||
|
||||
if (sendEvents)
|
||||
linkPart.TriggerScriptChangedEvent(Changed.LINK);
|
||||
@@ -4044,6 +4046,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
RootPart.ScheduleFullUpdate();
|
||||
}
|
||||
|
||||
public void SetPartsInventoryChanged()
|
||||
{
|
||||
SceneObjectPart[] parts = m_parts.GetArray();
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
parts[i].Inventory?.ForceInventoryPersistence();
|
||||
}
|
||||
|
||||
public void UpdatePermissions(UUID AgentID, byte field, uint localID,
|
||||
uint mask, byte addRemTF)
|
||||
{
|
||||
|
||||
@@ -150,9 +150,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// <summary>
|
||||
/// Force the task inventory of this prim to persist at the next update sweep
|
||||
/// </summary>
|
||||
public void ForceInventoryPersistence()
|
||||
public void ForceInventoryPersistence(bool force = true)
|
||||
{
|
||||
HasInventoryChanged = true;
|
||||
HasInventoryChanged = force || m_items.Count > 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -3434,7 +3434,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
}
|
||||
|
||||
target.Animator.RemoveAnimation(animation);
|
||||
|
||||
}
|
||||
|
||||
public void osNpcWhisper(LSL_Key npc, int channel, string message)
|
||||
|
||||
Reference in New Issue
Block a user