pixi.js 7.3.1 → 7.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  PixiJS — The HTML5 Creation Engine
2
2
  =============
3
3
 
4
- ![pixi.js logo](https://pixijs.download/pixijs-banner-no-version.png?v=1)
4
+ ![PixiJS logo](https://files.pixijs.download/branding/pixijs-banner.png)
5
5
 
6
6
  The aim of this project is to provide a fast lightweight 2D library that works
7
7
  across all devices. The PixiJS renderer allows everyone to enjoy the power of
package/dist/pixi.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * pixi.js - v7.3.1
3
- * Compiled Fri, 22 Sep 2023 18:50:32 UTC
2
+ * pixi.js - v7.3.3
3
+ * Compiled Mon, 01 Jan 2024 14:18:14 UTC
4
4
  *
5
5
  * pixi.js is licensed under the MIT License.
6
6
  * http://www.opensource.org/licenses/mit-license
@@ -1106,7 +1106,7 @@ Deprecated since v${version}`), console.warn(stack))), warnings[message] = !0;
1106
1106
  joined = arg;
1107
1107
  else {
1108
1108
  const prevArg = (_a2 = segments[i2 - 1]) != null ? _a2 : "";
1109
- this.extname(prevArg) ? joined += `/../${arg}` : joined += `/${arg}`;
1109
+ this.joinExtensions.includes(this.extname(prevArg).toLowerCase()) ? joined += `/../${arg}` : joined += `/${arg}`;
1110
1110
  }
1111
1111
  }
1112
1112
  return joined === void 0 ? "." : this.normalize(joined);
@@ -1232,7 +1232,8 @@ Deprecated since v${version}`), console.warn(stack))), warnings[message] = !0;
1232
1232
  return startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1 ? end !== -1 && (startPart === 0 && isAbsolute ? ret.base = ret.name = path2.slice(1, end) : ret.base = ret.name = path2.slice(startPart, end)) : (startPart === 0 && isAbsolute ? (ret.name = path2.slice(1, startDot), ret.base = path2.slice(1, end)) : (ret.name = path2.slice(startPart, startDot), ret.base = path2.slice(startPart, end)), ret.ext = path2.slice(startDot, end)), ret.dir = this.dirname(path2), protocol && (ret.dir = protocol + ret.dir), ret;
1233
1233
  },
1234
1234
  sep: "/",
1235
- delimiter: ":"
1235
+ delimiter: ":",
1236
+ joinExtensions: [".html"]
1236
1237
  };
1237
1238
  let promise;
1238
1239
  async function detectVideoAlphaMode() {
@@ -4620,7 +4621,10 @@ void main(void){
4620
4621
  if (!maxFragmentPrecision) {
4621
4622
  maxFragmentPrecision = PRECISION.MEDIUM;
4622
4623
  const gl = getTestContext();
4623
- gl && gl.getShaderPrecisionFormat && (maxFragmentPrecision = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision ? PRECISION.HIGH : PRECISION.MEDIUM);
4624
+ if (gl && gl.getShaderPrecisionFormat) {
4625
+ const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);
4626
+ shaderFragment && (maxFragmentPrecision = shaderFragment.precision ? PRECISION.HIGH : PRECISION.MEDIUM);
4627
+ }
4624
4628
  }
4625
4629
  return maxFragmentPrecision;
4626
4630
  }
@@ -8292,7 +8296,7 @@ void main(void)
8292
8296
  */
8293
8297
  run(options) {
8294
8298
  const { renderer } = this;
8295
- renderer.runners.init.emit(renderer.options), options.hello && console.log(`PixiJS 7.3.1 - ${renderer.rendererLogId} - https://pixijs.com`), renderer.resize(renderer.screen.width, renderer.screen.height);
8299
+ renderer.runners.init.emit(renderer.options), options.hello && console.log(`PixiJS 7.3.3 - ${renderer.rendererLogId} - https://pixijs.com`), renderer.resize(renderer.screen.width, renderer.screen.height);
8296
8300
  }
8297
8301
  destroy() {
8298
8302
  }
@@ -10659,7 +10663,7 @@ void main(void)
10659
10663
  */
10660
10664
  _isSourcePlaying() {
10661
10665
  const source = this.source;
10662
- return !source.paused && !source.ended && this._isSourceReady();
10666
+ return !source.paused && !source.ended;
10663
10667
  }
