- create entries in avatarattachments table when first attaching an object; fix issue 2512
- correct attachment offset; fix issue 2513 - thanks Thomas for the patches0.6.0-stable
							parent
							
								
									397b608af5
								
							
						
					
					
						commit
						5d8e08a072
					
				|  | @ -542,12 +542,21 @@ namespace OpenSim.Region.Environment.Scenes | ||||||
|                             } |                             } | ||||||
| 
 | 
 | ||||||
|                             group.SetAttachmentPoint(Convert.ToByte(AttachmentPt)); |                             group.SetAttachmentPoint(Convert.ToByte(AttachmentPt)); | ||||||
|  |                             group.AbsolutePosition = attachPos; | ||||||
| 
 | 
 | ||||||
|                             // Saves and gets assetID |                             // Saves and gets assetID | ||||||
|  |                             UUID itemId; | ||||||
|                             if (group.GetFromAssetID() == UUID.Zero) |                             if (group.GetFromAssetID() == UUID.Zero) | ||||||
|                             { |                             { | ||||||
|                                 m_parentScene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId); |                                 m_parentScene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId, out itemId); | ||||||
|                             } |                             } | ||||||
|  |                             else | ||||||
|  |                             { | ||||||
|  |                                 itemId = group.GetFromAssetID(); | ||||||
|  |                             } | ||||||
|  | 
 | ||||||
|  |                             m_parentScene.AttachObject(remoteClient, AttachmentPt, itemId, group); | ||||||
|  | 
 | ||||||
|                             group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos); |                             group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos); | ||||||
|                             // In case it is later dropped again, don't let |                             // In case it is later dropped again, don't let | ||||||
|                             // it get cleaned up |                             // it get cleaned up | ||||||
|  |  | ||||||
|  | @ -1815,8 +1815,9 @@ namespace OpenSim.Region.Environment.Scenes | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public UUID attachObjectAssetStore(IClientAPI remoteClient, SceneObjectGroup grp, UUID AgentId) |         public UUID attachObjectAssetStore(IClientAPI remoteClient, SceneObjectGroup grp, UUID AgentId, out UUID itemID) | ||||||
|         { |         { | ||||||
|  |             itemID = UUID.Zero; | ||||||
|             if (grp != null) |             if (grp != null) | ||||||
|             { |             { | ||||||
|                 string sceneObjectXml = grp.ToXmlString(); |                 string sceneObjectXml = grp.ToXmlString(); | ||||||
|  | @ -1866,6 +1867,7 @@ namespace OpenSim.Region.Environment.Scenes | ||||||
|                     userInfo.AddItem(item); |                     userInfo.AddItem(item); | ||||||
|                     remoteClient.SendInventoryItemCreateUpdate(item); |                     remoteClient.SendInventoryItemCreateUpdate(item); | ||||||
| 
 | 
 | ||||||
|  |                     itemID = item.ID; | ||||||
|                     return item.AssetID; |                     return item.AssetID; | ||||||
|                 } |                 } | ||||||
|                 return UUID.Zero; |                 return UUID.Zero; | ||||||
|  | @ -2356,6 +2358,39 @@ namespace OpenSim.Region.Environment.Scenes | ||||||
|             m_innerScene.AttachObject(controllingClient, localID, attachPoint, rot, pos); |             m_innerScene.AttachObject(controllingClient, localID, attachPoint, rot, pos); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         public void AttachObject(IClientAPI remoteClient, uint AttachmentPt, UUID itemID, SceneObjectGroup att) | ||||||
|  |         { | ||||||
|  |             if (null == itemID) | ||||||
|  |             { | ||||||
|  |                 m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error inventory item ID."); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if (0 == AttachmentPt) | ||||||
|  |             { | ||||||
|  |                 m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error attachment point."); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if (null == att.RootPart) | ||||||
|  |             { | ||||||
|  |                 m_log.Error("[SCENE INVENTORY]: Unable to save attachment for a prim without the rootpart!"); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             ScenePresence presence; | ||||||
|  |             if (TryGetAvatar(remoteClient.AgentId, out presence)) | ||||||
|  |             { | ||||||
|  |                 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, att.UUID); | ||||||
|  |                 IAvatarFactory ava = RequestModuleInterface<IAvatarFactory>(); | ||||||
|  |                 if (ava != null) | ||||||
|  |                 { | ||||||
|  |                     m_log.InfoFormat("[SCENE INVENTORY]: Saving avatar attachment. AgentID:{0} ItemID:{1} AttachmentPoint:{2}", remoteClient.AgentId, itemID, AttachmentPt); | ||||||
|  |                     ava.UpdateDatabase(remoteClient.AgentId, presence.Appearance); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient) |         public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient) | ||||||
|         { |         { | ||||||
|             SceneObjectPart part = GetSceneObjectPart(itemID); |             SceneObjectPart part = GetSceneObjectPart(itemID); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Mike Mazur
						Mike Mazur