@pixi/animate
Version:
PIXI plugin for the PixiAnimate Extension
96 lines (92 loc) • 3.25 kB
JavaScript
;
var utils = require('./utils.js');
var assets = require('@pixi/assets');
var core = require('@pixi/core');
var spritesheet = require('@pixi/spritesheet');
const EXPECTED_ASSET_VERSION = 2;
function load(scene, optionsOrComplete) {
const complete = typeof optionsOrComplete === "function" ? optionsOrComplete : optionsOrComplete?.complete;
const progress = typeof optionsOrComplete === "function" ? void 0 : optionsOrComplete?.progress;
let basePath = "";
let parent = null;
let metadata;
let createInstance = false;
const { version } = scene;
if (typeof version === "number") {
if (Math.floor(version) !== Math.floor(EXPECTED_ASSET_VERSION)) {
console.warn(`Asset version is not the major version expected of ${Math.floor(EXPECTED_ASSET_VERSION)} - it may not load properly`, scene);
} else if (version > EXPECTED_ASSET_VERSION) {
console.warn("Asset has been published with a newer version than PixiAnimate expects. It may not load properly.", scene);
}
}
if (optionsOrComplete && typeof optionsOrComplete !== "function") {
basePath = optionsOrComplete.basePath || "";
parent = optionsOrComplete.parent;
metadata = optionsOrComplete.metadata;
createInstance = !!optionsOrComplete.createInstance;
}
function done() {
const instance = createInstance && typeof scene.stage === "function" ? new scene.stage() : null;
if (parent && instance) {
parent.addChild(instance);
}
if (complete) {
complete(instance);
}
}
const assets$1 = scene.assets || {};
if (assets$1 && Object.keys(assets$1).length) {
let totalAssets = 0;
let loadedAssets = 0;
const promises = [];
if (basePath) {
basePath += "/";
}
for (const id in assets$1) {
if (progress)
totalAssets++;
let data = null;
if (metadata) {
if (metadata[id]) {
data = metadata[id];
} else if (metadata.default) {
data = metadata.default;
}
}
promises.push(assets.Assets.load({ alias: [id], src: basePath + assets$1[id], data }).then((loadedAsset) => {
if (progress) {
loadedAssets++;
progress(loadedAssets / totalAssets);
}
if (!loadedAsset) {
return;
}
if (loadedAsset instanceof spritesheet.Spritesheet) {
scene.spritesheets.push(loadedAsset);
} else if (loadedAsset instanceof core.Texture) {
scene.textures[id] = loadedAsset;
} else if (Array.isArray(loadedAsset) || typeof loadedAsset === "string") {
let items = loadedAsset;
if (typeof items === "string") {
items = utils.utils.deserializeShapes(items);
}
for (let i = 0; i < items.length; i++) {
const item = items[i];
for (let j = 0; j < item.length; j++) {
const arg = item[j];
if (typeof arg === "string" && arg[0] === "#") {
item[j] = utils.utils.hexToUint(arg);
}
}
}
scene.shapes[id] = items;
}
}));
}
Promise.all(promises).then(done);
} else {
done();
}
}
exports.load = load;
//# sourceMappingURL=load.js.map