10664
10668
  /**
10665
10669
  * Returns true if the underlying source is ready for playing.
@@ -10762,7 +10766,7 @@ void main(void)
10762
10766
  this.disposeRunner.emit(this, !1);
10763
10767
  }
10764
10768
  }
10765
- const VERSION = "7.3.1";
10769
+ const VERSION = "7.3.3";
10766
10770
  class Bounds {
10767
10771
  constructor() {
10768
10772
  this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, this.rect = null, this.updateID = -1;
@@ -11243,7 +11247,7 @@ void main(void)
11243
11247
  return this._zIndex;
11244
11248
  }
11245
11249
  set zIndex(value) {
11246
- this._zIndex = value, this.parent && (this.parent.sortDirty = !0);
11250
+ this._zIndex !== value && (this._zIndex = value, this.parent && (this.parent.sortDirty = !0));
11247
11251
  }
11248
11252
  /**
11249
11253
  * Indicates if the object is globally visible.
@@ -13403,7 +13407,7 @@ void main()
13403
13407
  }));
13404
13408
  }
13405
13409
  /**
13406
- * Updates the state of interactive objects if at least {@link interactionFrequency}
13410
+ * Updates the state of interactive objects if at least {@link PIXI.EventsTicker#interactionFrequency}
13407
13411
  * milliseconds have passed since the last invocation.
13408
13412
  *
13409
13413
  * Invoked by a throttled ticker update from {@link PIXI.Ticker.system}.
@@ -13766,7 +13770,7 @@ void main()
13766
13770
  }
13767
13771
  }
13768
13772
  const isInteractiveMode = this._isInteractive(eventMode), isInteractiveTarget = currentTarget.isInteractive();
13769
- return isInteractiveTarget && isInteractiveTarget && this._allInteractiveElements.push(currentTarget), ignore || this._hitElements.length > 0 ? null : shouldReturn ? this._hitElements : isInteractiveMode && !pruneFn(currentTarget, location) && testFn(currentTarget, location) ? isInteractiveTarget ? [currentTarget] : [] : null;
13773
+ return isInteractiveMode && isInteractiveTarget && this._allInteractiveElements.push(currentTarget), ignore || this._hitElements.length > 0 ? null : shouldReturn ? this._hitElements : isInteractiveMode && !pruneFn(currentTarget, location) && testFn(currentTarget, location) ? isInteractiveTarget ? [currentTarget] : [] : null;
13770
13774
  }
13771
13775
  /**
13772
13776
  * Recursive implementation for {@link PIXI.EventBoundary.hitTest hitTest}.
@@ -15723,6 +15727,10 @@ ${e2}`);
15723
15727
  let fontFamilyName = nameTokens.join(" ");
15724
15728
  return valid || (fontFamilyName = `"${fontFamilyName.replace(/[\\"]/g, "\\$&")}"`), fontFamilyName;
15725
15729
  }
15730
+ const validURICharactersRegex = /^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;
15731
+ function encodeURIWhenNeeded(uri) {
15732
+ return validURICharactersRegex.test(uri) ? uri : encodeURI(uri);
15733
+ }
15726
15734
  const loadWebFont = {
15727
15735
  extension: {
15728
15736
  type: ExtensionType.LoadParser,
@@ -15738,7 +15746,7 @@ ${e2}`);
15738
15746
  if (fonts) {
15739
15747
  const fontFaces = [], name = (_b = (_a2 = options.data) == null ? void 0 : _a2.family) != null ? _b : getFontFamilyName(url2), weights = (_e = (_d = (_c = options.data) == null ? void 0 : _c.weights) == null ? void 0 : _d.filter((weight) => validWeights.includes(weight))) != null ? _e : ["normal"], data = (_f = options.data) != null ? _f : {};
15740
15748
  for (let i2 = 0; i2 < weights.length; i2++) {
15741
- const weight = weights[i2], font = new FontFace(name, `url(${encodeURI(url2)})`, __spreadProps$2(__spreadValues$8({}, data), {
15749
+ const weight = weights[i2], font = new FontFace(name, `url(${encodeURIWhenNeeded(url2)})`, __spreadProps$2(__spreadValues$8({}, data), {
15742
15750
  weight
15743
15751
  }));
15744
15752
  await font.load(), fonts.add(font), fontFaces.push(font);
@@ -16237,38 +16245,6 @@ ${e2}`);
16237
16245
  assetNames.push(...aliases);
16238
16246
  }), this._bundles[bundleId] = assetNames;
16239
16247
  }
16240
- /**
16241
- * Tells the resolver what keys are associated with witch asset.
16242
- * The most important thing the resolver does
16243
- * @example
16244
- * // Single key, single asset:
16245
- * resolver.add({alias: 'foo', src: 'bar.png');
16246
- * resolver.resolveUrl('foo') // => 'bar.png'
16247
- *
16248
- * // Multiple keys, single asset:
16249
- * resolver.add({alias: ['foo', 'boo'], src: 'bar.png'});
16250
- * resolver.resolveUrl('foo') // => 'bar.png'
16251
- * resolver.resolveUrl('boo') // => 'bar.png'
16252
- *
16253
- * // Multiple keys, multiple assets:
16254
- * resolver.add({alias: ['foo', 'boo'], src: ['bar.png', 'bar.webp']});
16255
- * resolver.resolveUrl('foo') // => 'bar.png'
16256
- *
16257
- * // Add custom data attached to the resolver
16258
- * Resolver.add({
16259
- * alias: 'bunnyBooBooSmooth',
16260
- * src: 'bunny{png,webp}',
16261
- * data: { scaleMode:SCALE_MODES.NEAREST }, // Base texture options
16262
- * });
16263
- *
16264
- * resolver.resolve('bunnyBooBooSmooth') // => { src: 'bunny.png', data: { scaleMode: SCALE_MODES.NEAREST } }
16265
- * @param aliases - the key or keys that you will reference when loading this asset
16266
- * @param srcs - the asset or assets that will be chosen from when loading via the specified key
16267
- * @param data - asset-specific data that will be passed to the loaders
16268
- * - Useful if you want to initiate loaded objects with specific data
16269
- * @param format - the format of the asset
16270
- * @param loadParser - the name of the load parser to use
16271
- */
16272
16248
  add(aliases, srcs, data, format2, loadParser) {
16273
16249
  const assets = [];
16274
16250
  typeof aliases == "string" || Array.isArray(aliases) && typeof aliases[0] == "string" ? (deprecation("7.2.0", `Assets.add now uses an object instead of individual parameters.
@@ -16323,12 +16299,12 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16323
16299
  * name: 'load-screen',
16324
16300
  * assets: [
16325
16301
  * {
16326
- * name: 'background',
16327
- * srcs: 'sunset.png',
16302
+ * alias: 'background',
16303
+ * src: 'sunset.png',
16328
16304
  * },
16329
16305
  * {
16330
- * name: 'bar',
16331
- * srcs: 'load-bar.{png,webp}',
16306
+ * alias: 'bar',
16307
+ * src: 'load-bar.{png,webp}',
16332
16308
  * },
16333
16309
  * ],
16334
16310
  * },
@@ -16336,12 +16312,12 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16336
16312
  * name: 'game-screen',
16337
16313
  * assets: [
16338
16314
  * {
16339
- * name: 'character',
16340
- * srcs: 'robot.png',
16315
+ * alias: 'character',
16316
+ * src: 'robot.png',
16341
16317
  * },
16342
16318
  * {
16343
- * name: 'enemy',
16344
- * srcs: 'bad-guy.png',
16319
+ * alias: 'enemy',
16320
+ * src: 'bad-guy.png',
16345
16321
  * },
16346
16322
  * ],
16347
16323
  * },
@@ -16448,7 +16424,7 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16448
16424
  buildResolvedAsset(formattedAsset, data) {
16449
16425
  var _a2;
16450
16426
  const { aliases, data: assetData, loadParser, format: format2 } = data;
16451
- return (this._basePath || this._rootPath) && (formattedAsset.src = path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath)), formattedAsset.alias = (_a2 = aliases != null ? aliases : formattedAsset.alias) != null ? _a2 : [formattedAsset.src], formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src), formattedAsset.data = __spreadValues$4(__spreadValues$4({}, assetData || {}), formattedAsset.data), formattedAsset.loadParser = loadParser != null ? loadParser : formattedAsset.loadParser, formattedAsset.format = format2 != null ? format2 : formattedAsset.src.split(".").pop(), formattedAsset.srcs = formattedAsset.src, formattedAsset.name = formattedAsset.alias, formattedAsset;
16427
+ return (this._basePath || this._rootPath) && (formattedAsset.src = path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath)), formattedAsset.alias = (_a2 = aliases != null ? aliases : formattedAsset.alias) != null ? _a2 : [formattedAsset.src], formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src), formattedAsset.data = __spreadValues$4(__spreadValues$4({}, assetData || {}), formattedAsset.data), formattedAsset.loadParser = loadParser != null ? loadParser : formattedAsset.loadParser, formattedAsset.format = format2 != null ? format2 : path.extname(formattedAsset.src).slice(1), formattedAsset.srcs = formattedAsset.src, formattedAsset.name = formattedAsset.alias, formattedAsset;
16452
16428
  }
16453
16429
  }
16454
16430
  class AssetsClass {
@@ -16465,7 +16441,7 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16465
16441
  async init(options = {}) {
16466
16442
  var _a2, _b, _c;
16467
16443
  if (this._initialized) {
16468
- console.warn("[Assets]AssetManager already initialized, did you load before calling this Asset.init()?");
16444
+ console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");
16469
16445
  return;
16470
16446
  }
16471
16447
  if (this._initialized = !0, options.defaultSearchParams && this.resolver.setDefaultSearchParams(options.defaultSearchParams), options.basePath && (this.resolver.basePath = options.basePath), options.bundleIdentifier && this.resolver.setBundleIdentifier(options.bundleIdentifier), options.manifest) {
@@ -16484,51 +16460,6 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16484
16460
  }
16485
16461
  }), options.preferences && this.setPreferences(options.preferences);
16486
16462
  }
16487
- /**
16488
- * Allows you to specify how to resolve any assets load requests.
16489
- * There are a few ways to add things here as shown below:
16490
- * @example
16491
- * import { Assets } from 'pixi.js';
16492
- *
16493
- * // Simple
16494
- * Assets.add({alias: 'bunnyBooBoo', src: 'bunny.png'});
16495
- * const bunny = await Assets.load('bunnyBooBoo');
16496
- *
16497
- * // Multiple keys:
16498
- * Assets.add({alias: ['burger', 'chicken'], src: 'bunny.png'});
16499
- *
16500
- * const bunny = await Assets.load('burger');
16501
- * const bunny2 = await Assets.load('chicken');
16502
- *
16503
- * // passing options to to the object
16504
- * Assets.add({
16505
- * alias: 'bunnyBooBooSmooth',
16506
- * src: 'bunny{png,webp}',
16507
- * data: { scaleMode: SCALE_MODES.NEAREST }, // Base texture options
16508
- * });
16509
- *
16510
- * // Multiple assets
16511
- *
16512
- * // The following all do the same thing:
16513
- *
16514
- * Assets.add({alias: 'bunnyBooBoo', src: 'bunny{png,webp}'});
16515
- *
16516
- * Assets.add({
16517
- * alias: 'bunnyBooBoo',
16518
- * src: [
16519
- * 'bunny.png',
16520
- * 'bunny.webp',
16521
- * ],
16522
- * });
16523
- *
16524
- * const bunny = await Assets.load('bunnyBooBoo'); // Will try to load WebP if available
16525
- * @param aliases - the key or keys that you will reference when loading this asset
16526
- * @param srcs - the asset or assets that will be chosen from when loading via the specified key
16527
- * @param data - asset-specific data that will be passed to the loaders
16528
- * - Useful if you want to initiate loaded objects with specific data
16529
- * @param format - the format of the asset
16530
- * @param loadParser - the name of the load parser to use
16531
- */
16532
16463
  add(aliases, srcs, data, format2, loadParser) {
16533
16464
  this.resolver.add(aliases, srcs, data, format2, loadParser);
16534
16465
  }
@@ -16576,12 +16507,12 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16576
16507
  * name: 'load-screen',
16577
16508
  * assets: [
16578
16509
  * {
16579
- * name: 'background',
16580
- * srcs: 'sunset.png',
16510
+ * alias: 'background',
16511
+ * src: 'sunset.png',
16581
16512
  * },
16582
16513
  * {
16583
- * name: 'bar',
16584
- * srcs: 'load-bar.{png,webp}',
16514
+ * alias: 'bar',
16515
+ * src: 'load-bar.{png,webp}',
16585
16516
  * },
16586
16517
  * ],
16587
16518
  * },
@@ -16589,19 +16520,19 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16589
16520
  * name: 'game-screen',
16590
16521
  * assets: [
16591
16522
  * {
16592
- * name: 'character',
16593
- * srcs: 'robot.png',
16523
+ * alias: 'character',
16524
+ * src: 'robot.png',
16594
16525
  * },
16595
16526
  * {
16596
- * name: 'enemy',
16597
- * srcs: 'bad-guy.png',
16527
+ * alias: 'enemy',
16528
+ * src: 'bad-guy.png',
16598
16529
  * },
16599
16530
  * ],
16600
16531
  * },
16601
16532
  * ]
16602
16533
  * };
16603
16534
  *
16604
- * await Asset.init({ manifest });
16535
+ * await Assets.init({ manifest });
16605
16536
  *
16606
16537
  * // Load a bundle...
16607
16538
  * loadScreenAssets = await Assets.loadBundle('load-screen');
@@ -16831,22 +16762,36 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16831
16762
  }
16832
16763
  };
16833
16764
  extensions$1.add(cacheTextureArray);
16834
- const detectAvif = {
16835
- extension: {
16836
- type: ExtensionType.DetectionParser,
16837
- priority: 1
16838
- },
16839
- test: async () => {
16840
- const avifData = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=";
16765
+ async function testImageFormat(imageData) {
16766
+ if ("Image" in globalThis)
16841
16767
  return new Promise((resolve2) => {
16842
- const avif = new Image();
16843
- avif.onload = () => {
16768
+ const image = new Image();
16769
+ image.onload = () => {
16844
16770
  resolve2(!0);
16845
- }, avif.onerror = () => {
16771
+ }, image.onerror = () => {
16846
16772
  resolve2(!1);
16847
- }, avif.src = avifData;
16773
+ }, image.src = imageData;
16848
16774
  });
16775
+ if ("createImageBitmap" in globalThis && "fetch" in globalThis) {
16776
+ try {
16777
+ const blob = await (await fetch(imageData)).blob();
16778
+ await createImageBitmap(blob);
16779
+ } catch (e2) {
16780
+ return !1;
16781
+ }
16782
+ return !0;
16783
+ }
16784
+ return !1;
16785
+ }
16786
+ const detectAvif = {
16787
+ extension: {
16788
+ type: ExtensionType.DetectionParser,
16789
+ priority: 1
16849
16790
  },
16791
+ test: async () => testImageFormat(
16792
+ // eslint-disable-next-line max-len
16793
+ "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="
16794
+ ),
16850
16795
  add: async (formats2) => [...formats2, "avif"],
16851
16796
  remove: async (formats2) => formats2.filter((f2) => f2 !== "avif")
16852
16797
  };
@@ -16856,17 +16801,9 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16856
16801
  type: ExtensionType.DetectionParser,
16857
16802
  priority: 0
16858
16803
  },
16859
- test: async () => {
16860
- const webpData = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=";
16861
- return new Promise((resolve2) => {
16862
- const webp = new Image();
16863
- webp.onload = () => {
16864
- resolve2(!0);
16865
- }, webp.onerror = () => {
16866
- resolve2(!1);
16867
- }, webp.src = webpData;
16868
- });
16869
- },
16804
+ test: async () => testImageFormat(
16805
+ "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="
16806
+ ),
16870
16807
  add: async (formats2) => [...formats2, "webp"],
16871
16808
  remove: async (formats2) => formats2.filter((f2) => f2 !== "webp")
16872
16809
  };
@@ -16922,13 +16859,13 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16922
16859
  var _a2, _b;
16923
16860
  return {
16924
16861
  resolution: parseFloat((_b = (_a2 = settings.RETINA_PREFIX.exec(value)) == null ? void 0 : _a2[1]) != null ? _b : "1"),
16925
- format: value.split(".").pop(),
16862
+ format: path.extname(value).slice(1),
16926
16863
  src: value
16927
16864
  };
16928
16865
  }
16929
16866
  };
16930
16867
  extensions$1.add(resolveTextureUrl);
16931
- var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => (INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_R11_EAC = 37488] = "COMPRESSED_R11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_R11_EAC = 37489] = "COMPRESSED_SIGNED_R11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RG11_EAC = 37490] = "COMPRESSED_RG11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_RG11_EAC = 37491] = "COMPRESSED_SIGNED_RG11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_ETC2 = 37492] = "COMPRESSED_RGB8_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA8_ETC2_EAC = 37496] = "COMPRESSED_RGBA8_ETC2_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ETC2 = 37493] = "COMPRESSED_SRGB8_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ETC1_WEBGL = 36196] = "COMPRESSED_RGB_ETC1_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ATC_WEBGL = 35986] = "COMPRESSED_RGB_ATC_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35986] = "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798] = "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ASTC_4x4_KHR = 37808] = "COMPRESSED_RGBA_ASTC_4x4_KHR", INTERNAL_FORMATS2))(INTERNAL_FORMATS || {});
16868
+ var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => (INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_R11_EAC = 37488] = "COMPRESSED_R11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_R11_EAC = 37489] = "COMPRESSED_SIGNED_R11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RG11_EAC = 37490] = "COMPRESSED_RG11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_RG11_EAC = 37491] = "COMPRESSED_SIGNED_RG11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_ETC2 = 37492] = "COMPRESSED_RGB8_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA8_ETC2_EAC = 37496] = "COMPRESSED_RGBA8_ETC2_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ETC2 = 37493] = "COMPRESSED_SRGB8_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ETC1_WEBGL = 36196] = "COMPRESSED_RGB_ETC1_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ATC_WEBGL = 35986] = "COMPRESSED_RGB_ATC_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987] = "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798] = "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ASTC_4x4_KHR = 37808] = "COMPRESSED_RGBA_ASTC_4x4_KHR", INTERNAL_FORMATS2))(INTERNAL_FORMATS || {});
16932
16869
  const INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = {
16933
16870
  // WEBGL_compressed_texture_s3tc
16934
16871
  33776: 0.5,
@@ -16963,7 +16900,7 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16963
16900
  // @see https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_ATC_texture.txt
16964
16901
  // WEBGL_compressed_texture_atc
16965
16902
  35986: 0.5,
16966
- 35986: 1,
16903
+ 35987: 1,
16967
16904
  34798: 1,
16968
16905
  // @see https://registry.khronos.org/OpenGL/extensions/KHR/KHR_texture_compression_astc_hdr.txt
16969
16906
  // WEBGL_compressed_texture_astc
@@ -17443,12 +17380,13 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
17443
17380
  const resolveCompressedTextureUrl = {
17444
17381
  extension: ExtensionType.ResolveParser,
17445
17382
  test: (value) => {
17446
- const extension = value.split("?")[0].split(".").pop();
17383
+ const extension = path.extname(value).slice(1);
17447
17384
  return ["basis", "ktx", "dds"].includes(extension);
17448
17385
  },
17449
17386
  parse: (value) => {
17450
17387
  var _a2, _b, _c, _d;
17451
- if (value.split("?")[0].split(".").pop() === "ktx") {
17388
+ const extension = path.extname(value).slice(1);
17389
+ if (extension === "ktx") {
17452
17390
  const extensions2 = [
17453
17391
  ".s3tc.ktx",
17454
17392
  ".s3tc_sRGB.ktx",
@@ -17467,7 +17405,7 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
17467
17405
  }
17468
17406
  return {
17469
17407
  resolution: parseFloat((_d = (_c = settings.RETINA_PREFIX.exec(value)) == null ? void 0 : _c[1]) != null ? _d : "1"),
17470
- format: value.split(".").pop(),
17408
+ format: extension,
17471
17409
  src: value
17472
17410
  };
17473
17411
  }
@@ -21962,7 +21900,7 @@ void main(void)
21962
21900
  _updateResolution(resolutionFilename = null) {
21963
21901
  const { scale } = this.data.meta;
21964
21902
  let resolution = getResolutionOfUrl(resolutionFilename, null);
21965
- return resolution === null && (resolution = parseFloat(scale != null ? scale : "1")), resolution !== 1 && this.baseTexture.setResolution(resolution), resolution;
21903
+ return resolution === null && (resolution = typeof scale == "number" ? scale : parseFloat(scale != null ? scale : "1")), resolution !== 1 && this.baseTexture.setResolution(resolution), resolution;
21966
21904
  }
21967
21905
  /**
21968
21906
  * Parser spritesheet from loaded data. This is done asynchronously