From 0c03a48fb2060eda4d288e2d2ca4e650ce000b4b Mon Sep 17 00:00:00 2001 From: Mike Mazur Date: Wed, 4 Feb 2009 00:01:36 +0000 Subject: - add OpenSim.Framework.AssetMetadata class. AssetBase is now composed of it - trim trailing whitespace --- .../Region/Environment/Scenes/Scene.Inventory.cs | 184 ++++++++++----------- 1 file changed, 92 insertions(+), 92 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes/Scene.Inventory.cs') diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 58ab058..cb9aee2 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -42,12 +42,12 @@ namespace OpenSim.Region.Environment.Scenes public partial class Scene { private static readonly ILog m_log - = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + /// /// Allows asynchronous derezzing of objects from the scene into a client's inventory. /// - protected AsyncSceneObjectGroupDeleter m_asyncSceneObjectDeleter; + protected AsyncSceneObjectGroupDeleter m_asyncSceneObjectDeleter; /// /// Start all the scripts in the scene which should be started. @@ -145,9 +145,9 @@ namespace OpenSim.Region.Environment.Scenes else { m_log.ErrorFormat( - "[AGENT INVENTORY]: Could not resolve user {0} for adding an inventory item", + "[AGENT INVENTORY]: Could not resolve user {0} for adding an inventory item", remoteClient.AgentId); - } + } } /// @@ -175,7 +175,7 @@ namespace OpenSim.Region.Environment.Scenes remoteClient.SendAgentAlertMessage("Insufficient permissions to edit notecard", false); return UUID.Zero; } - + remoteClient.SendAgentAlertMessage("Notecard saved", false); } else if ((InventoryType)item.InvType == InventoryType.LSL) @@ -185,7 +185,7 @@ namespace OpenSim.Region.Environment.Scenes remoteClient.SendAgentAlertMessage("Insufficient permissions to edit script", false); return UUID.Zero; } - + remoteClient.SendAgentAlertMessage("Script saved", false); } @@ -193,21 +193,21 @@ namespace OpenSim.Region.Environment.Scenes CreateAsset(item.Name, item.Description, (sbyte)item.AssetType, data); AssetCache.AddAsset(asset); - item.AssetID = asset.FullID; + item.AssetID = asset.Metadata.FullID; userInfo.UpdateItem(item); // remoteClient.SendInventoryItemCreateUpdate(item); - return (asset.FullID); + return (asset.Metadata.FullID); } } } else { m_log.ErrorFormat( - "[AGENT INVENTORY]: Could not resolve user {0} for caps inventory update", + "[AGENT INVENTORY]: Could not resolve user {0} for caps inventory update", remoteClient.AgentId); - } - + } + return UUID.Zero; } @@ -283,9 +283,9 @@ namespace OpenSim.Region.Environment.Scenes { part.Inventory.RemoveScriptInstance(item.ItemID); } - + // Update item with new asset - item.AssetID = asset.FullID; + item.AssetID = asset.Metadata.FullID; group.UpdateInventoryItem(item); part.GetProperties(remoteClient); @@ -406,7 +406,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// ID of the sender of the item - /// + /// public virtual void GiveInventoryItem(IClientAPI recipientClient, UUID senderId, UUID itemId) { InventoryItemBase itemCopy = GiveInventoryItem(recipientClient.AgentId, senderId, itemId); @@ -420,19 +420,19 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// ID of the sender of the item - /// + /// /// The inventory item copy given, null if the give was unsuccessful public virtual InventoryItemBase GiveInventoryItem(UUID recipient, UUID senderId, UUID itemId) { return GiveInventoryItem(recipient, senderId, itemId, UUID.Zero); } - + /// /// Give an inventory item from one user to another /// /// /// ID of the sender of the item - /// + /// /// /// The id of the folder in which the copy item should go. If UUID.Zero then the item is placed in the most /// appropriate default folder. @@ -485,7 +485,7 @@ namespace OpenSim.Region.Environment.Scenes itemCopy.AssetType = item.AssetType; itemCopy.InvType = item.InvType; itemCopy.Folder = recipientFolderId; - + if (Permissions.PropagatePermissions()) { if (item.InvType == 6) @@ -557,19 +557,19 @@ namespace OpenSim.Region.Environment.Scenes m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemId.ToString() + ", no root folder"); return null; } - + return null; } - + /// - /// Give an entire inventory folder from one user to another. The entire contents (including all descendent + /// Give an entire inventory folder from one user to another. The entire contents (including all descendent /// folders) is given. /// /// /// ID of the sender of the item /// /// - /// The id of the receipient folder in which the send folder should be placed. If UUID.Zero then the + /// The id of the receipient folder in which the send folder should be placed. If UUID.Zero then the /// recipient folder is the root folder /// /// @@ -588,24 +588,24 @@ namespace OpenSim.Region.Environment.Scenes return null; } - + if (!senderUserInfo.HasReceivedInventory) { m_log.DebugFormat( "[AGENT INVENTORY]: Could not give inventory folder - have not yet received inventory for {0}", senderId); - + return null; } - + InventoryFolderImpl folder = senderUserInfo.RootFolder.FindFolder(folderId); - + if (null == folder) { m_log.ErrorFormat( "[AGENT INVENTORY]: Could not find inventory folder {0} to give", folderId); - return null; + return null; } CachedUserInfo recipientUserInfo @@ -618,30 +618,30 @@ namespace OpenSim.Region.Environment.Scenes return null; } - + if (recipientParentFolderId == UUID.Zero) recipientParentFolderId = recipientUserInfo.RootFolder.ID; - + UUID newFolderId = UUID.Random(); recipientUserInfo.CreateFolder(folder.Name, newFolderId, (ushort)folder.Type, recipientParentFolderId); - + // XXX: Messy - we should really get this back in the CreateFolder call InventoryFolderImpl copiedFolder = recipientUserInfo.RootFolder.FindFolder(newFolderId); - + // Give all the subfolders List subFolders = folder.RequestListOfFolderImpls(); foreach (InventoryFolderImpl childFolder in subFolders) { GiveInventoryFolder(recipientId, senderId, childFolder.ID, copiedFolder.ID); - } - + } + // Give all the items List items = folder.RequestListOfItems(); foreach (InventoryItemBase item in items) { GiveInventoryItem(recipientId, senderId, item.ID, copiedFolder.ID); } - + return copiedFolder; } @@ -688,7 +688,7 @@ namespace OpenSim.Region.Environment.Scenes { if (newName != String.Empty) { - asset.Name = newName; + asset.Metadata.Name = newName; } else { @@ -728,10 +728,10 @@ namespace OpenSim.Region.Environment.Scenes private AssetBase CreateAsset(string name, string description, sbyte assetType, byte[] data) { AssetBase asset = new AssetBase(); - asset.Name = name; - asset.Description = description; - asset.Type = assetType; - asset.FullID = UUID.Random(); + asset.Metadata.Name = name; + asset.Metadata.Description = description; + asset.Metadata.Type = assetType; + asset.Metadata.FullID = UUID.Random(); asset.Data = (data == null) ? new byte[1] : data; return asset; @@ -831,11 +831,11 @@ namespace OpenSim.Region.Environment.Scenes item.Owner = remoteClient.AgentId; item.Creator = remoteClient.AgentId; item.ID = UUID.Random(); - item.AssetID = asset.FullID; - item.Description = asset.Description; + item.AssetID = asset.Metadata.FullID; + item.Description = asset.Metadata.Description; item.Name = name; item.Flags = flags; - item.AssetType = asset.Type; + item.AssetType = asset.Metadata.Type; item.InvType = invType; item.Folder = folderID; item.CurrentPermissions = currentMask; @@ -879,7 +879,7 @@ namespace OpenSim.Region.Environment.Scenes if (!Permissions.CanCreateUserInventory(invType, remoteClient.AgentId)) return; - + if (transactionID == UUID.Zero) { CachedUserInfo userInfo @@ -890,7 +890,7 @@ namespace OpenSim.Region.Environment.Scenes ScenePresence presence; TryGetAvatar(remoteClient.AgentId, out presence); byte[] data = null; - + if (invType == 3 && presence != null) // OpenMetaverse.asset.assettype.landmark = 3 - needs to be turned into an enum { Vector3 pos = presence.AbsolutePosition; @@ -905,7 +905,7 @@ namespace OpenSim.Region.Environment.Scenes AssetBase asset = CreateAsset(name, description, assetType, data); AssetCache.AddAsset(asset); - CreateNewInventoryItem(remoteClient, folderID, asset.Name, 0, callbackID, asset, invType, nextOwnerMask, creationDate); + CreateNewInventoryItem(remoteClient, folderID, asset.Metadata.Name, 0, callbackID, asset, invType, nextOwnerMask, creationDate); } else { @@ -1429,7 +1429,7 @@ namespace OpenSim.Region.Environment.Scenes } } else // Updating existing item with new perms etc - { + { IAgentAssetTransactions agentTransactions = this.RequestModuleInterface(); if (agentTransactions != null) { @@ -1511,7 +1511,7 @@ namespace OpenSim.Region.Environment.Scenes } } else // script has been rezzed directly into a prim's inventory - { + { SceneObjectPart part = GetSceneObjectPart(itemBase.Folder); if (part == null) return; @@ -1521,10 +1521,10 @@ namespace OpenSim.Region.Environment.Scenes if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) return; - + if (!Permissions.CanCreateObjectInventory( - itemBase.InvType, part.UUID, remoteClient.AgentId)) - return; + itemBase.InvType, part.UUID, remoteClient.AgentId)) + return; AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType, Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}")); AssetCache.AddAsset(asset); @@ -1550,7 +1550,7 @@ namespace OpenSim.Region.Environment.Scenes taskItem.Flags = itemBase.Flags; taskItem.PermsGranter = UUID.Zero; taskItem.PermsMask = 0; - taskItem.AssetID = asset.FullID; + taskItem.AssetID = asset.Metadata.FullID; part.Inventory.AddInventoryItem(taskItem, false); part.GetProperties(remoteClient); @@ -1737,7 +1737,7 @@ namespace OpenSim.Region.Environment.Scenes grp.UUID, remoteClient.AgentId); permissionToDelete = permissionToTake; - + if (permissionToDelete) { AddReturn(grp.OwnerID, grp.Name, grp.AbsolutePosition, "parcel owner return"); @@ -1794,8 +1794,8 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - /// - /// + /// + /// public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, SceneObjectGroup objectGroup, IClientAPI remoteClient) { @@ -1807,7 +1807,7 @@ namespace OpenSim.Region.Environment.Scenes // CachedUserInfo userInfo; - if (action == DeRezAction.Take || action == DeRezAction.TakeCopy || + if (action == DeRezAction.Take || action == DeRezAction.TakeCopy || action == DeRezAction.SaveToExistingUserInventoryItem) { // Take or take copy require a taker @@ -1850,25 +1850,25 @@ namespace OpenSim.Region.Environment.Scenes // InventoryFolderBase folder = null; - InventoryItemBase item = null; + InventoryItemBase item = null; if (DeRezAction.SaveToExistingUserInventoryItem == action) { item = userInfo.RootFolder.FindItem( objectGroup.RootPart.FromUserInventoryItemID); - + if (null == item) { m_log.DebugFormat( - "[AGENT INVENTORY]: Object {0} {1} scheduled for save to inventory has already been deleted.", - objectGroup.Name, objectGroup.UUID); + "[AGENT INVENTORY]: Object {0} {1} scheduled for save to inventory has already been deleted.", + objectGroup.Name, objectGroup.UUID); return UUID.Zero; } } else { // Folder magic - // + // if (action == DeRezAction.Delete) { // Deleting someone else's item @@ -1940,7 +1940,7 @@ namespace OpenSim.Region.Environment.Scenes item.InvType = (int)InventoryType.Object; item.Folder = folder.ID; item.Owner = userInfo.UserProfile.ID; - + } AssetBase asset = CreateAsset( @@ -1949,16 +1949,16 @@ namespace OpenSim.Region.Environment.Scenes (sbyte)AssetType.Object, Utils.StringToBytes(sceneObjectXml)); AssetCache.AddAsset(asset); - assetID = asset.FullID; - + assetID = asset.Metadata.FullID; + if (DeRezAction.SaveToExistingUserInventoryItem == action) - { - item.AssetID = asset.FullID; + { + item.AssetID = asset.Metadata.FullID; userInfo.UpdateItem(item); } else { - item.AssetID = asset.FullID; + item.AssetID = asset.Metadata.FullID; if (remoteClient != null && (remoteClient.AgentId != objectGroup.RootPart.OwnerID) && Permissions.PropagatePermissions()) { @@ -1991,12 +1991,12 @@ namespace OpenSim.Region.Environment.Scenes // TODO: add the new fields (Flags, Sale info, etc) item.CreationDate = Util.UnixTimeSinceEpoch(); - item.Description = asset.Description; - item.Name = asset.Name; - item.AssetType = asset.Type; + item.Description = asset.Metadata.Description; + item.Name = asset.Metadata.Name; + item.AssetType = asset.Metadata.Type; userInfo.AddItem(item); - + if (remoteClient != null && item.Owner == remoteClient.AgentId) { remoteClient.SendInventoryItemCreateUpdate(item); @@ -2008,10 +2008,10 @@ namespace OpenSim.Region.Environment.Scenes { notifyUser.ControllingClient.SendInventoryItemCreateUpdate(item); } - } + } } } - + return assetID; } @@ -2025,11 +2025,11 @@ namespace OpenSim.Region.Environment.Scenes m_log.InfoFormat("[ATTACHMENT]: Save request for {0} which is unchanged", grp.UUID); return; } - + m_log.InfoFormat( - "[ATTACHMENT]: Updating asset for attachment {0}, attachpoint {1}", + "[ATTACHMENT]: Updating asset for attachment {0}, attachpoint {1}", grp.UUID, grp.GetAttachmentPoint()); - + string sceneObjectXml = objectGroup.ToXmlString(); CachedUserInfo userInfo = @@ -2077,10 +2077,10 @@ namespace OpenSim.Region.Environment.Scenes Utils.StringToBytes(sceneObjectXml)); AssetCache.AddAsset(asset); - item.AssetID = asset.FullID; - item.Description = asset.Description; - item.Name = asset.Name; - item.AssetType = asset.Type; + item.AssetID = asset.Metadata.FullID; + item.Description = asset.Metadata.Description; + item.Name = asset.Metadata.Name; + item.AssetType = asset.Metadata.Type; item.InvType = (int)InventoryType.Object; item.Folder = foundFolder; @@ -2118,10 +2118,10 @@ namespace OpenSim.Region.Environment.Scenes item.Creator = grp.RootPart.CreatorID; item.Owner = remoteClient.AgentId; item.ID = UUID.Random(); - item.AssetID = asset.FullID; - item.Description = asset.Description; - item.Name = asset.Name; - item.AssetType = asset.Type; + item.AssetID = asset.Metadata.FullID; + item.Description = asset.Metadata.Description; + item.Name = asset.Metadata.Name; + item.AssetType = asset.Metadata.Type; item.InvType = (int)InventoryType.Object; item.Folder = UUID.Zero; // Objects folder! @@ -2241,20 +2241,20 @@ namespace OpenSim.Region.Environment.Scenes if (rezAsset != null) { UUID itemId = UUID.Zero; - + // If we have permission to copy then link the rezzed object back to the user inventory // item that it came from. This allows us to enable 'save object to inventory' if (!Permissions.BypassPermissions()) { if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == (uint)PermissionMask.Copy) - { + { itemId = item.ID; } } - + string xmlData = Utils.BytesToString(rezAsset.Data); SceneObjectGroup group = new SceneObjectGroup(itemId, xmlData, true); - + if (!Permissions.CanRezObject( group.Children.Count, remoteClient.AgentId, pos) && !attachment) @@ -2351,12 +2351,12 @@ namespace OpenSim.Region.Environment.Scenes group.ClearPartAttachmentData(); } } - + if (!attachment) { // Fire on_rez group.CreateScriptInstances(0, true, DefaultScriptEngine, 0); - + rootPart.ScheduleFullUpdate(); } @@ -2500,7 +2500,7 @@ namespace OpenSim.Region.Environment.Scenes DeRezObject(null, grp.RootPart.LocalId, grp.RootPart.GroupID, DeRezAction.Return, UUID.Zero); } - + return true; } @@ -2632,7 +2632,7 @@ namespace OpenSim.Region.Environment.Scenes } } - + m_sceneGraph.DetachSingleAttachmentToInv(itemID, remoteClient); } -- cgit v1.1