Trigger persistence of the scripts in a prim's inventory when that inventory is changed/updated/deleted (before the trigger only happened if the prim was moved).
This is still development code - experimental prim inventory persistence cannot yet be enabled by users.afrisby
parent
97c1b84463
commit
348b79d801
|
@ -49,9 +49,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
group.StartScripts();
|
group.StartScripts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//split these method into this partial as a lot of these (hopefully) are only temporary and won't be needed once Caps is more complete
|
|
||||||
// or at least some of they can be moved somewhere else
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add an inventory item to an avatar's inventory.
|
/// Add an inventory item to an avatar's inventory.
|
||||||
|
|
|
@ -124,6 +124,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
taskItem.type = TaskInventoryItem.Types[item.assetType];
|
taskItem.type = TaskInventoryItem.Types[item.assetType];
|
||||||
taskItem.inv_type = TaskInventoryItem.Types[item.invType];
|
taskItem.inv_type = TaskInventoryItem.Types[item.invType];
|
||||||
part.AddInventoryItem(taskItem);
|
part.AddInventoryItem(taskItem);
|
||||||
|
|
||||||
|
// It might seem somewhat crude to update the whole group for a single prim inventory change,
|
||||||
|
// but it's possible that other prim inventory changes will take place before the region
|
||||||
|
// persistence thread visits this object. In the future, changes can be signalled at a more
|
||||||
|
// granular level, or we could let the datastore worry about whether prims have really
|
||||||
|
// changed since they were last persisted.
|
||||||
|
HasChanged = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -146,6 +154,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
taskItem.type = TaskInventoryItem.Types[item.assetType];
|
taskItem.type = TaskInventoryItem.Types[item.assetType];
|
||||||
taskItem.inv_type = TaskInventoryItem.InvTypes[item.invType];
|
taskItem.inv_type = TaskInventoryItem.InvTypes[item.invType];
|
||||||
part.AddInventoryItem(taskItem);
|
part.AddInventoryItem(taskItem);
|
||||||
|
|
||||||
|
// It might seem somewhat crude to update the whole group for a single prim inventory change,
|
||||||
|
// but it's possible that other prim inventory changes will take place before the region
|
||||||
|
// persistence thread visits this object. In the future, changes can be signalled at a more
|
||||||
|
// granular level, or we could let the datastore worry about whether prims have really
|
||||||
|
// changed since they were last persisted.
|
||||||
|
HasChanged = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -160,9 +176,19 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
SceneObjectPart part = GetChildPart(localID);
|
SceneObjectPart part = GetChildPart(localID);
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
return part.RemoveInventoryItem(remoteClient, localID, itemID);
|
int type = part.RemoveInventoryItem(remoteClient, localID, itemID);
|
||||||
|
|
||||||
|
// It might seem somewhat crude to update the whole group for a single prim inventory change,
|
||||||
|
// but it's possible that other prim inventory changes will take place before the region
|
||||||
|
// persistence thread visits this object. In the future, changes can be signalled at a more
|
||||||
|
// granular level, or we could let the datastore worry about whether prims have really
|
||||||
|
// changed since they were last persisted.
|
||||||
|
HasChanged = true;
|
||||||
|
|
||||||
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,6 +174,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Remove an item from this prim's inventory
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="remoteClient"></param>
|
||||||
|
/// <param name="localID"></param>
|
||||||
|
/// <param name="itemID"></param>
|
||||||
|
/// <returns>Numeric asset type of the item removed.</returns>
|
||||||
public int RemoveInventoryItem(IClientAPI remoteClient, uint localID, LLUUID itemID)
|
public int RemoveInventoryItem(IClientAPI remoteClient, uint localID, LLUUID itemID)
|
||||||
{
|
{
|
||||||
if (localID == LocalID)
|
if (localID == LocalID)
|
||||||
|
@ -183,7 +190,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
string type = m_taskInventory[itemID].inv_type;
|
string type = m_taskInventory[itemID].inv_type;
|
||||||
m_taskInventory.Remove(itemID);
|
m_taskInventory.Remove(itemID);
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
if (type == "lsl_text")
|
if (type == "lsltext")
|
||||||
{
|
{
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue