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.InvariantCultureIgnoreCase))
{
// Convert between formats.
var voxelmap = new MyVoxelMap();
voxelmap.Load(voxel.SourceVoxelFilepath, SpaceEngineersCore.Resources.GetDefaultMaterialName(), true);
voxelmap.Save(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;
}