/// <summary> /// Reset all of the UUID's, localID's, etc in this group (includes children) /// </summary> /// <param name="entity"></param> private void ResetEntityIDs(EntityBase entity) { List<ISceneEntity> children = entity.ChildrenEntities(); //Sort so that we rebuild in the same order and the root being first children.Sort(linkSetSorter); entity.ClearChildren(); foreach (ISceneEntity 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(EntityBase entity) { List<ISceneEntity> children = entity.ChildrenEntities(); //Sort so that we rebuild in the same order and the root being first children.Sort(linkSetSorter); entity.ClearChildren(); foreach (ISceneEntity 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); }