Newer
Older
pixi.js / src / loaders / spritesheetParser.js
var Resource = require('resource-loader').Resource,
    core = require('../core');

module.exports = function ()
{
    return function (resource, next)
    {
        // if this is a spritesheet object
        if (resource.data && resource.data.frames)
        {
            var loadOptions = {
                crossOrigin: resource.crossOrigin,
                loadType: Resource.LOAD_TYPE.IMAGE
            };

            // load the image for this sheet
            this.loadResource(new Resource(this.baseUrl + resource.data.meta.image, loadOptions), function (res)
            {
                resource.textures = {};

                var frames = resource.data.frames;

                for (var i in frames)
                {
                    var rect = frames[i].frame;

                    if (rect)
                    {
                        var size = new core.math.Rectangle(rect.x, rect.y, rect.w, rect.h);
                        var trim = null;

                        //  Check to see if the sprite is trimmed
                        if (frames[i].trimmed)
                        {
                            trim = new core.math.Rectangle(
                                frames[i].spriteSourceSize.x,
                                frames[i].spriteSourceSize.y,
                                frames[i].sourceSize.w,
                                frames[i].sourceSize.h
                            );
                        }

                        resource.textures[i] = new core.Texture(res.texture.baseTexture, size, size.clone(), trim);
                    }
                }

                next();
            });
        }
        else {
            next();
        }
    };
};