diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.Inventory.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 109 |
1 files changed, 2 insertions, 107 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 9cbaffc..eb51019 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1862,39 +1862,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1862 | 1862 | ||
1863 | if (att == null) | 1863 | if (att == null) |
1864 | { | 1864 | { |
1865 | DetachSingleAttachmentToInv(itemID, remoteClient); | 1865 | AttachmentsModule.ShowDetachInUserInventory(itemID, remoteClient); |
1866 | return UUID.Zero; | 1866 | return UUID.Zero; |
1867 | } | 1867 | } |
1868 | 1868 | ||
1869 | return RezSingleAttachment(att, remoteClient, itemID, AttachmentPt); | 1869 | return AttachmentsModule.SetAttachmentInventoryStatus(att, remoteClient, itemID, AttachmentPt); |
1870 | } | ||
1871 | |||
1872 | /// <summary> | ||
1873 | /// Update the user inventory to reflect an attachment | ||
1874 | /// </summary> | ||
1875 | /// <param name="att"></param> | ||
1876 | /// <param name="remoteClient"></param> | ||
1877 | /// <param name="itemID"></param> | ||
1878 | /// <param name="AttachmentPt"></param> | ||
1879 | /// <returns></returns> | ||
1880 | public UUID RezSingleAttachment(SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt) | ||
1881 | { | ||
1882 | m_log.DebugFormat( | ||
1883 | "[USER INVENTORY]: Updating inventory of {0} to show attachment of {1} (item ID {2})", | ||
1884 | remoteClient.Name, att.Name, itemID); | ||
1885 | |||
1886 | if (!att.IsDeleted) | ||
1887 | AttachmentPt = att.RootPart.AttachmentPoint; | ||
1888 | |||
1889 | ScenePresence presence; | ||
1890 | if (TryGetAvatar(remoteClient.AgentId, out presence)) | ||
1891 | { | ||
1892 | InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); | ||
1893 | item = InventoryService.GetItem(item); | ||
1894 | |||
1895 | presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); | ||
1896 | } | ||
1897 | return att.UUID; | ||
1898 | } | 1870 | } |
1899 | 1871 | ||
1900 | public void RezMultipleAttachments(IClientAPI remoteClient, RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header, | 1872 | public void RezMultipleAttachments(IClientAPI remoteClient, RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header, |
@@ -1906,65 +1878,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1906 | } | 1878 | } |
1907 | } | 1879 | } |
1908 | 1880 | ||
1909 | /// <summary> | ||
1910 | /// Attach an object. | ||
1911 | /// </summary> | ||
1912 | /// <param name="controllingClient"></param> | ||
1913 | /// <param name="localID"></param> | ||
1914 | /// <param name="attachPoint"></param> | ||
1915 | /// <param name="rot"></param> | ||
1916 | /// <param name="pos"></param> | ||
1917 | /// <param name="silent"></param> | ||
1918 | /// <returns>true if the object was successfully attached, false otherwise</returns> | ||
1919 | public bool AttachObject(IClientAPI controllingClient, uint localID, uint attachPoint, Quaternion rot, Vector3 pos, bool silent) | ||
1920 | { | ||
1921 | return m_sceneGraph.AttachObject(controllingClient, localID, attachPoint, rot, pos, silent); | ||
1922 | } | ||
1923 | |||
1924 | /// <summary> | ||
1925 | /// This registers the item as attached in a user's inventory | ||
1926 | /// </summary> | ||
1927 | /// <param name="remoteClient"></param> | ||
1928 | /// <param name="AttachmentPt"></param> | ||
1929 | /// <param name="itemID"></param> | ||
1930 | /// <param name="att"></param> | ||
1931 | public void AttachObject(IClientAPI remoteClient, uint AttachmentPt, UUID itemID, SceneObjectGroup att) | ||
1932 | { | ||
1933 | // m_log.DebugFormat( | ||
1934 | // "[USER INVENTORY]: Updating attachment {0} for {1} at {2} using item ID {3}", | ||
1935 | // att.Name, remoteClient.Name, AttachmentPt, itemID); | ||
1936 | |||
1937 | if (UUID.Zero == itemID) | ||
1938 | { | ||
1939 | m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error inventory item ID."); | ||
1940 | return; | ||
1941 | } | ||
1942 | |||
1943 | if (0 == AttachmentPt) | ||
1944 | { | ||
1945 | m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error attachment point."); | ||
1946 | return; | ||
1947 | } | ||
1948 | |||
1949 | if (null == att.RootPart) | ||
1950 | { | ||
1951 | m_log.Error("[SCENE INVENTORY]: Unable to save attachment for a prim without the rootpart!"); | ||
1952 | return; | ||
1953 | } | ||
1954 | |||
1955 | ScenePresence presence; | ||
1956 | if (TryGetAvatar(remoteClient.AgentId, out presence)) | ||
1957 | { | ||
1958 | // XXYY!! | ||
1959 | InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); | ||
1960 | item = InventoryService.GetItem(item); | ||
1961 | presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /* att.UUID */); | ||
1962 | |||
1963 | if (m_AvatarFactory != null) | ||
1964 | m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); | ||
1965 | } | ||
1966 | } | ||
1967 | |||
1968 | public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient) | 1881 | public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient) |
1969 | { | 1882 | { |
1970 | SceneObjectPart part = GetSceneObjectPart(itemID); | 1883 | SceneObjectPart part = GetSceneObjectPart(itemID); |
@@ -1995,24 +1908,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1995 | SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero); | 1908 | SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero); |
1996 | } | 1909 | } |
1997 | 1910 | ||
1998 | public void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient) | ||
1999 | { | ||
2000 | ScenePresence presence; | ||
2001 | if (TryGetAvatar(remoteClient.AgentId, out presence)) | ||
2002 | { | ||
2003 | presence.Appearance.DetachAttachment(itemID); | ||
2004 | |||
2005 | // Save avatar attachment information | ||
2006 | if (m_AvatarFactory != null) | ||
2007 | { | ||
2008 | m_log.Info("[SCENE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId + ", ItemID: " + itemID); | ||
2009 | m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); | ||
2010 | } | ||
2011 | } | ||
2012 | |||
2013 | m_sceneGraph.DetachSingleAttachmentToInv(itemID, remoteClient); | ||
2014 | } | ||
2015 | |||
2016 | public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) | 1911 | public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) |
2017 | { | 1912 | { |
2018 | EventManager.TriggerGetScriptRunning(controllingClient, objectID, itemID); | 1913 | EventManager.TriggerGetScriptRunning(controllingClient, objectID, itemID); |