public override void Import (string input, Stream output) { var ser = new JsonSerializer(); AtlasMetadata metadata = null; string metaPath = "atlas.meta"; if (File.Exists(metaPath)) { using (var sr = new StreamReader(metaPath)) { metadata = ser.Deserialize<AtlasMetadata>(new JsonTextReader(sr)); } } else metadata = new AtlasMetadata(); var lp = new LayoutProperties { inputFilePaths = (Directory.Exists("./sprites") ? Directory.GetFiles("./sprites") : Directory.GetFiles(".")) .Where(p => SupportedFormats.Contains(Path.GetExtension(p).ToLower())).ToArray(), distanceBetweenImages = metadata.Padding, marginWidth = metadata.Margin, powerOfTwo = metadata.PowerOfTwo, maxSpriteWidth = metadata.MaxSpriteWidth > 0 ? metadata.MaxSpriteWidth : 16384, maxSpriteHeight = metadata.MaxSpriteHeight > 0 ? metadata.MaxSpriteHeight : 16384, filterMode = metadata.FilterMode, }; var sheetMaker = new AtlasBuilder(lp); using (var tw = new TarWriter(output)) { using (MemoryStream atlasStream = new MemoryStream(), sheetStream = new MemoryStream()) { using (var bw = new BinaryWriter(atlasStream)) { sheetMaker.Create(bw, sheetStream, ImageFormat.Png, metadata.NoPreMultiply); bw.Flush(); atlasStream.Position = 0; sheetStream.Position = 0; tw.Write(atlasStream, atlasStream.Length, "atlas.bin"); tw.Write(sheetStream, sheetStream.Length, "sheet.png"); } } } }
public AtlasBuilder(LayoutProperties _layoutProp) { images = new Dictionary <int, Image>(); spriteNames = new Dictionary <int, string>(); layoutProp = _layoutProp; }
public AtlasBuilder(LayoutProperties _layoutProp) { images = new Dictionary<int, Image>(); spriteNames = new Dictionary<int, string>(); layoutProp = _layoutProp; }