public async Task <BspFileLoadResult> Load(Stream stream, IEnvironment environment) { return(await Task.Factory.StartNew(() => { var result = new BspFileLoadResult(); var map = new Map(); var so = _formatter.Deserialize(stream); foreach (var o in so) { if (o.Name == nameof(Root)) { map.Root.Unclone((Root)_factory.Deserialise(o)); } else { map.Data.Add((IMapData)_factory.Deserialise(o)); } } map.Root.DescendantsChanged(); result.Map = map; return result; })); }
private IEnumerable <IMapObject> ExtractCopyStream(string str) { using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str))) { try { var clip = _formatter.Deserialize(ms).First(x => x.Name == SerialisedName); return(clip.Children.Select(x => _factory.Deserialise(x)).OfType <IMapObject>()); } catch { return(new IMapObject[0]); } } }