* refactor: Rip out SOP inventory from the partial into a separate class
* SceneObjectPartInventory.cs isn't a particularly good name but it's probably not got a long life * A proper inventory interface to follow * Parallel changes for other inventory partial classes to follow at a later date0.6.1-post-fixes
parent
02105c9c2a
commit
915593bfbc
|
@ -718,7 +718,7 @@ VALUES
|
||||||
//m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID);
|
//m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID);
|
||||||
}
|
}
|
||||||
|
|
||||||
prim.RestoreInventoryItems(inventory);
|
prim.Inventory.RestoreInventoryItems(inventory);
|
||||||
|
|
||||||
// XXX A nasty little hack to recover the folder id for the prim (which is currently stored in
|
// XXX A nasty little hack to recover the folder id for the prim (which is currently stored in
|
||||||
// every item). This data should really be stored in the prim table itself.
|
// every item). This data should really be stored in the prim table itself.
|
||||||
|
|
|
@ -511,7 +511,7 @@ namespace OpenSim.Data.MySQL
|
||||||
//m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID);
|
//m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID);
|
||||||
}
|
}
|
||||||
|
|
||||||
prim.RestoreInventoryItems(inventory);
|
prim.Inventory.RestoreInventoryItems(inventory);
|
||||||
|
|
||||||
// XXX A nasty little hack to recover the folder id for the prim (which is currently stored in
|
// XXX A nasty little hack to recover the folder id for the prim (which is currently stored in
|
||||||
// every item). This data should really be stored in the prim table itself.
|
// every item). This data should really be stored in the prim table itself.
|
||||||
|
|
|
@ -261,7 +261,7 @@ namespace OpenSim.Data.NHibernate
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inventory.Count > 0)
|
if (inventory.Count > 0)
|
||||||
p.RestoreInventoryItems(inventory);
|
p.Inventory.RestoreInventoryItems(inventory);
|
||||||
}
|
}
|
||||||
foreach (SceneObjectGroup g in SOG.Values)
|
foreach (SceneObjectGroup g in SOG.Values)
|
||||||
{
|
{
|
||||||
|
|
|
@ -514,7 +514,7 @@ namespace OpenSim.Data.SQLite
|
||||||
//m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID);
|
//m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID);
|
||||||
}
|
}
|
||||||
|
|
||||||
prim.RestoreInventoryItems(inventory);
|
prim.Inventory.RestoreInventoryItems(inventory);
|
||||||
|
|
||||||
// XXX A nasty little hack to recover the folder id for the prim (which is currently stored in
|
// XXX A nasty little hack to recover the folder id for the prim (which is currently stored in
|
||||||
// every item). This data should really be stored in the prim table itself.
|
// every item). This data should really be stored in the prim table itself.
|
||||||
|
|
|
@ -255,8 +255,8 @@ namespace OpenSim.Data.Tests
|
||||||
sop.GroupPosition = groupos;
|
sop.GroupPosition = groupos;
|
||||||
sop.RotationOffset = rotoff;
|
sop.RotationOffset = rotoff;
|
||||||
sop.CreatorID = creator;
|
sop.CreatorID = creator;
|
||||||
sop.InventorySerial = iserial;
|
sop.Inventory.Serial = iserial;
|
||||||
sop.TaskInventory = dic;
|
sop.Inventory.Items = dic;
|
||||||
sop.ObjectFlags = objf;
|
sop.ObjectFlags = objf;
|
||||||
sop.Name = name;
|
sop.Name = name;
|
||||||
sop.Material = material;
|
sop.Material = material;
|
||||||
|
@ -287,8 +287,8 @@ namespace OpenSim.Data.Tests
|
||||||
Assert.That(rotoff,Is.EqualTo(sop.RotationOffset));
|
Assert.That(rotoff,Is.EqualTo(sop.RotationOffset));
|
||||||
Assert.That(uuid,Is.EqualTo(sop.UUID));
|
Assert.That(uuid,Is.EqualTo(sop.UUID));
|
||||||
Assert.That(creator,Is.EqualTo(sop.CreatorID));
|
Assert.That(creator,Is.EqualTo(sop.CreatorID));
|
||||||
Assert.That(iserial,Is.EqualTo(sop.InventorySerial));
|
Assert.That(iserial,Is.EqualTo(sop.Inventory.Serial));
|
||||||
Assert.That(dic,Is.EqualTo(sop.TaskInventory));
|
Assert.That(dic,Is.EqualTo(sop.Inventory.Items));
|
||||||
Assert.That(objf,Is.EqualTo(sop.ObjectFlags));
|
Assert.That(objf,Is.EqualTo(sop.ObjectFlags));
|
||||||
Assert.That(name,Is.EqualTo(sop.Name));
|
Assert.That(name,Is.EqualTo(sop.Name));
|
||||||
Assert.That(material,Is.EqualTo(sop.Material));
|
Assert.That(material,Is.EqualTo(sop.Material));
|
||||||
|
@ -337,7 +337,7 @@ namespace OpenSim.Data.Tests
|
||||||
Assert.That(uuid,Is.EqualTo(p.UUID));
|
Assert.That(uuid,Is.EqualTo(p.UUID));
|
||||||
Assert.That(creator,Is.EqualTo(p.CreatorID));
|
Assert.That(creator,Is.EqualTo(p.CreatorID));
|
||||||
//Assert.That(iserial,Is.EqualTo(p.InventorySerial));
|
//Assert.That(iserial,Is.EqualTo(p.InventorySerial));
|
||||||
Assert.That(dic,Is.EqualTo(p.TaskInventory));
|
Assert.That(dic,Is.EqualTo(p.Inventory.Items));
|
||||||
//Assert.That(objf,Is.EqualTo(p.ObjectFlags));
|
//Assert.That(objf,Is.EqualTo(p.ObjectFlags));
|
||||||
Assert.That(name,Is.EqualTo(p.Name));
|
Assert.That(name,Is.EqualTo(p.Name));
|
||||||
Assert.That(material,Is.EqualTo(p.Material));
|
Assert.That(material,Is.EqualTo(p.Material));
|
||||||
|
@ -415,7 +415,7 @@ namespace OpenSim.Data.Tests
|
||||||
sog2.RootPart.GroupPosition = groupos;
|
sog2.RootPart.GroupPosition = groupos;
|
||||||
sog2.RootPart.RotationOffset = rotoff;
|
sog2.RootPart.RotationOffset = rotoff;
|
||||||
sog2.RootPart.CreatorID = creator;
|
sog2.RootPart.CreatorID = creator;
|
||||||
sog2.RootPart.TaskInventory = dic;
|
sog2.RootPart.Inventory.Items = dic;
|
||||||
sog2.RootPart.Name = name;
|
sog2.RootPart.Name = name;
|
||||||
sog2.RootPart.Material = material;
|
sog2.RootPart.Material = material;
|
||||||
sog2.RootPart.ScriptAccessPin = pin;
|
sog2.RootPart.ScriptAccessPin = pin;
|
||||||
|
@ -449,7 +449,7 @@ namespace OpenSim.Data.Tests
|
||||||
Assert.That(name,Is.EqualTo(p.Name));
|
Assert.That(name,Is.EqualTo(p.Name));
|
||||||
Assert.That(rotoff,Is.EqualTo(p.RotationOffset));
|
Assert.That(rotoff,Is.EqualTo(p.RotationOffset));
|
||||||
Assert.That(creator,Is.EqualTo(p.CreatorID));
|
Assert.That(creator,Is.EqualTo(p.CreatorID));
|
||||||
Assert.That(dic,Is.EqualTo(p.TaskInventory));
|
Assert.That(dic,Is.EqualTo(p.Inventory.Items));
|
||||||
Assert.That(name,Is.EqualTo(p.Name));
|
Assert.That(name,Is.EqualTo(p.Name));
|
||||||
Assert.That(material,Is.EqualTo(p.Material));
|
Assert.That(material,Is.EqualTo(p.Material));
|
||||||
Assert.That(pin,Is.EqualTo(p.ScriptAccessPin));
|
Assert.That(pin,Is.EqualTo(p.ScriptAccessPin));
|
||||||
|
@ -534,7 +534,7 @@ namespace OpenSim.Data.Tests
|
||||||
// TODO: seriously??? this is the way we need to loop to get this?
|
// TODO: seriously??? this is the way we need to loop to get this?
|
||||||
|
|
||||||
List<TaskInventoryItem> list = new List<TaskInventoryItem>();
|
List<TaskInventoryItem> list = new List<TaskInventoryItem>();
|
||||||
foreach (UUID uuid in sog.RootPart.GetInventoryList())
|
foreach (UUID uuid in sog.RootPart.Inventory.GetInventoryList())
|
||||||
{
|
{
|
||||||
list.Add(sog.GetInventoryItem(sog.RootPart.LocalId, uuid));
|
list.Add(sog.GetInventoryItem(sog.RootPart.LocalId, uuid));
|
||||||
}
|
}
|
||||||
|
|
|
@ -4998,7 +4998,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
|
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
TaskInventoryItem ti = part.GetInventoryItem(itemID);
|
TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID);
|
||||||
if (ti == null)
|
if (ti == null)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -267,7 +267,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
|
||||||
|
|
||||||
m_userTransactions.Manager.MyScene.CommsManager.AssetCache.AddAsset(m_asset);
|
m_userTransactions.Manager.MyScene.CommsManager.AssetCache.AddAsset(m_asset);
|
||||||
|
|
||||||
if (part.UpdateInventoryItem(item))
|
if (part.Inventory.UpdateInventoryItem(item))
|
||||||
part.GetProperties(remoteClient);
|
part.GetProperties(remoteClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -796,7 +796,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
||||||
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
|
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TaskInventoryItem ti = part.GetInventoryItem(notecard);
|
TaskInventoryItem ti = part.Inventory.GetInventoryItem(notecard);
|
||||||
|
|
||||||
if (ti == null)
|
if (ti == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -1188,7 +1188,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
||||||
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
|
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TaskInventoryItem ti = part.GetInventoryItem(script);
|
TaskInventoryItem ti = part.Inventory.GetInventoryItem(script);
|
||||||
|
|
||||||
if (ti == null)
|
if (ti == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -1266,7 +1266,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
||||||
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
|
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TaskInventoryItem ti = part.GetInventoryItem(notecard);
|
TaskInventoryItem ti = part.Inventory.GetInventoryItem(notecard);
|
||||||
|
|
||||||
if (ti == null)
|
if (ti == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -280,7 +280,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
if (isScriptRunning)
|
if (isScriptRunning)
|
||||||
{
|
{
|
||||||
part.RemoveScriptInstance(item.ItemID);
|
part.Inventory.RemoveScriptInstance(item.ItemID);
|
||||||
}
|
}
|
||||||
// Update item with new asset
|
// Update item with new asset
|
||||||
item.AssetID = asset.FullID;
|
item.AssetID = asset.FullID;
|
||||||
|
@ -292,7 +292,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
// Needs to determine which engine was running it and use that
|
// Needs to determine which engine was running it and use that
|
||||||
//
|
//
|
||||||
part.CreateScriptInstance(item.ItemID, 0, false, DefaultScriptEngine, 0);
|
part.Inventory.CreateScriptInstance(item.ItemID, 0, false, DefaultScriptEngine, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -945,7 +945,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
private InventoryItemBase CreateAgentInventoryItemFromTask(UUID destAgent, SceneObjectPart part, UUID itemId)
|
private InventoryItemBase CreateAgentInventoryItemFromTask(UUID destAgent, SceneObjectPart part, UUID itemId)
|
||||||
{
|
{
|
||||||
TaskInventoryItem taskItem = part.GetInventoryItem(itemId);
|
TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId);
|
||||||
|
|
||||||
if (null == taskItem)
|
if (null == taskItem)
|
||||||
{
|
{
|
||||||
|
@ -995,7 +995,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
if (!ExternalChecks.ExternalChecksBypassPermissions())
|
if (!ExternalChecks.ExternalChecksBypassPermissions())
|
||||||
{
|
{
|
||||||
if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
|
if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
|
||||||
part.RemoveInventoryItem(itemId);
|
part.Inventory.RemoveInventoryItem(itemId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return agentItem;
|
return agentItem;
|
||||||
|
@ -1040,7 +1040,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskInventoryItem taskItem = part.GetInventoryItem(itemId);
|
TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId);
|
||||||
|
|
||||||
if (null == taskItem)
|
if (null == taskItem)
|
||||||
{
|
{
|
||||||
|
@ -1104,7 +1104,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="itemId"></param>
|
/// <param name="itemId"></param>
|
||||||
public void MoveTaskInventoryItem(UUID destId, SceneObjectPart part, UUID itemId)
|
public void MoveTaskInventoryItem(UUID destId, SceneObjectPart part, UUID itemId)
|
||||||
{
|
{
|
||||||
TaskInventoryItem srcTaskItem = part.GetInventoryItem(itemId);
|
TaskInventoryItem srcTaskItem = part.Inventory.GetInventoryItem(itemId);
|
||||||
|
|
||||||
if (srcTaskItem == null)
|
if (srcTaskItem == null)
|
||||||
{
|
{
|
||||||
|
@ -1184,10 +1184,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
destTaskItem.InvType = srcTaskItem.InvType;
|
destTaskItem.InvType = srcTaskItem.InvType;
|
||||||
destTaskItem.Type = srcTaskItem.Type;
|
destTaskItem.Type = srcTaskItem.Type;
|
||||||
|
|
||||||
destPart.AddInventoryItem(destTaskItem, part.OwnerID != destPart.OwnerID);
|
destPart.Inventory.AddInventoryItem(destTaskItem, part.OwnerID != destPart.OwnerID);
|
||||||
|
|
||||||
if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
|
if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
|
||||||
part.RemoveInventoryItem(itemId);
|
part.Inventory.RemoveInventoryItem(itemId);
|
||||||
|
|
||||||
ScenePresence avatar;
|
ScenePresence avatar;
|
||||||
|
|
||||||
|
@ -1254,7 +1254,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
TaskInventoryItem currentItem = part.GetInventoryItem(itemID);
|
TaskInventoryItem currentItem = part.Inventory.GetInventoryItem(itemID);
|
||||||
bool allowInventoryDrop = (part.GetEffectiveObjectFlags()
|
bool allowInventoryDrop = (part.GetEffectiveObjectFlags()
|
||||||
& (uint)PrimFlags.AllowInventoryDrop) != 0;
|
& (uint)PrimFlags.AllowInventoryDrop) != 0;
|
||||||
|
|
||||||
|
@ -1314,7 +1314,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
agentTransactions.HandleTaskItemUpdateFromTransaction(
|
agentTransactions.HandleTaskItemUpdateFromTransaction(
|
||||||
remoteClient, part, transactionID, currentItem);
|
remoteClient, part, transactionID, currentItem);
|
||||||
}
|
}
|
||||||
if (part.UpdateInventoryItem(itemInfo))
|
if (part.Inventory.UpdateInventoryItem(itemInfo))
|
||||||
part.GetProperties(remoteClient);
|
part.GetProperties(remoteClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1364,7 +1364,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
part.ParentGroup.AddInventoryItem(remoteClient, localID, item, copyID);
|
part.ParentGroup.AddInventoryItem(remoteClient, localID, item, copyID);
|
||||||
// TODO: switch to posting on_rez here when scripts
|
// TODO: switch to posting on_rez here when scripts
|
||||||
// have state in inventory
|
// have state in inventory
|
||||||
part.CreateScriptInstance(copyID, 0, false, DefaultScriptEngine, 0);
|
part.Inventory.CreateScriptInstance(copyID, 0, false, DefaultScriptEngine, 0);
|
||||||
|
|
||||||
// m_log.InfoFormat("[PRIMINVENTORY]: " +
|
// m_log.InfoFormat("[PRIMINVENTORY]: " +
|
||||||
// "Rezzed script {0} into prim local ID {1} for user {2}",
|
// "Rezzed script {0} into prim local ID {1} for user {2}",
|
||||||
|
@ -1430,10 +1430,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
taskItem.PermsMask = 0;
|
taskItem.PermsMask = 0;
|
||||||
taskItem.AssetID = asset.FullID;
|
taskItem.AssetID = asset.FullID;
|
||||||
|
|
||||||
part.AddInventoryItem(taskItem, false);
|
part.Inventory.AddInventoryItem(taskItem, false);
|
||||||
part.GetProperties(remoteClient);
|
part.GetProperties(remoteClient);
|
||||||
|
|
||||||
part.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
|
part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1445,7 +1445,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="localID"></param>
|
/// <param name="localID"></param>
|
||||||
public void RezScript(UUID srcId, SceneObjectPart srcPart, UUID destId, int pin, int running, int start_param)
|
public void RezScript(UUID srcId, SceneObjectPart srcPart, UUID destId, int pin, int running, int start_param)
|
||||||
{
|
{
|
||||||
TaskInventoryItem srcTaskItem = srcPart.GetInventoryItem(srcId);
|
TaskInventoryItem srcTaskItem = srcPart.Inventory.GetInventoryItem(srcId);
|
||||||
|
|
||||||
if (srcTaskItem == null)
|
if (srcTaskItem == null)
|
||||||
{
|
{
|
||||||
|
@ -1525,11 +1525,11 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
destTaskItem.InvType = srcTaskItem.InvType;
|
destTaskItem.InvType = srcTaskItem.InvType;
|
||||||
destTaskItem.Type = srcTaskItem.Type;
|
destTaskItem.Type = srcTaskItem.Type;
|
||||||
|
|
||||||
destPart.AddInventoryItemExclusive(destTaskItem, false);
|
destPart.Inventory.AddInventoryItemExclusive(destTaskItem, false);
|
||||||
|
|
||||||
if (running > 0)
|
if (running > 0)
|
||||||
{
|
{
|
||||||
destPart.CreateScriptInstance(destTaskItem, 0, false, DefaultScriptEngine, 0);
|
destPart.Inventory.CreateScriptInstance(destTaskItem, 0, false, DefaultScriptEngine, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ScenePresence avatar;
|
ScenePresence avatar;
|
||||||
|
@ -2064,7 +2064,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
part.LastOwnerID = part.OwnerID;
|
part.LastOwnerID = part.OwnerID;
|
||||||
part.OwnerID = item.Owner;
|
part.OwnerID = item.Owner;
|
||||||
part.ChangeInventoryOwner(item.Owner);
|
part.Inventory.ChangeInventoryOwner(item.Owner);
|
||||||
}
|
}
|
||||||
else if (((item.CurrentPermissions & 8) != 0) && (!attachment)) // Slam!
|
else if (((item.CurrentPermissions & 8) != 0) && (!attachment)) // Slam!
|
||||||
{
|
{
|
||||||
|
@ -2178,7 +2178,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
part.LastOwnerID = part.OwnerID;
|
part.LastOwnerID = part.OwnerID;
|
||||||
part.OwnerID = item.OwnerID;
|
part.OwnerID = item.OwnerID;
|
||||||
part.ChangeInventoryOwner(item.OwnerID);
|
part.Inventory.ChangeInventoryOwner(item.OwnerID);
|
||||||
}
|
}
|
||||||
else if ((item.CurrentPermissions & 8) != 0) // Slam!
|
else if ((item.CurrentPermissions & 8) != 0) // Slam!
|
||||||
{
|
{
|
||||||
|
@ -2200,7 +2200,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
if (!ExternalChecks.ExternalChecksBypassPermissions())
|
if (!ExternalChecks.ExternalChecksBypassPermissions())
|
||||||
{
|
{
|
||||||
if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
|
if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
|
||||||
sourcePart.RemoveInventoryItem(item.ItemID);
|
sourcePart.Inventory.RemoveInventoryItem(item.ItemID);
|
||||||
}
|
}
|
||||||
return rootPart.ParentGroup;
|
return rootPart.ParentGroup;
|
||||||
}
|
}
|
||||||
|
@ -2368,7 +2368,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
if (part != null && part.ParentGroup != null)
|
if (part != null && part.ParentGroup != null)
|
||||||
{
|
{
|
||||||
part.ParentGroup.SetOwnerId(ownerID);
|
part.ParentGroup.SetOwnerId(ownerID);
|
||||||
part.ChangeInventoryOwner(ownerID);
|
part.Inventory.ChangeInventoryOwner(ownerID);
|
||||||
part.ParentGroup.SetGroup(groupID, remoteClient);
|
part.ParentGroup.SetGroup(groupID, remoteClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4277,8 +4277,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart child in partList)
|
foreach (SceneObjectPart child in partList)
|
||||||
{
|
{
|
||||||
child.ChangeInventoryOwner(remoteClient.AgentId);
|
child.Inventory.ChangeInventoryOwner(remoteClient.AgentId);
|
||||||
child.ApplyNextOwnerPermissions();
|
child.Inventory.ApplyNextOwnerPermissions();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4355,13 +4355,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: // Sell contents
|
case 3: // Sell contents
|
||||||
List<UUID> invList = part.GetInventoryList();
|
List<UUID> invList = part.Inventory.GetInventoryList();
|
||||||
|
|
||||||
bool okToSell = true;
|
bool okToSell = true;
|
||||||
|
|
||||||
foreach (UUID invID in invList)
|
foreach (UUID invID in invList)
|
||||||
{
|
{
|
||||||
TaskInventoryItem item = part.GetInventoryItem(invID);
|
TaskInventoryItem item = part.Inventory.GetInventoryItem(invID);
|
||||||
if ((item.CurrentPermissions &
|
if ((item.CurrentPermissions &
|
||||||
(uint)PermissionMask.Transfer) == 0)
|
(uint)PermissionMask.Transfer) == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,7 +50,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
{
|
{
|
||||||
part.ForceInventoryPersistence();
|
part.Inventory.ForceInventoryPersistence();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,8 +66,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
{
|
{
|
||||||
part.CreateScriptInstances(startParam, postOnRez, engine,
|
part.Inventory.CreateScriptInstances(startParam, postOnRez, engine, stateSource);
|
||||||
stateSource);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,7 +80,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
{
|
{
|
||||||
part.RemoveScriptInstances();
|
part.Inventory.RemoveScriptInstances();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,7 +95,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
SceneObjectPart part = GetChildPart(localID);
|
SceneObjectPart part = GetChildPart(localID);
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
return part.GetInventoryFileName(remoteClient, localID);
|
return part.Inventory.GetInventoryFileName(remoteClient, localID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -118,7 +117,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
SceneObjectPart part = GetChildPart(localID);
|
SceneObjectPart part = GetChildPart(localID);
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
part.RequestInventoryFile(client, xferManager);
|
part.Inventory.RequestInventoryFile(client, xferManager);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -191,7 +190,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
addFromAllowedDrop = remoteClient.AgentId != part.OwnerID;
|
addFromAllowedDrop = remoteClient.AgentId != part.OwnerID;
|
||||||
}
|
}
|
||||||
|
|
||||||
part.AddInventoryItem(taskItem, addFromAllowedDrop);
|
part.Inventory.AddInventoryItem(taskItem, addFromAllowedDrop);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -217,7 +216,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
SceneObjectPart part = GetChildPart(primID);
|
SceneObjectPart part = GetChildPart(primID);
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
return part.GetInventoryItem(itemID);
|
return part.Inventory.GetInventoryItem(itemID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -241,7 +240,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
SceneObjectPart part = GetChildPart(item.ParentPartID);
|
SceneObjectPart part = GetChildPart(item.ParentPartID);
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
part.UpdateInventoryItem(item);
|
part.Inventory.UpdateInventoryItem(item);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -261,7 +260,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
SceneObjectPart part = GetChildPart(localID);
|
SceneObjectPart part = GetChildPart(localID);
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
int type = part.RemoveInventoryItem(itemID);
|
int type = part.Inventory.RemoveInventoryItem(itemID);
|
||||||
|
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
@ -280,7 +279,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
{
|
{
|
||||||
ownerMask &= part.OwnerMask;
|
ownerMask &= part.OwnerMask;
|
||||||
perms &= part.MaskEffectivePermissions();
|
perms &= part.Inventory.MaskEffectivePermissions();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ownerMask & (uint)PermissionMask.Modify) == 0)
|
if ((ownerMask & (uint)PermissionMask.Modify) == 0)
|
||||||
|
@ -303,7 +302,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public void ApplyNextOwnerPermissions()
|
public void ApplyNextOwnerPermissions()
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
part.ApplyNextOwnerPermissions();
|
part.Inventory.ApplyNextOwnerPermissions();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetStateSnapshot()
|
public string GetStateSnapshot()
|
||||||
|
@ -313,13 +312,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
{
|
{
|
||||||
foreach (string a in part.GetScriptAssemblies())
|
foreach (string a in part.Inventory.GetScriptAssemblies())
|
||||||
{
|
{
|
||||||
if (a != "" && !assemblies.Contains(a))
|
if (a != "" && !assemblies.Contains(a))
|
||||||
assemblies.Add(a);
|
assemblies.Add(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (KeyValuePair<UUID, string> s in part.GetScriptStates())
|
foreach (KeyValuePair<UUID, string> s in part.Inventory.GetScriptStates())
|
||||||
{
|
{
|
||||||
states[s.Key] = s.Value;
|
states[s.Key] = s.Value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1044,7 +1044,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
{
|
{
|
||||||
// part.RemoveScriptInstances();
|
// part.Inventory.RemoveScriptInstances();
|
||||||
|
|
||||||
List<ScenePresence> avatars = Scene.GetScenePresences();
|
List<ScenePresence> avatars = Scene.GetScenePresences();
|
||||||
for (int i = 0; i < avatars.Count; i++)
|
for (int i = 0; i < avatars.Count; i++)
|
||||||
|
@ -1251,7 +1251,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
datastore.StoreObject(backup_group, m_scene.RegionInfo.RegionID);
|
datastore.StoreObject(backup_group, m_scene.RegionInfo.RegionID);
|
||||||
|
|
||||||
backup_group.ForEachPart(delegate(SceneObjectPart part) { part.ProcessInventoryBackup(datastore); });
|
backup_group.ForEachPart(delegate(SceneObjectPart part) { part.Inventory.ProcessInventoryBackup(datastore); });
|
||||||
|
|
||||||
backup_group = null;
|
backup_group = null;
|
||||||
}
|
}
|
||||||
|
@ -2828,7 +2828,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
{
|
{
|
||||||
part.SetGroup(GroupID, client);
|
part.SetGroup(GroupID, client);
|
||||||
part.ChangeInventoryGroup(GroupID);
|
part.Inventory.ChangeInventoryGroup(GroupID);
|
||||||
}
|
}
|
||||||
|
|
||||||
HasGroupChanged = true;
|
HasGroupChanged = true;
|
||||||
|
|
|
@ -28,14 +28,14 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Reflection;
|
||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
using System.Security.Permissions;
|
using System.Security.Permissions;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
using log4net;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenMetaverse.Packets;
|
using OpenMetaverse.Packets;
|
||||||
|
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Region.Environment.Scenes.Scripting;
|
using OpenSim.Region.Environment.Scenes.Scripting;
|
||||||
using OpenSim.Region.Physics.Manager;
|
using OpenSim.Region.Physics.Manager;
|
||||||
|
@ -92,8 +92,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
#endregion Enumerations
|
#endregion Enumerations
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public partial class SceneObjectPart : IScriptHost, ISerializable
|
public class SceneObjectPart : IScriptHost, ISerializable
|
||||||
{
|
{
|
||||||
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
[XmlIgnore]
|
[XmlIgnore]
|
||||||
|
@ -141,6 +143,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
[XmlIgnore]
|
[XmlIgnore]
|
||||||
public PhysicsVector RotationAxis = new PhysicsVector(1f,1f,1f);
|
public PhysicsVector RotationAxis = new PhysicsVector(1f,1f,1f);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This part's inventory
|
||||||
|
/// </summary>
|
||||||
|
[XmlIgnore]
|
||||||
|
public readonly SceneObjectPartInventory Inventory;
|
||||||
|
|
||||||
[XmlIgnore]
|
[XmlIgnore]
|
||||||
public bool Undoing = false;
|
public bool Undoing = false;
|
||||||
|
|
||||||
|
@ -218,6 +226,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_TextureAnimation = new byte[0];
|
m_TextureAnimation = new byte[0];
|
||||||
m_particleSystem = new byte[0];
|
m_particleSystem = new byte[0];
|
||||||
Rezzed = DateTime.Now;
|
Rezzed = DateTime.Now;
|
||||||
|
|
||||||
|
Inventory = new SceneObjectPartInventory(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -266,6 +276,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
TrimPermissions();
|
TrimPermissions();
|
||||||
//m_undo = new UndoStack<UndoState>(ParentGroup.GetSceneMaxUndo());
|
//m_undo = new UndoStack<UndoState>(ParentGroup.GetSceneMaxUndo());
|
||||||
|
|
||||||
|
Inventory = new SceneObjectPartInventory(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected SceneObjectPart(SerializationInfo info, StreamingContext context)
|
protected SceneObjectPart(SerializationInfo info, StreamingContext context)
|
||||||
|
@ -285,6 +297,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
//System.Console.WriteLine("SceneObjectPart Deserialize END");
|
//System.Console.WriteLine("SceneObjectPart Deserialize END");
|
||||||
Rezzed = DateTime.Now;
|
Rezzed = DateTime.Now;
|
||||||
|
|
||||||
|
Inventory = new SceneObjectPartInventory(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Constructors
|
#endregion Constructors
|
||||||
|
@ -332,16 +346,22 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
set { } // Don't allow assignment, or legacy prims wil b0rk
|
set { } // Don't allow assignment, or legacy prims wil b0rk
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <value>
|
||||||
|
/// Access should be via Inventory directly - this property temporarily remains for xml serialization purposes
|
||||||
|
/// </value>
|
||||||
public uint InventorySerial
|
public uint InventorySerial
|
||||||
{
|
{
|
||||||
get { return m_inventorySerial; }
|
get { return Inventory.Serial; }
|
||||||
set { m_inventorySerial = value; }
|
set { Inventory.Serial = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <value>
|
||||||
|
/// Access should be via Inventory directly - this property temporarily remains for xml serialization purposes
|
||||||
|
/// </value>
|
||||||
public TaskInventoryDictionary TaskInventory
|
public TaskInventoryDictionary TaskInventory
|
||||||
{
|
{
|
||||||
get { return m_taskInventory; }
|
get { return Inventory.Items; }
|
||||||
set { m_taskInventory = value; }
|
set { Inventory.Items = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint ObjectFlags
|
public uint ObjectFlags
|
||||||
|
@ -1239,7 +1259,7 @@ if (m_shape != null) {
|
||||||
dupe._category = _category;
|
dupe._category = _category;
|
||||||
dupe.m_rezzed = m_rezzed;
|
dupe.m_rezzed = m_rezzed;
|
||||||
|
|
||||||
dupe.TaskInventory = (TaskInventoryDictionary)dupe.TaskInventory.Clone();
|
dupe.Inventory.Items = (TaskInventoryDictionary)dupe.Inventory.Items.Clone();
|
||||||
|
|
||||||
if (userExposed)
|
if (userExposed)
|
||||||
dupe.ResetIDs(linkNum);
|
dupe.ResetIDs(linkNum);
|
||||||
|
@ -1412,7 +1432,7 @@ if (m_shape != null) {
|
||||||
throw new ArgumentNullException("info");
|
throw new ArgumentNullException("info");
|
||||||
}
|
}
|
||||||
|
|
||||||
info.AddValue("m_inventoryFileName", GetInventoryFileName());
|
info.AddValue("m_inventoryFileName", Inventory.GetInventoryFileName());
|
||||||
info.AddValue("m_folderID", UUID);
|
info.AddValue("m_folderID", UUID);
|
||||||
info.AddValue("PhysActor", PhysActor);
|
info.AddValue("PhysActor", PhysActor);
|
||||||
|
|
||||||
|
@ -1452,7 +1472,7 @@ if (m_shape != null) {
|
||||||
info.AddValue("m_updateFlag", m_updateFlag);
|
info.AddValue("m_updateFlag", m_updateFlag);
|
||||||
info.AddValue("CreatorID", _creatorID.Guid);
|
info.AddValue("CreatorID", _creatorID.Guid);
|
||||||
|
|
||||||
info.AddValue("m_inventorySerial", m_inventorySerial);
|
info.AddValue("m_inventorySerial", Inventory.Serial);
|
||||||
info.AddValue("m_uuid", m_uuid.Guid);
|
info.AddValue("m_uuid", m_uuid.Guid);
|
||||||
info.AddValue("m_localID", m_localId);
|
info.AddValue("m_localID", m_localId);
|
||||||
info.AddValue("m_name", m_name);
|
info.AddValue("m_name", m_name);
|
||||||
|
@ -1929,8 +1949,7 @@ if (m_shape != null) {
|
||||||
UUID = UUID.Random();
|
UUID = UUID.Random();
|
||||||
LinkNum = linkNum;
|
LinkNum = linkNum;
|
||||||
LocalId = 0;
|
LocalId = 0;
|
||||||
|
Inventory.ResetInventoryIDs();
|
||||||
ResetInventoryIDs();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -2993,7 +3012,7 @@ if (m_shape != null) {
|
||||||
if (god)
|
if (god)
|
||||||
{
|
{
|
||||||
_baseMask = ApplyMask(_baseMask, set, mask);
|
_baseMask = ApplyMask(_baseMask, set, mask);
|
||||||
ApplyGodPermissions(_baseMask);
|
Inventory.ApplyGodPermissions(_baseMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -3394,9 +3413,19 @@ if (m_shape != null) {
|
||||||
RotationalVelocity, state, FromAssetID,
|
RotationalVelocity, state, FromAssetID,
|
||||||
OwnerID, (int)AttachmentPoint);
|
OwnerID, (int)AttachmentPoint);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public void AddScriptLPS(int count)
|
||||||
|
{
|
||||||
|
m_parentGroup.AddScriptLPS(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ApplyNextOwnerPermissions()
|
||||||
|
{
|
||||||
|
_baseMask &= _nextOwnerMask;
|
||||||
|
_ownerMask &= _nextOwnerMask;
|
||||||
|
_everyoneMask &= _nextOwnerMask;
|
||||||
|
|
||||||
|
Inventory.ApplyNextOwnerPermissions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -38,13 +38,18 @@ using OpenSim.Region.Environment.Scenes.Scripting;
|
||||||
|
|
||||||
namespace OpenSim.Region.Environment.Scenes
|
namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
public partial class SceneObjectPart : IScriptHost
|
public class SceneObjectPartInventory
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
private string m_inventoryFileName = String.Empty;
|
private string m_inventoryFileName = String.Empty;
|
||||||
private int m_inventoryFileNameSerial = 0;
|
private int m_inventoryFileNameSerial = 0;
|
||||||
|
|
||||||
|
/// <value>
|
||||||
|
/// The part to which the inventory belongs.
|
||||||
|
/// </value>
|
||||||
|
private SceneObjectPart m_part;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Serial count for inventory file , used to tell if inventory has changed
|
/// Serial count for inventory file , used to tell if inventory has changed
|
||||||
/// no need for this to be part of Database backup
|
/// no need for this to be part of Database backup
|
||||||
|
@ -54,13 +59,42 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds in memory prim inventory
|
/// Holds in memory prim inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected TaskInventoryDictionary m_taskInventory = new TaskInventoryDictionary();
|
protected TaskInventoryDictionary m_items = new TaskInventoryDictionary();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tracks whether inventory has changed since the last persistent backup
|
/// Tracks whether inventory has changed since the last persistent backup
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected bool HasInventoryChanged;
|
protected bool HasInventoryChanged;
|
||||||
|
|
||||||
|
/// <value>
|
||||||
|
/// Inventory serial number
|
||||||
|
/// </value>
|
||||||
|
public uint Serial
|
||||||
|
{
|
||||||
|
get { return m_inventorySerial; }
|
||||||
|
set { m_inventorySerial = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <value>
|
||||||
|
/// Raw inventory data
|
||||||
|
/// </value>
|
||||||
|
public TaskInventoryDictionary Items
|
||||||
|
{
|
||||||
|
get { return m_items; }
|
||||||
|
set { m_items = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="part">
|
||||||
|
/// A <see cref="SceneObjectPart"/>
|
||||||
|
/// </param>
|
||||||
|
public SceneObjectPartInventory(SceneObjectPart part)
|
||||||
|
{
|
||||||
|
m_part = part;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Force the task inventory of this prim to persist at the next update sweep
|
/// Force the task inventory of this prim to persist at the next update sweep
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -78,40 +112,40 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="linkNum">Link number for the part</param>
|
/// <param name="linkNum">Link number for the part</param>
|
||||||
public void ResetInventoryIDs()
|
public void ResetInventoryIDs()
|
||||||
{
|
{
|
||||||
lock (TaskInventory)
|
lock (Items)
|
||||||
{
|
{
|
||||||
if (0 == TaskInventory.Count)
|
if (0 == Items.Count)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
ParentGroup.HasGroupChanged = true;
|
m_part.ParentGroup.HasGroupChanged = true;
|
||||||
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(TaskInventory.Values);
|
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values);
|
||||||
TaskInventory.Clear();
|
Items.Clear();
|
||||||
|
|
||||||
foreach (TaskInventoryItem item in items)
|
foreach (TaskInventoryItem item in items)
|
||||||
{
|
{
|
||||||
item.ResetIDs(UUID);
|
item.ResetIDs(m_part.UUID);
|
||||||
TaskInventory.Add(item.ItemID, item);
|
Items.Add(item.ItemID, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Change every item in this prim's inventory to a new owner.
|
/// Change every item in this inventory to a new owner.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ownerId"></param>
|
/// <param name="ownerId"></param>
|
||||||
public void ChangeInventoryOwner(UUID ownerId)
|
public void ChangeInventoryOwner(UUID ownerId)
|
||||||
{
|
{
|
||||||
lock (TaskInventory)
|
lock (Items)
|
||||||
{
|
{
|
||||||
if (0 == TaskInventory.Count)
|
if (0 == Items.Count)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
ParentGroup.HasGroupChanged = true;
|
m_part.ParentGroup.HasGroupChanged = true;
|
||||||
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(TaskInventory.Values);
|
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values);
|
||||||
foreach (TaskInventoryItem item in items)
|
foreach (TaskInventoryItem item in items)
|
||||||
{
|
{
|
||||||
if (ownerId != item.OwnerID)
|
if (ownerId != item.OwnerID)
|
||||||
|
@ -123,18 +157,22 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Change every item in this inventory to a new group.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="groupID"></param>
|
||||||
public void ChangeInventoryGroup(UUID groupID)
|
public void ChangeInventoryGroup(UUID groupID)
|
||||||
{
|
{
|
||||||
lock (TaskInventory)
|
lock (Items)
|
||||||
{
|
{
|
||||||
if (0 == TaskInventory.Count)
|
if (0 == Items.Count)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
ParentGroup.HasGroupChanged = true;
|
m_part.ParentGroup.HasGroupChanged = true;
|
||||||
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(TaskInventory.Values);
|
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values);
|
||||||
foreach (TaskInventoryItem item in items)
|
foreach (TaskInventoryItem item in items)
|
||||||
{
|
{
|
||||||
if (groupID != item.GroupID)
|
if (groupID != item.GroupID)
|
||||||
|
@ -150,9 +188,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void CreateScriptInstances(int startParam, bool postOnRez, string engine, int stateSource)
|
public void CreateScriptInstances(int startParam, bool postOnRez, string engine, int stateSource)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_items)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in Items.Values)
|
||||||
{
|
{
|
||||||
if ((int)InventoryType.LSL == item.InvType)
|
if ((int)InventoryType.LSL == item.InvType)
|
||||||
{
|
{
|
||||||
|
@ -167,14 +205,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void RemoveScriptInstances()
|
public void RemoveScriptInstances()
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (Items)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in Items.Values)
|
||||||
{
|
{
|
||||||
if ((int)InventoryType.LSL == item.InvType)
|
if ((int)InventoryType.LSL == item.InvType)
|
||||||
{
|
{
|
||||||
RemoveScriptInstance(item.ItemID);
|
RemoveScriptInstance(item.ItemID);
|
||||||
RemoveScriptEvents(item.ItemID);
|
m_part.RemoveScriptEvents(item.ItemID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -192,14 +230,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
// "Starting script {0}, {1} in prim {2}, {3}",
|
// "Starting script {0}, {1} in prim {2}, {3}",
|
||||||
// item.Name, item.ItemID, Name, UUID);
|
// item.Name, item.ItemID, Name, UUID);
|
||||||
|
|
||||||
if (!m_parentGroup.Scene.ExternalChecks.ExternalChecksCanRunScript(item.ItemID, UUID, item.OwnerID))
|
if (!m_part.ParentGroup.Scene.ExternalChecks.ExternalChecksCanRunScript(item.ItemID, m_part.UUID, item.OwnerID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
AddFlag(PrimFlags.Scripted);
|
m_part.AddFlag(PrimFlags.Scripted);
|
||||||
|
|
||||||
if (!m_parentGroup.Scene.RegionInfo.RegionSettings.DisableScripts)
|
if (!m_part.ParentGroup.Scene.RegionInfo.RegionSettings.DisableScripts)
|
||||||
{
|
{
|
||||||
AssetCache cache = m_parentGroup.Scene.AssetCache;
|
AssetCache cache = m_part.ParentGroup.Scene.AssetCache;
|
||||||
|
|
||||||
cache.GetAsset(item.AssetID, delegate(UUID assetID, AssetBase asset)
|
cache.GetAsset(item.AssetID, delegate(UUID assetID, AssetBase asset)
|
||||||
{
|
{
|
||||||
|
@ -212,13 +250,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_taskInventory[item.ItemID].PermsMask = 0;
|
m_items[item.ItemID].PermsMask = 0;
|
||||||
m_taskInventory[item.ItemID].PermsGranter = UUID.Zero;
|
m_items[item.ItemID].PermsGranter = UUID.Zero;
|
||||||
string script = Utils.BytesToString(asset.Data);
|
string script = Utils.BytesToString(asset.Data);
|
||||||
m_parentGroup.Scene.EventManager.TriggerRezScript(LocalId, item.ItemID, script,
|
m_part.ParentGroup.Scene.EventManager.TriggerRezScript(
|
||||||
startParam, postOnRez, engine, stateSource);
|
m_part.LocalId, item.ItemID, script, startParam, postOnRez, engine, stateSource);
|
||||||
m_parentGroup.AddActiveScriptCount(1);
|
m_part.ParentGroup.AddActiveScriptCount(1);
|
||||||
ScheduleFullUpdate();
|
m_part.ScheduleFullUpdate();
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
@ -232,18 +270,18 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// </param>
|
/// </param>
|
||||||
public void CreateScriptInstance(UUID itemId, int startParam, bool postOnRez, string engine, int stateSource)
|
public void CreateScriptInstance(UUID itemId, int startParam, bool postOnRez, string engine, int stateSource)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_items)
|
||||||
{
|
{
|
||||||
if (m_taskInventory.ContainsKey(itemId))
|
if (m_items.ContainsKey(itemId))
|
||||||
{
|
{
|
||||||
CreateScriptInstance(m_taskInventory[itemId], startParam, postOnRez, engine, stateSource);
|
CreateScriptInstance(m_items[itemId], startParam, postOnRez, engine, stateSource);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[PRIM INVENTORY]: " +
|
"[PRIM INVENTORY]: " +
|
||||||
"Couldn't start script with ID {0} since it couldn't be found for prim {1}, {2}",
|
"Couldn't start script with ID {0} since it couldn't be found for prim {1}, {2}",
|
||||||
itemId, Name, UUID);
|
itemId, m_part.Name, m_part.UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -254,17 +292,17 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="itemId"></param>
|
/// <param name="itemId"></param>
|
||||||
public void RemoveScriptInstance(UUID itemId)
|
public void RemoveScriptInstance(UUID itemId)
|
||||||
{
|
{
|
||||||
if (m_taskInventory.ContainsKey(itemId))
|
if (m_items.ContainsKey(itemId))
|
||||||
{
|
{
|
||||||
m_parentGroup.Scene.EventManager.TriggerRemoveScript(LocalId, itemId);
|
m_part.ParentGroup.Scene.EventManager.TriggerRemoveScript(m_part.LocalId, itemId);
|
||||||
m_parentGroup.AddActiveScriptCount(-1);
|
m_part.ParentGroup.AddActiveScriptCount(-1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[PRIM INVENTORY]: " +
|
"[PRIM INVENTORY]: " +
|
||||||
"Couldn't stop script with ID {0} since it couldn't be found for prim {1}, {2}",
|
"Couldn't stop script with ID {0} since it couldn't be found for prim {1}, {2}",
|
||||||
itemId, Name, UUID);
|
itemId, m_part.Name, m_part.UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,7 +314,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private bool InventoryContainsName(string name)
|
private bool InventoryContainsName(string name)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in Items.Values)
|
||||||
{
|
{
|
||||||
if (item.Name == name)
|
if (item.Name == name)
|
||||||
return true;
|
return true;
|
||||||
|
@ -322,7 +360,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="item"></param>
|
/// <param name="item"></param>
|
||||||
public void AddInventoryItemExclusive(TaskInventoryItem item, bool allowedDrop)
|
public void AddInventoryItemExclusive(TaskInventoryItem item, bool allowedDrop)
|
||||||
{
|
{
|
||||||
List<TaskInventoryItem> il = new List<TaskInventoryItem>(m_taskInventory.Values);
|
List<TaskInventoryItem> il = new List<TaskInventoryItem>(m_items.Values);
|
||||||
foreach (TaskInventoryItem i in il)
|
foreach (TaskInventoryItem i in il)
|
||||||
{
|
{
|
||||||
if (i.Name == item.Name)
|
if (i.Name == item.Name)
|
||||||
|
@ -355,24 +393,24 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
if (name == String.Empty)
|
if (name == String.Empty)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
item.ParentID = UUID;
|
item.ParentID = m_part.UUID;
|
||||||
item.ParentPartID = UUID;
|
item.ParentPartID = m_part.UUID;
|
||||||
item.Name = name;
|
item.Name = name;
|
||||||
|
|
||||||
lock (m_taskInventory)
|
lock (m_items)
|
||||||
{
|
{
|
||||||
m_taskInventory.Add(item.ItemID, item);
|
m_items.Add(item.ItemID, item);
|
||||||
|
|
||||||
if (allowedDrop)
|
if (allowedDrop)
|
||||||
TriggerScriptChangedEvent(Changed.ALLOWED_DROP);
|
m_part.TriggerScriptChangedEvent(Changed.ALLOWED_DROP);
|
||||||
else
|
else
|
||||||
TriggerScriptChangedEvent(Changed.INVENTORY);
|
m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
//m_inventorySerial += 2;
|
//m_inventorySerial += 2;
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
ParentGroup.HasGroupChanged = true;
|
m_part.ParentGroup.HasGroupChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -384,12 +422,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="items"></param>
|
/// <param name="items"></param>
|
||||||
public void RestoreInventoryItems(ICollection<TaskInventoryItem> items)
|
public void RestoreInventoryItems(ICollection<TaskInventoryItem> items)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_items)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in items)
|
foreach (TaskInventoryItem item in items)
|
||||||
{
|
{
|
||||||
m_taskInventory.Add(item.ItemID, item);
|
m_items.Add(item.ItemID, item);
|
||||||
TriggerScriptChangedEvent(Changed.INVENTORY);
|
m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -404,7 +442,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public TaskInventoryItem GetInventoryItem(UUID itemId)
|
public TaskInventoryItem GetInventoryItem(UUID itemId)
|
||||||
{
|
{
|
||||||
TaskInventoryItem item;
|
TaskInventoryItem item;
|
||||||
m_taskInventory.TryGetValue(itemId, out item);
|
m_items.TryGetValue(itemId, out item);
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
@ -417,22 +455,20 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <returns>false if the item did not exist, true if the update occurred successfully</returns>
|
/// <returns>false if the item did not exist, true if the update occurred successfully</returns>
|
||||||
public bool UpdateInventoryItem(TaskInventoryItem item)
|
public bool UpdateInventoryItem(TaskInventoryItem item)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_items)
|
||||||
{
|
{
|
||||||
if (m_taskInventory.ContainsKey(item.ItemID))
|
if (m_items.ContainsKey(item.ItemID))
|
||||||
{
|
{
|
||||||
item.ParentID = UUID;
|
item.ParentID = m_part.UUID;
|
||||||
item.ParentPartID = UUID;
|
item.ParentPartID = m_part.UUID;
|
||||||
item.Flags=m_taskInventory[item.ItemID].Flags;
|
item.Flags = m_items[item.ItemID].Flags;
|
||||||
if (item.AssetID == UUID.Zero)
|
if (item.AssetID == UUID.Zero)
|
||||||
{
|
{
|
||||||
item.AssetID = m_taskInventory[item.ItemID].AssetID;
|
item.AssetID = m_items[item.ItemID].AssetID;
|
||||||
}
|
}
|
||||||
else if ((InventoryType)item.Type == InventoryType.Notecard)
|
else if ((InventoryType)item.Type == InventoryType.Notecard)
|
||||||
{
|
{
|
||||||
ScenePresence presence =
|
ScenePresence presence = m_part.ParentGroup.Scene.GetScenePresence(item.OwnerID);
|
||||||
m_parentGroup.Scene.GetScenePresence(
|
|
||||||
item.OwnerID);
|
|
||||||
|
|
||||||
if (presence != null)
|
if (presence != null)
|
||||||
{
|
{
|
||||||
|
@ -441,12 +477,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_taskInventory[item.ItemID] = item;
|
m_items[item.ItemID] = item;
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
TriggerScriptChangedEvent(Changed.INVENTORY);
|
m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
|
||||||
|
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
ParentGroup.HasGroupChanged = true;
|
m_part.ParentGroup.HasGroupChanged = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -455,18 +491,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[PRIM INVENTORY]: " +
|
"[PRIM INVENTORY]: " +
|
||||||
"Tried to retrieve item ID {0} from prim {1}, {2} but the item does not exist in this inventory",
|
"Tried to retrieve item ID {0} from prim {1}, {2} but the item does not exist in this inventory",
|
||||||
item.ItemID, Name, UUID);
|
item.ItemID, m_part.Name, m_part.UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddScriptLPS(int count)
|
|
||||||
{
|
|
||||||
m_parentGroup.AddScriptLPS(count);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Remove an item from this prim's inventory
|
/// Remove an item from this prim's inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -475,37 +506,36 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// in this prim's inventory.</returns>
|
/// in this prim's inventory.</returns>
|
||||||
public int RemoveInventoryItem(UUID itemID)
|
public int RemoveInventoryItem(UUID itemID)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_items)
|
||||||
{
|
{
|
||||||
if (m_taskInventory.ContainsKey(itemID))
|
if (m_items.ContainsKey(itemID))
|
||||||
{
|
{
|
||||||
int type = m_taskInventory[itemID].InvType;
|
int type = m_items[itemID].InvType;
|
||||||
m_taskInventory.Remove(itemID);
|
m_items.Remove(itemID);
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
TriggerScriptChangedEvent(Changed.INVENTORY);
|
m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
|
||||||
|
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
ParentGroup.HasGroupChanged = true;
|
m_part.ParentGroup.HasGroupChanged = true;
|
||||||
|
|
||||||
int scriptcount = 0;
|
int scriptcount = 0;
|
||||||
lock (m_taskInventory)
|
lock (m_items)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
{
|
{
|
||||||
if (item.Type == 10)
|
if (item.Type == 10)
|
||||||
{
|
{
|
||||||
scriptcount++;
|
scriptcount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scriptcount <= 0)
|
if (scriptcount <= 0)
|
||||||
{
|
{
|
||||||
RemFlag(PrimFlags.Scripted);
|
m_part.RemFlag(PrimFlags.Scripted);
|
||||||
}
|
}
|
||||||
|
|
||||||
ScheduleFullUpdate();
|
m_part.ScheduleFullUpdate();
|
||||||
|
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
@ -514,7 +544,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[PRIM INVENTORY]: " +
|
"[PRIM INVENTORY]: " +
|
||||||
"Tried to remove item ID {0} from prim {1}, {2} but the item does not exist in this inventory",
|
"Tried to remove item ID {0} from prim {1}, {2} but the item does not exist in this inventory",
|
||||||
itemID, Name, UUID);
|
itemID, m_part.Name, m_part.UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -545,13 +575,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
if (m_inventorySerial > 0)
|
if (m_inventorySerial > 0)
|
||||||
{
|
{
|
||||||
client.SendTaskInventory(m_uuid, (short)m_inventorySerial,
|
client.SendTaskInventory(m_part.UUID, (short)m_inventorySerial,
|
||||||
Utils.StringToBytes(GetInventoryFileName()));
|
Utils.StringToBytes(GetInventoryFileName()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
client.SendTaskInventory(m_uuid, 0, new byte[0]);
|
client.SendTaskInventory(m_part.UUID, 0, new byte[0]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -567,11 +597,11 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
// Confusingly, the folder item has to be the object id, while the 'parent id' has to be zero. This matches
|
// Confusingly, the folder item has to be the object id, while the 'parent id' has to be zero. This matches
|
||||||
// what appears to happen in the Second Life protocol. If this isn't the case. then various functionality
|
// what appears to happen in the Second Life protocol. If this isn't the case. then various functionality
|
||||||
// isn't available (such as drag from prim inventory to agent inventory)
|
// isn't available (such as drag from prim inventory to agent inventory)
|
||||||
InventoryStringBuilder invString = new InventoryStringBuilder(UUID, UUID.Zero);
|
InventoryStringBuilder invString = new InventoryStringBuilder(m_part.UUID, UUID.Zero);
|
||||||
|
|
||||||
lock (m_taskInventory)
|
lock (m_items)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
{
|
{
|
||||||
UUID ownerID = item.OwnerID;
|
UUID ownerID = item.OwnerID;
|
||||||
uint everyoneMask = 0;
|
uint everyoneMask = 0;
|
||||||
|
@ -580,7 +610,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
invString.AddItemStart();
|
invString.AddItemStart();
|
||||||
invString.AddNameValueLine("item_id", item.ItemID.ToString());
|
invString.AddNameValueLine("item_id", item.ItemID.ToString());
|
||||||
invString.AddNameValueLine("parent_id", UUID.ToString());
|
invString.AddNameValueLine("parent_id", m_part.UUID.ToString());
|
||||||
|
|
||||||
invString.AddPermissionsStart();
|
invString.AddPermissionsStart();
|
||||||
|
|
||||||
|
@ -635,9 +665,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
if (HasInventoryChanged)
|
if (HasInventoryChanged)
|
||||||
{
|
{
|
||||||
lock (TaskInventory)
|
lock (Items)
|
||||||
{
|
{
|
||||||
datastore.StorePrimInventory(UUID, TaskInventory.Values);
|
datastore.StorePrimInventory(m_part.UUID, Items.Values);
|
||||||
}
|
}
|
||||||
|
|
||||||
HasInventoryChanged = false;
|
HasInventoryChanged = false;
|
||||||
|
@ -707,7 +737,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
uint mask=0x7fffffff;
|
uint mask=0x7fffffff;
|
||||||
|
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
{
|
{
|
||||||
if (item.InvType != 6)
|
if (item.InvType != 6)
|
||||||
{
|
{
|
||||||
|
@ -740,11 +770,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public void ApplyNextOwnerPermissions()
|
public void ApplyNextOwnerPermissions()
|
||||||
{
|
{
|
||||||
_baseMask &= _nextOwnerMask;
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
_ownerMask &= _nextOwnerMask;
|
|
||||||
_everyoneMask &= _nextOwnerMask;
|
|
||||||
|
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
|
||||||
{
|
{
|
||||||
if (item.InvType == 6 && (item.CurrentPermissions & 7) != 0)
|
if (item.InvType == 6 && (item.CurrentPermissions & 7) != 0)
|
||||||
{
|
{
|
||||||
|
@ -760,12 +786,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
item.EveryonePermissions &= item.NextPermissions;
|
item.EveryonePermissions &= item.NextPermissions;
|
||||||
}
|
}
|
||||||
|
|
||||||
TriggerScriptChangedEvent(Changed.OWNER);
|
m_part.TriggerScriptChangedEvent(Changed.OWNER);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ApplyGodPermissions(uint perms)
|
public void ApplyGodPermissions(uint perms)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
{
|
{
|
||||||
item.CurrentPermissions = perms;
|
item.CurrentPermissions = perms;
|
||||||
item.BasePermissions = perms;
|
item.BasePermissions = perms;
|
||||||
|
@ -774,7 +800,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public bool ContainsScripts()
|
public bool ContainsScripts()
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
{
|
{
|
||||||
if (item.InvType == 10)
|
if (item.InvType == 10)
|
||||||
{
|
{
|
||||||
|
@ -788,7 +814,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
List<UUID> ret = new List<UUID>();
|
List<UUID> ret = new List<UUID>();
|
||||||
|
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
ret.Add(item.ItemID);
|
ret.Add(item.ItemID);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -796,11 +822,11 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public string[] GetScriptAssemblies()
|
public string[] GetScriptAssemblies()
|
||||||
{
|
{
|
||||||
IScriptModule[] engines = m_parentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
|
IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
|
||||||
|
|
||||||
List<string> ret = new List<string>();
|
List<string> ret = new List<string>();
|
||||||
|
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
{
|
{
|
||||||
if (item.InvType == 10)
|
if (item.InvType == 10)
|
||||||
{
|
{
|
||||||
|
@ -821,10 +847,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public Dictionary<UUID, string> GetScriptStates()
|
public Dictionary<UUID, string> GetScriptStates()
|
||||||
{
|
{
|
||||||
IScriptModule[] engines = m_parentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
|
IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
|
||||||
Dictionary<UUID, string> ret = new Dictionary<UUID, string>();
|
Dictionary<UUID, string> ret = new Dictionary<UUID, string>();
|
||||||
|
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_items.Values)
|
||||||
{
|
{
|
||||||
if (item.InvType == 10)
|
if (item.InvType == 10)
|
||||||
{
|
{
|
|
@ -2558,7 +2558,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
if (gobj != null)
|
if (gobj != null)
|
||||||
{
|
{
|
||||||
if (gobj.RootPart.ContainsScripts())
|
if (gobj.RootPart.Inventory.ContainsScripts())
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -268,7 +268,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
|
||||||
localID);
|
localID);
|
||||||
|
|
||||||
TaskInventoryItem item =
|
TaskInventoryItem item =
|
||||||
part.GetInventoryItem(itemID);
|
part.Inventory.GetInventoryItem(itemID);
|
||||||
|
|
||||||
ScenePresence presence =
|
ScenePresence presence =
|
||||||
myScriptEngine.World.GetScenePresence(
|
myScriptEngine.World.GetScenePresence(
|
||||||
|
|
|
@ -570,15 +570,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public void ResetScript(uint localID, UUID itemID)
|
public void ResetScript(uint localID, UUID itemID)
|
||||||
{
|
{
|
||||||
InstanceData id = GetScript(localID, itemID);
|
InstanceData id = GetScript(localID, itemID);
|
||||||
string script = id.Source;
|
string script = id.Source;
|
||||||
StopScript(localID, itemID);
|
StopScript(localID, itemID);
|
||||||
SceneObjectPart part = World.GetSceneObjectPart(localID);
|
SceneObjectPart part = World.GetSceneObjectPart(localID);
|
||||||
part.GetInventoryItem(itemID).PermsMask = 0;
|
part.Inventory.GetInventoryItem(itemID).PermsMask = 0;
|
||||||
part.GetInventoryItem(itemID).PermsGranter = UUID.Zero;
|
part.Inventory.GetInventoryItem(itemID).PermsGranter = UUID.Zero;
|
||||||
StartScript(localID, itemID, script, id.StartParam, false);
|
StartScript(localID, itemID, script, id.StartParam, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3320,7 +3320,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
if (item.Name == name)
|
if (item.Name == name)
|
||||||
{
|
{
|
||||||
m_host.RemoveInventoryItem(item.ItemID);
|
m_host.Inventory.RemoveInventoryItem(item.ItemID);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1032,7 +1032,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
taskItem.PermsMask = 0;
|
taskItem.PermsMask = 0;
|
||||||
taskItem.AssetID = asset.FullID;
|
taskItem.AssetID = asset.FullID;
|
||||||
|
|
||||||
m_host.AddInventoryItem(taskItem, false);
|
m_host.Inventory.AddInventoryItem(taskItem, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -302,7 +302,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||||
if (part.AttachmentPoint != 0) // Attached so ignore
|
if (part.AttachmentPoint != 0) // Attached so ignore
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (part.ContainsScripts())
|
if (part.Inventory.ContainsScripts())
|
||||||
{
|
{
|
||||||
objtype |= ACTIVE | SCRIPTED; // Scripted and active. It COULD have one hidden ...
|
objtype |= ACTIVE | SCRIPTED; // Scripted and active. It COULD have one hidden ...
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,7 +141,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
|
|
||||||
foreach (SceneObjectPart p in part.ParentGroup.Children.Values)
|
foreach (SceneObjectPart p in part.ParentGroup.Children.Values)
|
||||||
{
|
{
|
||||||
if (p.ContainsScripts())
|
if (p.Inventory.ContainsScripts())
|
||||||
{
|
{
|
||||||
Type |= 0x08; // Scripted
|
Type |= 0x08; // Scripted
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -696,8 +696,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
|
|
||||||
Stop(0);
|
Stop(0);
|
||||||
SceneObjectPart part=m_Engine.World.GetSceneObjectPart(m_LocalID);
|
SceneObjectPart part=m_Engine.World.GetSceneObjectPart(m_LocalID);
|
||||||
part.GetInventoryItem(m_ItemID).PermsMask = 0;
|
part.Inventory.GetInventoryItem(m_ItemID).PermsMask = 0;
|
||||||
part.GetInventoryItem(m_ItemID).PermsGranter = UUID.Zero;
|
part.Inventory.GetInventoryItem(m_ItemID).PermsGranter = UUID.Zero;
|
||||||
AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID);
|
AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID);
|
||||||
m_EventQueue.Clear();
|
m_EventQueue.Clear();
|
||||||
m_Script.ResetVars();
|
m_Script.ResetVars();
|
||||||
|
@ -721,8 +721,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
|
|
||||||
m_Script.ResetVars();
|
m_Script.ResetVars();
|
||||||
SceneObjectPart part=m_Engine.World.GetSceneObjectPart(m_LocalID);
|
SceneObjectPart part=m_Engine.World.GetSceneObjectPart(m_LocalID);
|
||||||
part.GetInventoryItem(m_ItemID).PermsMask = 0;
|
part.Inventory.GetInventoryItem(m_ItemID).PermsMask = 0;
|
||||||
part.GetInventoryItem(m_ItemID).PermsGranter = UUID.Zero;
|
part.Inventory.GetInventoryItem(m_ItemID).PermsGranter = UUID.Zero;
|
||||||
AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID);
|
AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID);
|
||||||
|
|
||||||
m_EventQueue.Clear();
|
m_EventQueue.Clear();
|
||||||
|
|
|
@ -366,7 +366,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
localID);
|
localID);
|
||||||
|
|
||||||
TaskInventoryItem item =
|
TaskInventoryItem item =
|
||||||
part.GetInventoryItem(itemID);
|
part.Inventory.GetInventoryItem(itemID);
|
||||||
|
|
||||||
ScenePresence presence =
|
ScenePresence presence =
|
||||||
m_Scene.GetScenePresence(
|
m_Scene.GetScenePresence(
|
||||||
|
@ -464,7 +464,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskInventoryItem item = part.GetInventoryItem(itemID);
|
TaskInventoryItem item = part.Inventory.GetInventoryItem(itemID);
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue