public void SaveCheckPointAndSandBox() { IsBusy = true; ActiveWorld.SaveCheckPointAndSector(true); // Manages the adding of new voxel files. foreach (var entity in Structures) { if (entity is StructureVoxelModel) { var voxel = (StructureVoxelModel)entity; if (voxel.SourceVoxelFilepath != null && File.Exists(voxel.SourceVoxelFilepath)) { // Any asteroid that already exists with same name, must be removed. if (File.Exists(voxel.VoxelFilepath)) { FileSystem.DeleteFile(voxel.VoxelFilepath, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin); } if (Path.GetExtension(voxel.SourceVoxelFilepath).Equals(MyVoxelMap.V1FileExtension, StringComparison.OrdinalIgnoreCase)) { // Convert between formats. MyVoxelMap.UpdateFileFormat(voxel.SourceVoxelFilepath, voxel.VoxelFilepath); } else { File.Copy(voxel.SourceVoxelFilepath, voxel.VoxelFilepath); } voxel.SourceVoxelFilepath = null; } } if (entity is StructurePlanetModel) { var voxel = (StructurePlanetModel)entity; if (voxel.SourceVoxelFilepath != null && File.Exists(voxel.SourceVoxelFilepath)) { // Any asteroid that already exists with same name, must be removed. if (File.Exists(voxel.VoxelFilepath)) { FileSystem.DeleteFile(voxel.VoxelFilepath, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin); } File.Copy(voxel.SourceVoxelFilepath, voxel.VoxelFilepath); voxel.SourceVoxelFilepath = null; } } } // Manages the removal old voxels files. foreach (var file in SpaceEngineersCore.ManageDeleteVoxelList) { var filename = Path.Combine(ActiveWorld.Savepath, file); if (File.Exists(filename)) { FileSystem.DeleteFile(filename, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin); } } SpaceEngineersCore.ManageDeleteVoxelList.Clear(); IsModified = false; IsBusy = false; }