Shaku

Shaku JS

Back To Table of Content

Assets

Assets

Assets manager class. Used to create, load and cache game assets, which includes textures, audio files, JSON objects, etc. As a rule of thumb, all methods to load or create assets are async and return a promise.

To access the Assets manager you use Shaku.assets.

Kind: global class

new Assets()

Create the manager.

assets.root

Optional URL root to prepend to all loaded assets URLs. For example, if all your assets are under ‘/static/assets/’, you can set this url as root and omit it when loading assets later.

Kind: instance property of Assets

assets.suffix

Optional suffix to add to all loaded assets URLs. You can use this for anti-cache mechanism if you want to reload all assets. For example, you can set this value to “‘?dt=’ + Date.now()”.

Kind: instance property of Assets

assets.pendingAssets ⇒ Array.<string>

Get list of assets waiting to be loaded. This list will be reset if you call clearCache().

Kind: instance property of Assets
Returns: Array.<string> - URLs of assets waiting to be loaded.

assets.failedAssets ⇒ Array.<string>

Get list of assets that failed to load. This list will be reset if you call clearCache().

Kind: instance property of Assets
Returns: Array.<string> - URLs of assets that had error loading.

assets.waitForAll() ⇒ Promise

Return a promise that will be resolved only when all pending assets are loaded. If an asset fails, will reject.

Kind: instance method of Assets
Returns: Promise - Promise to resolve when all assets are loaded, or reject if there are failed assets.
Example

await Shaku.assets.waitForAll();
console.log("All assets are loaded!");

assets.getCached(url) ⇒ Asset

Get asset directly from cache, synchronous and without a Promise.

Kind: instance method of Assets
Returns: Asset - Asset or null if not loaded.

Param Type Description
url String Asset URL or name.

assets.loadSound(url) ⇒ Promise.<SoundAsset>

Load a sound asset. If already loaded, will use cache.

Kind: instance method of Assets
Returns: Promise.<SoundAsset> - promise to resolve with asset instance, when loaded. You can access the loading asset with .asset on the promise.

Param Type Description
url String Asset URL.

Example

let sound = await Shaku.assets.loadSound("assets/my_sound.ogg");

assets.loadTexture(url, [params]) ⇒ Promise.<TextureAsset>

Load a texture asset. If already loaded, will use cache.

Kind: instance method of Assets
Returns: Promise.<TextureAsset> - promise to resolve with asset instance, when loaded. You can access the loading asset with .asset on the promise.

Param Type Description
url String Asset URL.
[params] \* Optional params dictionary. See TextureAsset.load() for more details.

Example

let texture = await Shaku.assets.loadTexture("assets/my_texture.png", {generateMipMaps: false});

assets.createRenderTarget(name, width, height, [channels]) ⇒ Promise.<TextureAsset>

Create a render target texture asset. If already loaded, will use cache.

Kind: instance method of Assets
Returns: Promise.<TextureAsset> - promise to resolve with asset instance, when loaded. You can access the loading asset with .asset on the promise.

Param Type Description
name String | null Asset name (matched to URLs when using cache). If null, will not add to cache.
width Number Texture width.
height Number Texture height.
[channels] Number Texture channels count. Defaults to 4 (RGBA).

Example

let width = 512;
let height = 512;
let renderTarget = await Shaku.assets.createRenderTarget("optional_render_target_asset_id", width, height);

assets.createTextureAtlas(name, sources, [maxWidth], [maxHeight], [extraMargins]) ⇒ Promise.<TextureAtlas>

Create a texture atlas asset.

Kind: instance method of Assets
Returns: Promise.<TextureAtlas> - Promise to resolve with asset instance, when loaded. You can access the loading asset with .asset on the promise.

Param Type Description
name String | null Asset name (matched to URLs when using cache). If null, will not add to cache.
sources Array.<String> List of URLs to load textures from.
[maxWidth] Number Optional atlas textures max width.
[maxHeight] Number Optional atlas textures max height.
[extraMargins] Vector2 Optional extra empty pixels to add between textures in atlas.

