Ejemplo n.º 1
0
        public void SaveAndDeleteAttachment(IClientAPI remoteClient, SceneObjectGroup grp, UUID assetID, UUID agentID)
        {
            if (grp != null)
            {
                m_log.DebugFormat("[DETACH]: Saving attachpoint {0}: [{1}] {2}", grp.GetCurrentAttachmentPoint(), grp.UUID, grp.Name);

                if (!grp.HasGroupChanged && grp.GroupScriptEvents == 0)
                {
                    m_log.InfoFormat("[ATTACHMENT]: Save request for {0} which is unchanged", grp.UUID);
                    DeleteAttachment(grp);
                    return;
                }

                if (grp.IsTempAttachment)
                {
                    m_log.InfoFormat("[ATTACHMENT]: Ignored save request for {0} which is temporary", grp.UUID);
                    DeleteAttachment(grp);
                    return;
                }

                grp.DetachToInventoryPrep();

                KnownAssetUpdateRequest updateReq = new KnownAssetUpdateRequest
                {
                    remoteClient = remoteClient,
                    attachment = grp,
                    assetID = assetID,
                    agentID = agentID,
                    forDeletion = true
                };

                lock (_pendingAssetUpdates)
                {
                    _pendingAssetUpdates[grp.UUID] = updateReq;
                }
            }
        }
Ejemplo n.º 2
0
 public void DeleteAttachment(SceneObjectGroup grp)
 {
     if (grp != null)
     {
         grp.DetachToInventoryPrep();
         DeleteSceneObject(grp, false);
         return;
     }
 }