Esempio n. 1
0
        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);
            }
        }
Esempio n. 3
0
        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);
                }
            }
        }