assets.loadFontTexture(url, params) ⇒ Promise.<FontTextureAsset>

Load a font texture asset. If already loaded, will use cache.

Kind: instance method of Assets
Returns: Promise.<FontTextureAsset> - promise to resolve with asset instance, when loaded. You can access the loading asset with .asset on the promise.

Param Type Description
url String Asset URL.
params \* Optional params dictionary. See FontTextureAsset.load() for more details.

Example

let fontTexture = await Shaku.assets.loadFontTexture('assets/DejaVuSansMono.ttf', {fontName: 'DejaVuSansMono'});

assets.loadMsdfFontTexture(url, [params]) ⇒ Promise.<MsdfFontTextureAsset>

Load a MSDF font texture asset. If already loaded, will use cache.

Kind: instance method of Assets
Returns: Promise.<MsdfFontTextureAsset> - promise to resolve with asset instance, when loaded. You can access the loading asset with .asset on the promise.

Param Type Description
url String Asset URL.
[params] \* Optional params dictionary. See MsdfFontTextureAsset.load() for more details.

Example

let fontTexture = await Shaku.assets.loadMsdfFontTexture('DejaVuSansMono.font', {jsonUrl: 'assets/DejaVuSansMono.json', textureUrl: 'assets/DejaVuSansMono.png'});

assets.loadJson(url) ⇒ Promise.<JsonAsset>

Load a json asset. If already loaded, will use cache.

Kind: instance method of Assets
Returns: Promise.<JsonAsset> - promise to resolve with asset instance, when loaded. You can access the loading asset with .asset on the promise.

Param Type Description
url String Asset URL.

Example

let jsonData = await Shaku.assets.loadJson('assets/my_json_data.json');
console.log(jsonData.data);

assets.createJson(name, data) ⇒ Promise.<JsonAsset>

Create a new json asset. If already exist, will reject promise.

Kind: instance method of Assets
Returns: Promise.<JsonAsset> - promise to resolve with asset instance, when ready. You can access the loading asset with .asset on the promise.

Param Type Description
name String Asset name (matched to URLs when using cache). If null, will not add to cache.
data Object | String Optional starting data.

Example

let jsonData = await Shaku.assets.createJson('optional_json_data_id', {"foo": "bar"});
// you can now load this asset from anywhere in your code using 'optional_json_data_id' as url

assets.loadBinary(url) ⇒ Promise.<BinaryAsset>

Load a binary data asset. If already loaded, will use cache.

Kind: instance method of Assets
Returns: Promise.<BinaryAsset> - promise to resolve with asset instance, when loaded. You can access the loading asset with .asset on the promise.

Param Type Description
url String Asset URL.

Example

let binData = await Shaku.assets.loadBinary('assets/my_bin_data.dat');
console.log(binData.data);

assets.createBinary(name, data) ⇒ Promise.<BinaryAsset>

Create a new binary asset. If already exist, will reject promise.

Kind: instance method of Assets
Returns: Promise.<BinaryAsset> - promise to resolve with asset instance, when ready. You can access the loading asset with .asset on the promise.

Param Type Description
name String Asset name (matched to URLs when using cache). If null, will not add to cache.
data Array.<Number> | Uint8Array Binary data to set.

Example

let binData = await Shaku.assets.createBinary('optional_bin_data_id', [1,2,3,4]);
// you can now load this asset from anywhere in your code using 'optional_bin_data_id' as url

assets.free(url)

Destroy and free asset from cache.

Kind: instance method of Assets

Param Type Description
url String Asset URL to free.

Example

Shaku.assets.free("my_asset_url");

assets.clearCache()

Free all loaded assets from cache.

Kind: instance method of Assets
Example

Shaku.assets.clearCache();