public void Load(MyPositionAndOrientation characterPosition)
{
if (!_isInitialValueSet)
{
// only set the position first time opened and cache.
CenterPositionX = characterPosition.Position.X;
CenterPositionY = characterPosition.Position.Y;
CenterPositionZ = characterPosition.Position.Z;
AsteroidFillType = AsteroidFillType.ByteFiller;
_isInitialValueSet = true;
}
MaterialsCollection.Clear();
foreach (var material in SpaceEngineersCore.Resources.VoxelMaterialDefinitions)
{
MaterialsCollection.Add(new MaterialSelectionModel { Value = material.Id.SubtypeName, DisplayName = material.Id.SubtypeName, IsRare = material.IsRare, MinedRatio = material.MinedOreRatio });
}
BaseMaterial = MaterialsCollection.FirstOrDefault(m => m.IsRare == false) ?? MaterialsCollection.FirstOrDefault();
// Voxel Map Storage, includes stock and mod asteroids.
var vms = SpaceEngineersCore.Resources.VoxelMapStorageDefinitions;
var contentPath = ToolboxUpdater.GetApplicationContentPath();
var list = new List<GenerateVoxelDetailModel>();
foreach (var voxelMap in vms)
{
var fileName = SpaceEngineersCore.GetDataPathOrDefault(voxelMap.StorageFile, Path.Combine(contentPath, voxelMap.StorageFile));
if (!File.Exists(fileName))
continue;
var voxel = new GenerateVoxelDetailModel
{
Name = Path.GetFileNameWithoutExtension(voxelMap.StorageFile),
SourceFilename = fileName,
FileSize = new FileInfo(fileName).Length,
Size = MyVoxelMap.LoadVoxelSize(fileName)
};
list.Add(voxel);
}
// Custom voxel files directory.
List<string> files = new List<string>();
if (!string.IsNullOrEmpty(GlobalSettings.Default.CustomVoxelPath) && Directory.Exists(GlobalSettings.Default.CustomVoxelPath))
{
files.AddRange(Directory.GetFiles(GlobalSettings.Default.CustomVoxelPath, "*" + MyVoxelMap.V1FileExtension));
files.AddRange(Directory.GetFiles(GlobalSettings.Default.CustomVoxelPath, "*" + MyVoxelMap.V2FileExtension));
}
list.AddRange(files.Select(file => new GenerateVoxelDetailModel
{
Name = Path.GetFileNameWithoutExtension(file),
SourceFilename = file,
FileSize = new FileInfo(file).Length,
Size = MyVoxelMap.LoadVoxelSize(file)
}));
VoxelFileList = new ObservableCollection<GenerateVoxelDetailModel>(list.OrderBy(s => s.Name));
// Set up a default start.
if (VoxelStore.Count == 0)
{
VoxelCollection.Add(NewDefaultVoxel(1));
}
else
{
foreach (var item in VoxelStore)
{
var v1 = (AsteroidByteFillProperties)item.Clone();
v1.VoxelFile = VoxelFileList.FirstOrDefault(v => v.Name == v1.VoxelFile.Name);
v1.MainMaterial = MaterialsCollection.FirstOrDefault(v => v.DisplayName == v1.MainMaterial.DisplayName);
v1.SecondMaterial = MaterialsCollection.FirstOrDefault(v => v.DisplayName == v1.SecondMaterial.DisplayName);
v1.ThirdMaterial = MaterialsCollection.FirstOrDefault(v => v.DisplayName == v1.ThirdMaterial.DisplayName);
v1.FourthMaterial = MaterialsCollection.FirstOrDefault(v => v.DisplayName == v1.FourthMaterial.DisplayName);
v1.FifthMaterial = MaterialsCollection.FirstOrDefault(v => v.DisplayName == v1.FifthMaterial.DisplayName);
v1.SixthMaterial = MaterialsCollection.FirstOrDefault(v => v.DisplayName == v1.SixthMaterial.DisplayName);
v1.SeventhMaterial = MaterialsCollection.FirstOrDefault(v => v.DisplayName == v1.SeventhMaterial.DisplayName);
VoxelCollection.Add(v1);
}
RenumberCollection();
}
for (var i = 0; i < 100; i++)
{
PercentList.Add(i);
}
}