private void AddAtlasFolder(SpriterFolder folder, DefaultProviderFactory <ISprite, SoundEffect> factory) { int id = folder.AtlasId; TexturePackerSheet atlas = atlases[id]; Texture2D texture = LoadContent <Texture2D>(FormatPath(atlas.Meta.Image)); Dictionary <string, ImageInfo> imageInfos = infos[atlas]; foreach (SpriterFile file in folder.Files) { ImageInfo info = imageInfos[file.Name]; // "x", "y" = location in spritesheet, "w", "h" = trimmed unrotated image size Size frame = info.Frame; // "w", "h" = original image size Size source = info.SourceSize; // "x", "y" = trimmed offset - pixels trimmed from the top and left Size spriteSource = info.SpriteSourceSize; Rectangle sourceRectangle; bool rotated = false; if (info.Rotated) { sourceRectangle = new Rectangle(frame.X, frame.Y, frame.H, frame.W); rotated = true; } else { sourceRectangle = new Rectangle(frame.X, frame.Y, frame.W, frame.H); } float trimLeft = spriteSource.X; float trimRight = source.W - frame.W - spriteSource.X; float trimTop = spriteSource.Y; float trimBottom = source.H - frame.H - spriteSource.Y; int width = source.W; int height = source.H; TexturePackerSprite sprite = new TexturePackerSprite(texture, sourceRectangle, width, height, rotated, trimLeft, trimRight, trimTop, trimBottom); factory.SetSprite(Spriter, folder, file, sprite); } }
private void AddAtlasFolder(SpriterFolder folder, DefaultProviderFactory <Sprite, SoundEffect> factory) { SpriterAtlas atlas = atlases[folder.AtlasId]; Texture2D texture = content.Load <Texture2D>(FormatPath(atlas.Meta.Image)); Dictionary <string, ImageInfo> imageInfos = infos[atlas]; foreach (SpriterFile file in folder.Files) { ImageInfo info = imageInfos[file.Name]; // "x", "y" = location in spritesheet, "w", "h" = trimmed unrotated image size Size frame = info.Frame; // "w", "h" = original image size Size source = info.SourceSize; // "x", "y" = trimmed offset - pixels trimmed from the top and left Size spriteSource = info.SpriteSourceSize; Sprite sprite = new Sprite { Texture = texture, Width = source.W, Height = source.H }; sprite.TrimLeft = spriteSource.X; sprite.TrimRight = source.W - frame.W - spriteSource.X; sprite.TrimTop = spriteSource.Y; sprite.TrimBottom = source.H - frame.H - spriteSource.Y; if (info.Rotated) { sprite.SourceRectangle = new Rectangle(frame.X, frame.Y, frame.H, frame.W); sprite.Rotated = true; } else { sprite.SourceRectangle = new Rectangle(frame.X, frame.Y, frame.W, frame.H); } factory.SetSprite(Spriter, folder, file, sprite); } }
private void AddRegularFolder(SpriterFolder folder, DefaultProviderFactory <ISprite, SoundEffect> factory) { foreach (SpriterFile file in folder.Files) { string path = FormatPath(file.Name); if (file.Type == SpriterFileType.Sound) { SoundEffect sound = LoadContent <SoundEffect>(path); factory.SetSound(Spriter, folder, file, sound); } else { Texture2D texture = LoadContent <Texture2D>(path); TextureSprite sprite = new TextureSprite(texture); factory.SetSprite(Spriter, folder, file, sprite); } } }