Beispiel #1
0
 /// <summary>
 ///     Add the Entity to the Scene and back it up
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 public bool AddPrimToScene(ISceneEntity entity)
 {
     //Reset the entity IDs
     ResetEntityIDs(entity);
     //Force the prim to backup now that it has been added
     entity.ForcePersistence();
     //Tell the entity that they are being added to a scene
     entity.AttachToScene(m_parentScene);
     //Now save the entity that we have 
     return AddEntity(entity, false);
 }
Beispiel #2
0
        /// <summary>
        ///     Add the Entity to the Scene and back it up, but do NOT reset its ID's
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="force"></param>
        /// <returns></returns>
        public bool RestorePrimToScene(ISceneEntity entity, bool force)
        {
            List<ISceneChildEntity> children = entity.ChildrenEntities();
            //Sort so that we rebuild in the same order and the root being first
            children.Sort(LinkSetSorter);

            entity.ClearChildren();

            foreach (ISceneChildEntity child in children)
            {
                if (child.LocalId == 0)
                    child.LocalId = AllocateLocalId();
                if (((SceneObjectPart) child).PhysActor != null)
                {
                    ((SceneObjectPart) child).PhysActor.LocalID = child.LocalId;
                    ((SceneObjectPart) child).PhysActor.UUID = child.UUID;
                }
                child.Flags &= ~PrimFlags.Scripted;
                child.TrimPermissions();
                entity.AddChild(child, child.LinkNum);
            }
            //Tell the entity that they are being added to a scene
            entity.AttachToScene(m_parentScene);
            //Now save the entity that we have 
            bool success = AddEntity(entity, false);

            if (force && !success)
            {
                IBackupModule backup = m_parentScene.RequestModuleInterface<IBackupModule>();
                backup.DeleteSceneObjects(new ISceneEntity[1] {entity}, false, true);
                return RestorePrimToScene(entity, false);
            }
            return success;
        }
Beispiel #3
0
        /// <summary>
        /// Add the Entity to the Scene and back it up, but do NOT reset its ID's
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public bool RestorePrimToScene(ISceneEntity entity)
        {
            List<ISceneChildEntity> children = entity.ChildrenEntities ();
            //Sort so that we rebuild in the same order and the root being first
            children.Sort(LinkSetSorter);

            entity.ClearChildren();

            foreach (ISceneChildEntity child in children)
            {
                if (((SceneObjectPart)child).PhysActor != null)
                    ((SceneObjectPart)child).PhysActor.LocalID = child.LocalId;
                if (child.LocalId == 0)
                    child.LocalId = AllocateLocalId();
                entity.AddChild(child, child.LinkNum);
            }
            //Tell the entity that they are being added to a scene
            entity.AttachToScene(m_parentScene);
            //Now save the entity that we have 
            return AddEntity(entity, false);
        }