/// <summary> /// Reset all of the UUID's, localID's, etc in this group (includes children) /// </summary> /// <param name="entity"></param> private void ResetEntityIDs(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) { UUID oldID = child.UUID; child.ResetEntityIDs(); entity.AddChild(child, child.LinkNum); } //This clears the xml file, which will need rebuilt now that we have changed the UUIDs entity.HasGroupChanged = true; foreach (ISceneChildEntity child in children) { if (!child.IsRoot) { child.SetParentLocalId(entity.RootChild.LocalId); } } }
/// <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; }
/// <summary> /// Reset all of the UUID's, localID's, etc in this group (includes children) /// </summary> /// <param name="entity"></param> private void ResetEntityIDs (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) { child.ResetEntityIDs(); entity.AddChild(child, child.LinkNum); } }
/// <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); }
/// <summary> /// Reset all of the UUID's, localID's, etc in this group (includes children) /// </summary> /// <param name="entity"></param> private void ResetEntityIDs (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(); IComponentManager manager = m_parentScene.RequestModuleInterface<IComponentManager> (); foreach (ISceneChildEntity child in children) { UUID oldID = child.UUID; child.ResetEntityIDs(); entity.AddChild (child, child.LinkNum); if (manager != null) manager.ResetComponentIDsToNewObject (oldID, child); } //This clears the xml file, which will need rebuilt now that we have changed the UUIDs entity.HasGroupChanged = true; foreach (ISceneChildEntity child in children) { if(!child.IsRoot) { child.SetParentLocalId (entity.RootChild.LocalId); } } }
/// <summary> /// Reset all of the UUID's, localID's, etc in this group (includes children) /// </summary> /// <param name="entity"></param> private void ResetEntityIDs (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(); IComponentManager manager = m_parentScene.RequestModuleInterface<IComponentManager> (); foreach (ISceneChildEntity child in children) { UUID oldID = child.UUID; child.ResetEntityIDs(); entity.AddChild (child, child.LinkNum); if (manager != null) manager.ResetComponentIDsToNewObject (oldID, child); } }