public List<string> LoadEntities(string[] filenames)
{
IsBusy = true;
var idReplacementTable = new Dictionary<long, long>();
var badfiles = new List<string>();
foreach (var filename in filenames)
{
bool isCompressed;
MyObjectBuilder_CubeGrid cubeEntity;
MyObjectBuilder_FloatingObject floatingEntity;
MyObjectBuilder_Meteor meteorEntity;
MyObjectBuilder_Character characterEntity;
MyObjectBuilder_Definitions prefabDefinitions;
if (SpaceEngineersApi.TryReadSpaceEngineersFile(filename, out cubeEntity, out isCompressed))
{
MergeData(cubeEntity, ref idReplacementTable);
}
else if (SpaceEngineersApi.TryReadSpaceEngineersFile(filename, out prefabDefinitions, out isCompressed))
{
if (prefabDefinitions.Prefabs != null)
{
foreach (var prefab in prefabDefinitions.Prefabs)
{
if (prefab.CubeGrid != null)
MergeData(prefab.CubeGrid, ref idReplacementTable);
if (prefab.CubeGrids != null)
{
foreach (var cubeGrid in prefab.CubeGrids)
{
MergeData(cubeGrid, ref idReplacementTable);
}
}
}
}
}
else if (SpaceEngineersApi.TryReadSpaceEngineersFile(filename, out floatingEntity, out isCompressed))
{
var newEntity = AddEntity(floatingEntity);
newEntity.EntityId = MergeId(floatingEntity.EntityId, ref idReplacementTable);
}
else if (SpaceEngineersApi.TryReadSpaceEngineersFile(filename, out meteorEntity, out isCompressed))
{
var newEntity = AddEntity(meteorEntity);
newEntity.EntityId = MergeId(meteorEntity.EntityId, ref idReplacementTable);
}
else if (SpaceEngineersApi.TryReadSpaceEngineersFile(filename, out characterEntity, out isCompressed))
{
var newEntity = AddEntity(characterEntity);
newEntity.EntityId = MergeId(characterEntity.EntityId, ref idReplacementTable);
}
else
{
badfiles.Add(filename);
}
}
IsBusy = false;
return badfiles;
}