//public Vector2 seedorient = new Vector2(0, 0); //public Vector2 seedsize = new Vector2(0, 0); public void InitWithSeed(Seed seed, Texture.TextureMgr tmgr) { //seedorient = seed.orient; //seedsize = seed.size; this.Size = seed.size; this.Orient = seed.orient; drawblock = tmgr.GetTexture(seed.texname); }
public void InitWithSeed(Seed seed, Texture.TextureMgr tmgr) { var block = tmgr.GetTexture(seed.texname); tex = block.parent.texture; srcuv = block.uv; seedsize = seed.size; seedorient = seed.orient; }
public tpos(Seed seed, clgf.Texture.TexturePacket.TextureBlock block) { this.block = block; this.size = new Size((int)seed.size.X, (int)seed.size.Y); if (seed.size.X - size.Width > 0) this.size.Width++; if (seed.size.Y - size.Height > 0) this.size.Height++; this.orientY = seed.orient.Y; }
public static Sprite Load(string inpath) { Sprite spr = new Sprite(inpath); if (inpath == null) return spr; spr.seeds.Clear();//LoadSeeds { if (System.IO.Path.DirectorySeparatorChar == '\\') inpath = inpath.Replace("/", "\\"); else inpath = inpath.Replace("\\", "/"); string file = System.IO.Path.Combine(inpath, "seeds.bin.bytes"); using (System.IO.Stream os = TitleContainer.OpenStream(file)) { #if USECompression using (GZipStream s = new GZipStream(os, CompressionMode.Decompress)) #else var s = os; #endif { byte[] bb = new byte[256]; s.Read(bb, 0, 2); UInt16 len = BitConverter.ToUInt16(bb, 0); for (int i = 0; i < len; i++) { int slen = s.ReadByte(); s.Read(bb, 0, slen); Seed seed = new Seed(); seed.Read(s); string name = System.Text.Encoding.UTF8.GetString(bb, 0, slen); spr.seeds[name] = seed; } } } } string[] files = null; { using (System.IO.Stream s = TitleContainer.OpenStream(System.IO.Path.Combine( inpath , "anims.txt"))) { byte[] buf = new byte[65536]; int buflen = (int)s.Read(buf, 0, 65536); //byte[] b = new byte[s.Length]; //s.Read(b, 0, b.Length); string txt = System.Text.Encoding.UTF8.GetString(buf,0,buflen); files = txt.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); while(!char.IsLetter(files[0][0])) { files[0]=files[0].Substring(1); } } } //string[] files = System.IO.Directory.GetFiles(inpath, "*.anim.bin"); foreach (var _f in files) { string f =_f; if(System.IO.Path.DirectorySeparatorChar=='/') { f=f.Replace('\\','/'); } string fname =System.IO.Path.GetFileName(f); fname = System.IO.Path.Combine(inpath,fname); using (System.IO.Stream ss = TitleContainer.OpenStream(fname)) { Anim ani = new Anim(spr); ani.Read(ss); string name = System.IO.Path.GetFileNameWithoutExtension(f); name = System.IO.Path.GetFileNameWithoutExtension(name); spr.anims[name] = ani; } } return spr; }
public Seed Copy() { Seed seed = new Seed(); seed.texname = texname; seed.size = size; seed.orient = orient; return seed; }
void GenSeed_R(string filename, string _path) { string seedoname = System.IO.Path.GetFileNameWithoutExtension(filename); string seedname = seedoname + "_b"; if (cursprite.seeds.ContainsKey(seedname)) { return; } else { Seed seed = new Seed(); string bestfile = GetBestFile(_path, filename); if (string.IsNullOrEmpty(bestfile)) { throw new Exception(filename + ":少了张图"); } seed.texname = bestfile.Substring(resourcepath.Length + 1); var image = Image.FromFile(bestfile); seed.size.X = image.Width; seed.size.Y = image.Height; image.Dispose(); cursprite.seeds[seedname] = seed; } }
void GenSeed(DOMSymbolItem item, string _path) { if (cursprite.seeds.ContainsKey(item.name)) { return; } else { Seed seed = new Seed(); aniconv.xfl.DOMSymbolItem.DOMTimeline.DOMLayer.DOMFrame.DOMBitmapInstance binst = item.m_timeline.m_DOMTimeline.layers[0].frames[0].elements[0]; string bestfile = GetBestFile(_path, binst.libraryItemName); if (string.IsNullOrEmpty(bestfile)) { throw new Exception(binst.libraryItemName + ":少了张图"); } seed.texname = bestfile.Substring(resourcepath.Length + 1); string seedname = System.IO.Path.GetFileNameWithoutExtension(seed.texname); var image = Image.FromFile(bestfile); seed.size.X = image.Width; seed.size.Y = image.Height; image.Dispose(); if (binst.matrix.Count > 0) { seed.orient.X = -binst.matrix[0].tx; seed.orient.Y = -binst.matrix[0].ty; } cursprite.seeds[seedname] = seed; seedchange[item.name] = seedname; } }
public Anim FillAni() { Anim anim = new Anim(cursprite); if (this.datadom.listTimeLine.Count == 0) { logger.Log(LogLevel.Error, "this.datadom.listTimeLine.Count == 0"); return null; } anim.size.X = datadom.width; anim.size.Y = datadom.height; int maxframe = 0; //Dictionary<string, string> part2bone = new Dictionary<string, string>(); //foreach (var p in data.Parts) //{ // part2bone[p.type] = p.bone; //} foreach (var l in this.datadom.listTimeLine[0].layers)//不使用层名称 { int frameid = 0; // List<aniconv.xfl.data_domdoc.DOMTimeline.DOMLayer.DOMFrame> framesneedcopy = new List<data_domdoc.DOMTimeline.DOMLayer.DOMFrame>(); foreach (var f in l.frames) { if (f.duration > 1) { frameid = f.index + f.duration - 1; //framesneedcopy.Add(f); } frameid = Math.Max(f.index, frameid); } maxframe = Math.Max(frameid, maxframe); } anim.frames.Clear(); while (anim.frames.Count <= maxframe) { anim.frames.Add(new Frame()); } // anim.ResetFrameCount(maxframe); foreach (var l in this.datadom.listTimeLine[0].layers) { foreach (var f in l.frames) { if (f.element.listbelements.Count > 0) { Element elem = new Element(); anim.frames[f.index].elems.Add(elem); Matrix mat; if (f.__elements[0].matrix.Count > 0) mat = f.__elements[0].matrix[0]; else mat = new Matrix(); elem.pos.X = mat.tx;// +f.elements[0].transformationPoint.;// -data.SizeX / 2; elem.pos.Y = mat.ty;// +data.SizeY; var s = mat.GetScale(); elem.scale.X = s.X; elem.scale.Y = s.Y; if (s.Y < 0) { } elem.rotate = -mat.GetRotate();// / (float)Math.PI * -180.0f; //f.elements[0].libraryItemName 类型 string seedoname = System.IO.Path.GetFileNameWithoutExtension(f.__elements[0].libraryItemName); string seedname = seedoname + "_b"; GenSeed_R(f.__elements[0].libraryItemName, mainpath); if (cursprite.seeds.ContainsKey(seedname)==false) { Seed seed = new Seed(); seed.size = cursprite.seeds[seedoname].size; seed.orient = new Microsoft.Xna.Framework.Vector2(); seed.texname = cursprite.seeds[seedoname].texname; cursprite.seeds[seedname] = seed; } elem.seed = seedname; elem.seednow = elem.seed; elem.sound = f.soundName; elem.tag = f.name; //if (f._elements[0].color.Count > 0) //{ // elem.color.A = (byte)(f.__elements[0].color[0].alphaMultiplier * 255); // elem.color.R = (byte)(f.__elements[0].color[0].redMultiplier * 255); // elem.color.G = (byte)(f.__elements[0].color[0].greenMultiplier * 255); // elem.color.B = (byte)(f.__elements[0].color[0].blueMultiplier * 255); // int i = f._elements[0].color[0].redOffset; // if (i > 255) i = 255; // elem.coloradd.R = (byte)i; // i = f._elements[0].color[0].greenOffset; // if (i > 255) i = 255; // elem.coloradd.G = (byte)i; // i = f._elements[0].color[0].blueOffset; // if (i > 255) i = 255; // elem.coloradd.B = (byte)i; //} if (f.duration > 0) { for (int i = 1; i < f.duration; i++) { anim.frames[f.index + i].elems.Add(elem.Copy()); } } } else if (f._elements.Count > 0) { Element elem = new Element(); anim.frames[f.index].elems.Add(elem); Matrix mat; if (f._elements[0].matrix.Count > 0) mat = f._elements[0].matrix[0]; else mat = new Matrix(); elem.pos.X = mat.tx;// +f.elements[0].transformationPoint.;// -data.SizeX / 2; elem.pos.Y = mat.ty;// +data.SizeY; var s = mat.GetScale(); elem.scale.X = s.X; elem.scale.Y = s.Y; if (s.Y < 0) { } elem.rotate = -mat.GetRotate();// / (float)Math.PI * -180.0f; //f.elements[0].libraryItemName 类型 elem.seed = seedchange[f._elements[0].libraryItemName];// cursprite.seeds[f.elements[0].libraryItemName]; elem.seednow = elem.seed; elem.sound = f.soundName; elem.tag = f.name; if (f._elements[0].color.Count > 0) { elem.color.A = (byte)(f._elements[0].color[0].alphaMultiplier * 255); elem.color.R = (byte)(f._elements[0].color[0].redMultiplier * 255); elem.color.G = (byte)(f._elements[0].color[0].greenMultiplier * 255); elem.color.B = (byte)(f._elements[0].color[0].blueMultiplier * 255); int i = f._elements[0].color[0].redOffset; if (i > 255) i = 255; elem.coloradd.R = (byte)i; i = f._elements[0].color[0].greenOffset; if (i > 255) i = 255; elem.coloradd.G = (byte)i; i = f._elements[0].color[0].blueOffset; if (i > 255) i = 255; elem.coloradd.B = (byte)i; } if (f.duration > 0) { for (int i = 1; i < f.duration; i++) { anim.frames[f.index + i].elems.Add(elem.Copy()); } } } if(string.IsNullOrEmpty( f.name)==false) { anim.frames[f.index].AddTag(f.name); for (int i = 1; i < f.duration; i++) { anim.frames[f.index+i].AddTag(f.name); } } } } return anim; }
public void InitWithSeed(Seed seed,Texture.TextureMgr tmgr) { block=tmgr.GetTexture(seed.texname); seedsize=seed.size; seedorient =seed.orient; }
void GenSeed(DOMSymbolItem item, string _path) { //if (cursprite.seeds.ContainsKey(item.name)) //{ // return; //} //else { Seed seed = new Seed(); aniconv.xfl.DOMSymbolItem.DOMTimeline.DOMLayer.DOMFrame.DOMBitmapInstance binst = item.m_timeline.m_DOMTimeline.layers[0].frames[0].elements[0]; string bestfile = GetBestFile(_path, binst.libraryItemName); if (string.IsNullOrEmpty(bestfile)) { throw new Exception(binst.libraryItemName + ":少了张图"); } seed.texname = bestfile.Substring(resourcepath.Length + 1); string seedname = System.IO.Path.GetFileNameWithoutExtension(seed.texname); if (seedname.IndexOf("_dummy") == 0) { //dummyseed 不导出 return; } var image = Image.FromFile(bestfile); seed.size.X = image.Width; seed.size.Y = image.Height; image.Dispose(); if (binst.matrix.Count > 0) { seed.orient.X = -binst.matrix[0].tx; seed.orient.Y = -binst.matrix[0].ty; } if (cursprite.seeds.ContainsKey(seedname)) { // Console.WriteLine("Seed以有,对比"); var oldseed = cursprite.seeds[seedname]; if (System.IO.Path.GetFileName(oldseed.texname) != System.IO.Path.GetFileName(seed.texname)) { throw new Exception(seed.texname + ":seed源图冲突"); } else if (oldseed.size.Equals(seed.size) == false) { throw new Exception(System.IO.Path.GetFileName(seed.texname) + ":seed尺寸冲突"); } else if (oldseed.orient.Equals(seed.orient) == false) { //seed 锚点冲突 //Console.WriteLine("Seed冲突,需要新建"); string subname = System.IO.Path.GetFileName(_path); seedname += "_" + subname; logger.Log(LogLevel.Waring, seedname +":Seed 冲突,已解决"); cursprite.seeds[seedname] = seed; seedchange[item.name+"_"+subname] = seedname; } else { return; } } cursprite.seeds[seedname] = seed; seedchange[item.name] = seedname; } }
public static Sprite Load(string inpath) { Sprite spr = new Sprite(inpath); if (inpath == null) { return(spr); } spr.seeds.Clear();//LoadSeeds { if (System.IO.Path.DirectorySeparatorChar == '\\') { inpath = inpath.Replace("/", "\\"); } else { inpath = inpath.Replace("\\", "/"); } string file = System.IO.Path.Combine(inpath, "seeds.bin.bytes"); using (System.IO.Stream os = TitleContainer.OpenStream(file)) { #if USECompression using (GZipStream s = new GZipStream(os, CompressionMode.Decompress)) #else var s = os; #endif { byte[] bb = new byte[256]; s.Read(bb, 0, 2); UInt16 len = BitConverter.ToUInt16(bb, 0); for (int i = 0; i < len; i++) { int slen = s.ReadByte(); s.Read(bb, 0, slen); Seed seed = new Seed(); seed.Read(s); string name = System.Text.Encoding.UTF8.GetString(bb, 0, slen); spr.seeds[name] = seed; } } } } string[] files = null; { using (System.IO.Stream s = TitleContainer.OpenStream(System.IO.Path.Combine(inpath, "anims.txt"))) { byte[] buf = new byte[65536]; int buflen = (int)s.Read(buf, 0, 65536); //byte[] b = new byte[s.Length]; //s.Read(b, 0, b.Length); string txt = System.Text.Encoding.UTF8.GetString(buf, 0, buflen); files = txt.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); while (!char.IsLetter(files[0][0])) { files[0] = files[0].Substring(1); } } } //string[] files = System.IO.Directory.GetFiles(inpath, "*.anim.bin"); foreach (var _f in files) { string f = _f; if (System.IO.Path.DirectorySeparatorChar == '/') { f = f.Replace('\\', '/'); } string fname = System.IO.Path.GetFileName(f); fname = System.IO.Path.Combine(inpath, fname); using (System.IO.Stream ss = TitleContainer.OpenStream(fname)) { Anim ani = new Anim(spr); ani.Read(ss); string name = System.IO.Path.GetFileNameWithoutExtension(f); name = System.IO.Path.GetFileNameWithoutExtension(name); spr.anims[name] = ani; } } return(spr); }