diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/InnerScene.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/InnerScene.cs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index cbe5798..e76cf70 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs | |||
@@ -322,6 +322,22 @@ namespace OpenSim.Region.Environment.Scenes | |||
322 | // Calls attach with a Zero position | 322 | // Calls attach with a Zero position |
323 | AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, LLVector3.Zero); | 323 | AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, LLVector3.Zero); |
324 | } | 324 | } |
325 | public void RezSingleAttachment(IClientAPI remoteClient, LLUUID itemID, uint AttachmentPt, | ||
326 | uint ItemFlags, uint NextOwnerMask) | ||
327 | { | ||
328 | SceneObjectGroup objatt = m_parentScene.RezObject(remoteClient, itemID, LLVector3.Zero, LLVector3.Zero, LLUUID.Zero, (byte)1, true, | ||
329 | (uint)(PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer), | ||
330 | (uint)(PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer), | ||
331 | (uint)(PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer), | ||
332 | ItemFlags, false, false, remoteClient.AgentId, true); | ||
333 | |||
334 | if (objatt != null) | ||
335 | { | ||
336 | AttachObject(remoteClient,objatt.LocalId,AttachmentPt,new LLQuaternion(0,0,0,1),objatt.AbsolutePosition); | ||
337 | objatt.ScheduleGroupForFullUpdate(); | ||
338 | } | ||
339 | |||
340 | } | ||
325 | 341 | ||
326 | public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, LLQuaternion rot, LLVector3 attachPos) | 342 | public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, LLQuaternion rot, LLVector3 attachPos) |
327 | { | 343 | { |
@@ -338,14 +354,25 @@ namespace OpenSim.Region.Environment.Scenes | |||
338 | // Check object for stored attachment point | 354 | // Check object for stored attachment point |
339 | AttachmentPt = (uint)group.GetAttachmentPoint(); | 355 | AttachmentPt = (uint)group.GetAttachmentPoint(); |
340 | 356 | ||
357 | |||
341 | // if we still didn't find a suitable attachment point....... | 358 | // if we still didn't find a suitable attachment point....... |
342 | if (AttachmentPt == 0) | 359 | if (AttachmentPt == 0) |
343 | { | 360 | { |
344 | AttachmentPt = (uint)AttachmentPoint.LeftHand; | 361 | AttachmentPt = (uint)AttachmentPoint.LeftHand; |
362 | attachPos = LLVector3.Zero; | ||
345 | } | 363 | } |
346 | 364 | ||
365 | |||
347 | } | 366 | } |
348 | 367 | ||
368 | // Saves and gets assetID | ||
369 | if (group.GetFromAssetID() == LLUUID.Zero) | ||
370 | { | ||
371 | LLUUID newAssetID = m_parentScene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId); | ||
372 | |||
373 | // sets assetID so client can show asset as 'attached' in inventory | ||
374 | group.SetFromAssetID(newAssetID); | ||
375 | } | ||
349 | group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos); | 376 | group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos); |
350 | 377 | ||
351 | } | 378 | } |