Skip to content

Commit

Permalink
Remove spritesheet dependency from loaders, fix Loader's resources ty…
Browse files Browse the repository at this point in the history
…pe (#7300)
  • Loading branch information
bigtimebuddy committed Mar 17, 2021
1 parent 7dc9d6b commit 05ea7c7
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 8 deletions.
4 changes: 4 additions & 0 deletions packages/loaders/src/Loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Loader as ResourceLoader, middleware } from 'resource-loader';
import { TextureLoader } from './TextureLoader';

import type { Resource } from 'resource-loader';
import type { ILoaderResource } from './LoaderResource';

/**
* The new loader, extends Resource Loader by Chad Engler: https://github.com/englercj/resource-loader
Expand Down Expand Up @@ -66,6 +67,9 @@ export class Loader extends ResourceLoader
private static _shared: Loader;
private _protected: boolean;

/** All the resources for this loader by name. */
public readonly resources: {[name: string]: ILoaderResource};

/**
* @param {string} [baseUrl=''] - The base url for all resources loaded by this loader.
* @param {number} [concurrency=10] - The number of resources to load concurrently.
Expand Down
34 changes: 26 additions & 8 deletions packages/loaders/src/LoaderResource.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,39 @@
import { Resource } from 'resource-loader';

import type { Spritesheet } from '@pixi/spritesheet';
import type { IBaseTextureOptions, Texture } from '@pixi/core';
import type { Dict } from '@pixi/utils';

/**
* Resource metadata, can be used to pass BaseTexture options.
* @memberof PIXI
* @extends PIXI.IBaseTextureOptions
*/
export interface IResourceMetadata extends GlobalMixins.IResourceMetadata, Resource.IMetadata, IBaseTextureOptions {
imageMetadata?: any;
/**
* Used by BitmapFonts, Spritesheet and CompressedTextures as the options to used for
* metadata when loading the child image.
* @type {PIXI.IResourceMetadata}
*/
imageMetadata?: IResourceMetadata;
}

/**
* PixiJS' base Loader resource type. This is a superset of the resource-loader's Resource class
* and contains any mixins for extending.
* @memberof PIXI
* @extends resource-loader.Resource
*/
export interface ILoaderResource extends GlobalMixins.ILoaderResource, Resource
{
/**
* Texture reference for loading images and other textures.
* @type {PIXI.Texture}
*/
texture?: Texture;
spritesheet?: Spritesheet;

// required for Spritesheet
textures?: Dict<Texture>;

// required specific type for Spritesheet
/**
* Data that can be added for loading resources.
* @type {PIXI.IResourceMetadata}
*/
metadata: IResourceMetadata;
}

Expand Down
11 changes: 11 additions & 0 deletions packages/spritesheet/global.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
declare namespace GlobalMixins
{
interface ILoaderResource
{
/** Reference to Spritesheet object created. */
spritesheet?: import('@pixi/spritesheet').Spritesheet;

/** Dictionary of textures from Spritesheet. */
textures?: {[name: string]: Texture};
}
}
14 changes: 14 additions & 0 deletions packages/spritesheet/src/Spritesheet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -387,3 +387,17 @@ export class Spritesheet
this.baseTexture = null;
}
}

/**
* Reference to Spritesheet object created.
* @member {PIXI.Spritesheet} spritesheet
* @memberof PIXI.ILoaderResource
* @instance
*/

/**
* Dictionary of textures from Spritesheet.
* @member {object<string, PIXI.Texture>} textures
* @memberof PIXI.ILoaderResource
* @instance
*/

0 comments on commit 05ea7c7

Please sign in to comment.