excalibur 0.26.0-alpha.310 → 0.26.0-alpha.311
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/CHANGELOG.md +8 -2
- package/build/dist/Actor.js +3 -1
- package/build/dist/Actor.js.map +1 -1
- package/build/dist/Debug/Debug.d.ts +16 -0
- package/build/dist/Debug/Debug.js +35 -0
- package/build/dist/Debug/Debug.js.map +1 -1
- package/build/dist/Drawing/Animation.js +10 -1
- package/build/dist/Drawing/Animation.js.map +1 -1
- package/build/dist/Drawing/Polygon.js +11 -1
- package/build/dist/Drawing/Polygon.js.map +1 -1
- package/build/dist/Drawing/Sprite.js +24 -25
- package/build/dist/Drawing/Sprite.js.map +1 -1
- package/build/dist/Drawing/Texture.js +25 -36
- package/build/dist/Drawing/Texture.js.map +1 -1
- package/build/dist/Engine.d.ts +34 -1
- package/build/dist/Engine.js +114 -60
- package/build/dist/Engine.js.map +1 -1
- package/build/dist/EntityComponentSystem/SystemManager.d.ts +6 -0
- package/build/dist/EntityComponentSystem/SystemManager.js +12 -5
- package/build/dist/EntityComponentSystem/SystemManager.js.map +1 -1
- package/build/dist/Graphics/Animation.js +7 -1
- package/build/dist/Graphics/Animation.js.map +1 -1
- package/build/dist/Graphics/Canvas.js +5 -1
- package/build/dist/Graphics/Canvas.js.map +1 -1
- package/build/dist/Graphics/Circle.js +5 -1
- package/build/dist/Graphics/Circle.js.map +1 -1
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js +4 -4
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js.map +1 -1
- package/build/dist/Graphics/Font.js +14 -2
- package/build/dist/Graphics/Font.js.map +1 -1
- package/build/dist/Graphics/GraphicsComponent.js +6 -3
- package/build/dist/Graphics/GraphicsComponent.js.map +1 -1
- package/build/dist/Graphics/GraphicsGroup.js +4 -1
- package/build/dist/Graphics/GraphicsGroup.js.map +1 -1
- package/build/dist/Graphics/ImageSource.js +25 -36
- package/build/dist/Graphics/ImageSource.js.map +1 -1
- package/build/dist/Graphics/Polygon.js +5 -1
- package/build/dist/Graphics/Polygon.js.map +1 -1
- package/build/dist/Graphics/Rectangle.js +6 -1
- package/build/dist/Graphics/Rectangle.js.map +1 -1
- package/build/dist/Graphics/Sprite.js +6 -1
- package/build/dist/Graphics/Sprite.js.map +1 -1
- package/build/dist/Graphics/SpriteSheet.js +2 -2
- package/build/dist/Graphics/SpriteSheet.js.map +1 -1
- package/build/dist/Loader.d.ts +4 -1
- package/build/dist/Loader.js +31 -31
- package/build/dist/Loader.js.map +1 -1
- package/build/dist/Particles.js +1 -1
- package/build/dist/Particles.js.map +1 -1
- package/build/dist/Resources/Gif.js +8 -19
- package/build/dist/Resources/Gif.js.map +1 -1
- package/build/dist/Resources/Sound/Sound.js +42 -59
- package/build/dist/Resources/Sound/Sound.js.map +1 -1
- package/build/dist/Scene.js +1 -0
- package/build/dist/Scene.js.map +1 -1
- package/build/dist/Screen.js +3 -3
- package/build/dist/Screen.js.map +1 -1
- package/build/dist/ScreenElement.js +1 -1
- package/build/dist/ScreenElement.js.map +1 -1
- package/build/dist/Trigger.js +4 -1
- package/build/dist/Trigger.js.map +1 -1
- package/build/dist/Util/Clock.d.ts +117 -0
- package/build/dist/Util/Clock.js +209 -0
- package/build/dist/Util/Clock.js.map +1 -0
- package/build/dist/Util/Decorators.js +7 -2
- package/build/dist/Util/Decorators.js.map +1 -1
- package/build/dist/Util/Fps.d.ts +40 -0
- package/build/dist/Util/Fps.js +47 -0
- package/build/dist/Util/Fps.js.map +1 -0
- package/build/dist/Util/Util.d.ts +6 -1
- package/build/dist/Util/Util.js +9 -3
- package/build/dist/Util/Util.js.map +1 -1
- package/build/dist/Util/WebAudio.js.map +1 -1
- package/build/dist/excalibur.js +699 -306
- package/build/dist/excalibur.js.map +1 -1
- package/build/dist/excalibur.min.js +1 -1
- package/build/dist/excalibur.min.js.LICENSE.txt +1 -1
- package/build/dist/excalibur.min.js.map +1 -1
- package/build/dist/index.d.ts +3 -0
- package/build/dist/index.js +5 -2
- package/build/dist/index.js.map +1 -1
- package/build/esm/Debug/Debug.d.ts +16 -0
- package/build/esm/Engine.d.ts +34 -1
- package/build/esm/EntityComponentSystem/SystemManager.d.ts +6 -0
- package/build/esm/Loader.d.ts +4 -1
- package/build/esm/Util/Clock.d.ts +117 -0
- package/build/esm/Util/Fps.d.ts +40 -0
- package/build/esm/Util/Util.d.ts +6 -1
- package/build/esm/excalibur.js +705 -307
- package/build/esm/excalibur.js.map +1 -1
- package/build/esm/excalibur.min.js +1 -1
- package/build/esm/excalibur.min.js.LICENSE.txt +1 -1
- package/build/esm/excalibur.min.js.map +1 -1
- package/build/esm/index.d.ts +3 -0
- package/package.json +1 -1
- package/wallaby.js +1 -0
package/build/esm/excalibur.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* excalibur - 0.26.0-alpha.
|
|
2
|
+
* excalibur - 0.26.0-alpha.311+c19e8da - 2021-11-28
|
|
3
3
|
* https://github.com/excaliburjs/Excalibur
|
|
4
4
|
* Copyright (c) 2021 Excalibur.js <https://github.com/excaliburjs/Excalibur/graphs/contributors>
|
|
5
5
|
* Licensed BSD-2-Clause
|
|
@@ -1898,6 +1898,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
1898
1898
|
"Cdc": () => (/* reexport */ Circle),
|
|
1899
1899
|
"FKn": () => (/* reexport */ CircleCollider),
|
|
1900
1900
|
"wTW": () => (/* reexport */ Class),
|
|
1901
|
+
"SUY": () => (/* reexport */ Clock),
|
|
1901
1902
|
"ab2": () => (/* reexport */ ClosestLine),
|
|
1902
1903
|
"GfZ": () => (/* reexport */ ClosestLineJumpTable),
|
|
1903
1904
|
"YMS": () => (/* reexport */ Collider),
|
|
@@ -1964,6 +1965,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
1964
1965
|
"Zxw": () => (/* reexport */ Font),
|
|
1965
1966
|
"Hdx": () => (/* reexport */ FontStyle),
|
|
1966
1967
|
"Z$d": () => (/* reexport */ FontUnit),
|
|
1968
|
+
"iqV": () => (/* reexport */ FpsSampler),
|
|
1967
1969
|
"o$7": () => (/* reexport */ FrameStats),
|
|
1968
1970
|
"Zm$": () => (/* reexport */ GameEvent),
|
|
1969
1971
|
"$QH": () => (/* reexport */ GameStartEvent),
|
|
@@ -2064,6 +2066,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
2064
2066
|
"jyi": () => (/* reexport */ Sprite),
|
|
2065
2067
|
"E03": () => (/* reexport */ SpriteFont_SpriteFont),
|
|
2066
2068
|
"V6q": () => (/* reexport */ SpriteSheet),
|
|
2069
|
+
"rg2": () => (/* reexport */ StandardClock),
|
|
2067
2070
|
"nVo": () => (/* reexport */ StrategyContainer),
|
|
2068
2071
|
"F6N": () => (/* reexport */ Stream),
|
|
2069
2072
|
"ad3": () => (/* reexport */ SubscribeEvent),
|
|
@@ -2071,6 +2074,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
2071
2074
|
"Odq": () => (/* reexport */ SystemManager),
|
|
2072
2075
|
"Zif": () => (/* reexport */ SystemType),
|
|
2073
2076
|
"ZGJ": () => (/* reexport */ TagComponent),
|
|
2077
|
+
"MJk": () => (/* reexport */ TestClock),
|
|
2074
2078
|
"xvT": () => (/* reexport */ Text),
|
|
2075
2079
|
"PHM": () => (/* reexport */ TextAlign),
|
|
2076
2080
|
"KwO": () => (/* reexport */ TileMap),
|
|
@@ -2084,6 +2088,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
2084
2088
|
"OWs": () => (/* reexport */ Vector),
|
|
2085
2089
|
"dF9": () => (/* reexport */ VectorView),
|
|
2086
2090
|
"VHo": () => (/* reexport */ VisibleEvent),
|
|
2091
|
+
"ohE": () => (/* reexport */ WebAudio),
|
|
2087
2092
|
"R$E": () => (/* reexport */ WebAudioInstance),
|
|
2088
2093
|
"q3I": () => (/* reexport */ World),
|
|
2089
2094
|
"Pab": () => (/* reexport */ canonicalizeAngle),
|
|
@@ -2644,7 +2649,12 @@ const logMessage = (message, options) => {
|
|
|
2644
2649
|
* method do the deprecated one. Inspired by https://github.com/jayphelps/core-decorators.js
|
|
2645
2650
|
*/
|
|
2646
2651
|
function obsolete(options) {
|
|
2647
|
-
options =
|
|
2652
|
+
options = {
|
|
2653
|
+
message: 'This feature will be removed in future versions of Excalibur.',
|
|
2654
|
+
alternateMethod: null,
|
|
2655
|
+
showStackTrace: false,
|
|
2656
|
+
...options
|
|
2657
|
+
};
|
|
2648
2658
|
return function (target, property, descriptor) {
|
|
2649
2659
|
if (descriptor &&
|
|
2650
2660
|
!(typeof descriptor.value === 'function' || typeof descriptor.get === 'function' || typeof descriptor.set === 'function')) {
|
|
@@ -2657,7 +2667,7 @@ function obsolete(options) {
|
|
|
2657
2667
|
obsoleteMessage[message] = 0;
|
|
2658
2668
|
}
|
|
2659
2669
|
// If descriptor is null it is a class
|
|
2660
|
-
const method = descriptor ?
|
|
2670
|
+
const method = descriptor ? { ...descriptor } : target;
|
|
2661
2671
|
if (!descriptor) {
|
|
2662
2672
|
// with es2015 classes we need to change our decoration tactic
|
|
2663
2673
|
class DecoratedClass extends method {
|
|
@@ -4471,11 +4481,17 @@ function fail(message) {
|
|
|
4471
4481
|
const range = (from, to) => Array.from(new Array(to - from + 1), (_x, i) => i + from);
|
|
4472
4482
|
/**
|
|
4473
4483
|
* Create a promise that resolves after a certain number of milliseconds
|
|
4484
|
+
*
|
|
4485
|
+
* It is strongly recommended you pass the excalibur clock so delays are bound to the
|
|
4486
|
+
* excalibur clock which would be unaffected by stop/pause.
|
|
4474
4487
|
* @param milliseconds
|
|
4488
|
+
* @param clock
|
|
4475
4489
|
*/
|
|
4476
|
-
function delay(milliseconds) {
|
|
4477
|
-
|
|
4478
|
-
|
|
4490
|
+
function delay(milliseconds, clock) {
|
|
4491
|
+
var _a;
|
|
4492
|
+
const schedule = (_a = clock === null || clock === void 0 ? void 0 : clock.schedule.bind(clock)) !== null && _a !== void 0 ? _a : setTimeout;
|
|
4493
|
+
return new Promise(resolve => {
|
|
4494
|
+
schedule(() => {
|
|
4479
4495
|
resolve();
|
|
4480
4496
|
}, milliseconds);
|
|
4481
4497
|
});
|
|
@@ -6527,7 +6543,11 @@ class Canvas extends Raster {
|
|
|
6527
6543
|
return this._ctx;
|
|
6528
6544
|
}
|
|
6529
6545
|
clone() {
|
|
6530
|
-
return new Canvas(
|
|
6546
|
+
return new Canvas({
|
|
6547
|
+
...this._options,
|
|
6548
|
+
...this.cloneGraphicOptions(),
|
|
6549
|
+
...this.cloneRasterOptions()
|
|
6550
|
+
});
|
|
6531
6551
|
}
|
|
6532
6552
|
execute(ctx) {
|
|
6533
6553
|
var _a, _b;
|
|
@@ -7476,15 +7496,6 @@ Fill = SpriteEffects_decorate([
|
|
|
7476
7496
|
|
|
7477
7497
|
|
|
7478
7498
|
;// CONCATENATED MODULE: ./Drawing/Texture.ts
|
|
7479
|
-
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7480
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7481
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7482
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7483
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7484
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7485
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
7486
|
-
});
|
|
7487
|
-
};
|
|
7488
7499
|
|
|
7489
7500
|
|
|
7490
7501
|
/**
|
|
@@ -7521,35 +7532,33 @@ class Texture {
|
|
|
7521
7532
|
/**
|
|
7522
7533
|
* Begins loading the texture and returns a promise to be resolved on completion
|
|
7523
7534
|
*/
|
|
7524
|
-
load() {
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7528
|
-
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
url = URL.createObjectURL(blob);
|
|
7532
|
-
}
|
|
7533
|
-
else {
|
|
7534
|
-
url = this.path;
|
|
7535
|
-
}
|
|
7536
|
-
// Decode the image
|
|
7537
|
-
const image = new Image();
|
|
7538
|
-
image.src = url;
|
|
7539
|
-
yield image.decode();
|
|
7540
|
-
// Set results
|
|
7541
|
-
this.data = image;
|
|
7542
|
-
this.width = this._sprite.width = image.naturalWidth;
|
|
7543
|
-
this.height = this._sprite.height = image.naturalHeight;
|
|
7544
|
-
this._sprite = new Sprite_Sprite(this, 0, 0, this.width, this.height);
|
|
7545
|
-
}
|
|
7546
|
-
catch (_a) {
|
|
7547
|
-
yield Promise.reject('Error loading texture');
|
|
7535
|
+
async load() {
|
|
7536
|
+
try {
|
|
7537
|
+
// Load base64 or blob if needed
|
|
7538
|
+
let url;
|
|
7539
|
+
if (!this.path.includes('data:image/')) {
|
|
7540
|
+
const blob = await this._resource.load();
|
|
7541
|
+
url = URL.createObjectURL(blob);
|
|
7548
7542
|
}
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7543
|
+
else {
|
|
7544
|
+
url = this.path;
|
|
7545
|
+
}
|
|
7546
|
+
// Decode the image
|
|
7547
|
+
const image = new Image();
|
|
7548
|
+
image.src = url;
|
|
7549
|
+
await image.decode();
|
|
7550
|
+
// Set results
|
|
7551
|
+
this.data = image;
|
|
7552
|
+
this.width = this._sprite.width = image.naturalWidth;
|
|
7553
|
+
this.height = this._sprite.height = image.naturalHeight;
|
|
7554
|
+
this._sprite = new Sprite_Sprite(this, 0, 0, this.width, this.height);
|
|
7555
|
+
}
|
|
7556
|
+
catch (_a) {
|
|
7557
|
+
await Promise.reject('Error loading texture');
|
|
7558
|
+
}
|
|
7559
|
+
// todo emit complete
|
|
7560
|
+
this._loadedResolve(this.data);
|
|
7561
|
+
return this.data;
|
|
7553
7562
|
}
|
|
7554
7563
|
asSprite() {
|
|
7555
7564
|
return this._sprite;
|
|
@@ -7596,15 +7605,6 @@ var Sprite_decorate = (undefined && undefined.__decorate) || function (decorator
|
|
|
7596
7605
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
7597
7606
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7598
7607
|
};
|
|
7599
|
-
var Sprite_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7600
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7601
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7602
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7603
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7604
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7605
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
7606
|
-
});
|
|
7607
|
-
};
|
|
7608
7608
|
|
|
7609
7609
|
|
|
7610
7610
|
|
|
@@ -7684,21 +7684,19 @@ class SpriteImpl {
|
|
|
7684
7684
|
get drawHeight() {
|
|
7685
7685
|
return Math.abs(this.height * this.scale.y);
|
|
7686
7686
|
}
|
|
7687
|
-
_initPixelsFromTexture() {
|
|
7688
|
-
|
|
7689
|
-
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7696
|
-
|
|
7697
|
-
|
|
7698
|
-
|
|
7699
|
-
|
|
7700
|
-
}
|
|
7701
|
-
});
|
|
7687
|
+
async _initPixelsFromTexture() {
|
|
7688
|
+
try {
|
|
7689
|
+
const image = await this.texture.loaded;
|
|
7690
|
+
this.width = this.width || image.naturalWidth;
|
|
7691
|
+
this.height = this.height || image.naturalHeight;
|
|
7692
|
+
this._spriteCanvas.width = this._spriteCanvas.width || image.naturalWidth;
|
|
7693
|
+
this._spriteCanvas.height = this._spriteCanvas.height || image.naturalHeight;
|
|
7694
|
+
this._loadPixels();
|
|
7695
|
+
this._dirtyEffect = true;
|
|
7696
|
+
}
|
|
7697
|
+
catch (e) {
|
|
7698
|
+
this.logger.error('Error loading texture ', this.texture.path, e);
|
|
7699
|
+
}
|
|
7702
7700
|
}
|
|
7703
7701
|
_loadPixels() {
|
|
7704
7702
|
if (this.texture.isLoaded() && !this._pixelsLoaded) {
|
|
@@ -7870,7 +7868,17 @@ class SpriteImpl {
|
|
|
7870
7868
|
}
|
|
7871
7869
|
_drawWithOptions(options) {
|
|
7872
7870
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
7873
|
-
const { ctx, x, y, rotation, drawWidth, drawHeight, anchor, offset, opacity, flipHorizontal, flipVertical } =
|
|
7871
|
+
const { ctx, x, y, rotation, drawWidth, drawHeight, anchor, offset, opacity, flipHorizontal, flipVertical } = {
|
|
7872
|
+
...options,
|
|
7873
|
+
rotation: (_a = options.rotation) !== null && _a !== void 0 ? _a : this.rotation,
|
|
7874
|
+
drawWidth: (_b = options.drawWidth) !== null && _b !== void 0 ? _b : this.width,
|
|
7875
|
+
drawHeight: (_c = options.drawHeight) !== null && _c !== void 0 ? _c : this.height,
|
|
7876
|
+
flipHorizontal: (_d = options.flipHorizontal) !== null && _d !== void 0 ? _d : this.flipHorizontal,
|
|
7877
|
+
flipVertical: (_e = options.flipVertical) !== null && _e !== void 0 ? _e : this.flipVertical,
|
|
7878
|
+
anchor: (_f = options.anchor) !== null && _f !== void 0 ? _f : this.anchor,
|
|
7879
|
+
offset: (_g = options.offset) !== null && _g !== void 0 ? _g : this.offset,
|
|
7880
|
+
opacity: ((_h = options.opacity) !== null && _h !== void 0 ? _h : 1) * ((_j = this._opacity) !== null && _j !== void 0 ? _j : 1)
|
|
7881
|
+
};
|
|
7874
7882
|
if (this._dirtyEffect) {
|
|
7875
7883
|
this._applyEffects();
|
|
7876
7884
|
}
|
|
@@ -8038,20 +8046,16 @@ class Sprite extends Graphic {
|
|
|
8038
8046
|
return new Sprite_Sprite(tex, sprite.sourceView.x, sprite.sourceView.y, sprite.sourceView.width, sprite.sourceView.height);
|
|
8039
8047
|
}
|
|
8040
8048
|
clone() {
|
|
8041
|
-
return new Sprite(
|
|
8049
|
+
return new Sprite({
|
|
8050
|
+
image: this.image,
|
|
8051
|
+
sourceView: { ...this.sourceView },
|
|
8052
|
+
destSize: { ...this.destSize },
|
|
8053
|
+
...this.cloneGraphicOptions()
|
|
8054
|
+
});
|
|
8042
8055
|
}
|
|
8043
8056
|
}
|
|
8044
8057
|
|
|
8045
8058
|
;// CONCATENATED MODULE: ./Graphics/ImageSource.ts
|
|
8046
|
-
var ImageSource_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8047
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8048
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8049
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8050
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8051
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8052
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8053
|
-
});
|
|
8054
|
-
};
|
|
8055
8059
|
|
|
8056
8060
|
|
|
8057
8061
|
|
|
@@ -8100,35 +8104,33 @@ class ImageSource {
|
|
|
8100
8104
|
/**
|
|
8101
8105
|
* Begins loading the image and returns a promise that resolves when the image is loaded
|
|
8102
8106
|
*/
|
|
8103
|
-
load() {
|
|
8104
|
-
|
|
8105
|
-
if (this.isLoaded()) {
|
|
8106
|
-
return this.data;
|
|
8107
|
-
}
|
|
8108
|
-
try {
|
|
8109
|
-
// Load base64 or blob if needed
|
|
8110
|
-
let url;
|
|
8111
|
-
if (!this.path.includes('data:image/')) {
|
|
8112
|
-
const blob = yield this._resource.load();
|
|
8113
|
-
url = URL.createObjectURL(blob);
|
|
8114
|
-
}
|
|
8115
|
-
else {
|
|
8116
|
-
url = this.path;
|
|
8117
|
-
}
|
|
8118
|
-
// Decode the image
|
|
8119
|
-
const image = new Image();
|
|
8120
|
-
image.src = url;
|
|
8121
|
-
yield image.decode();
|
|
8122
|
-
// Set results
|
|
8123
|
-
this.data = image;
|
|
8124
|
-
}
|
|
8125
|
-
catch (error) {
|
|
8126
|
-
throw `Error loading ImageSource from path '${this.path}' with error [${error.message}]`;
|
|
8127
|
-
}
|
|
8128
|
-
// todo emit complete
|
|
8129
|
-
this._loadedResolve(this.data);
|
|
8107
|
+
async load() {
|
|
8108
|
+
if (this.isLoaded()) {
|
|
8130
8109
|
return this.data;
|
|
8131
|
-
}
|
|
8110
|
+
}
|
|
8111
|
+
try {
|
|
8112
|
+
// Load base64 or blob if needed
|
|
8113
|
+
let url;
|
|
8114
|
+
if (!this.path.includes('data:image/')) {
|
|
8115
|
+
const blob = await this._resource.load();
|
|
8116
|
+
url = URL.createObjectURL(blob);
|
|
8117
|
+
}
|
|
8118
|
+
else {
|
|
8119
|
+
url = this.path;
|
|
8120
|
+
}
|
|
8121
|
+
// Decode the image
|
|
8122
|
+
const image = new Image();
|
|
8123
|
+
image.src = url;
|
|
8124
|
+
await image.decode();
|
|
8125
|
+
// Set results
|
|
8126
|
+
this.data = image;
|
|
8127
|
+
}
|
|
8128
|
+
catch (error) {
|
|
8129
|
+
throw `Error loading ImageSource from path '${this.path}' with error [${error.message}]`;
|
|
8130
|
+
}
|
|
8131
|
+
// todo emit complete
|
|
8132
|
+
this._loadedResolve(this.data);
|
|
8133
|
+
return this.data;
|
|
8132
8134
|
}
|
|
8133
8135
|
/**
|
|
8134
8136
|
* Build a sprite from this ImageSource
|
|
@@ -8401,7 +8403,16 @@ class AnimationImpl {
|
|
|
8401
8403
|
}
|
|
8402
8404
|
_drawWithOptions(options) {
|
|
8403
8405
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
8404
|
-
const animOptions =
|
|
8406
|
+
const animOptions = {
|
|
8407
|
+
...options,
|
|
8408
|
+
rotation: (_a = options.rotation) !== null && _a !== void 0 ? _a : this.rotation,
|
|
8409
|
+
drawWidth: (_b = options.drawWidth) !== null && _b !== void 0 ? _b : this.drawWidth,
|
|
8410
|
+
drawHeight: (_c = options.drawHeight) !== null && _c !== void 0 ? _c : this.drawHeight,
|
|
8411
|
+
flipHorizontal: (_d = options.flipHorizontal) !== null && _d !== void 0 ? _d : this.flipHorizontal,
|
|
8412
|
+
flipVertical: (_e = options.flipVertical) !== null && _e !== void 0 ? _e : this.flipVertical,
|
|
8413
|
+
anchor: (_f = options.anchor) !== null && _f !== void 0 ? _f : this.anchor,
|
|
8414
|
+
opacity: ((_g = options.opacity) !== null && _g !== void 0 ? _g : 1) * ((_h = this._opacity) !== null && _h !== void 0 ? _h : 1)
|
|
8415
|
+
};
|
|
8405
8416
|
this._updateValues();
|
|
8406
8417
|
let currSprite;
|
|
8407
8418
|
if (this.currentFrame < this.sprites.length) {
|
|
@@ -9060,8 +9071,8 @@ class SpriteSheet {
|
|
|
9060
9071
|
const sprites = [];
|
|
9061
9072
|
options.spacing = (_a = options.spacing) !== null && _a !== void 0 ? _a : {};
|
|
9062
9073
|
const { image, grid: { rows, columns: cols, spriteWidth, spriteHeight }, spacing: { originOffset, margin } } = options;
|
|
9063
|
-
const offsetDefaults =
|
|
9064
|
-
const marginDefaults =
|
|
9074
|
+
const offsetDefaults = { x: 0, y: 0, ...originOffset };
|
|
9075
|
+
const marginDefaults = { x: 0, y: 0, ...margin };
|
|
9065
9076
|
for (let x = 0; x < cols; x++) {
|
|
9066
9077
|
for (let y = 0; y < rows; y++) {
|
|
9067
9078
|
sprites[x + y * cols] = new Sprite({
|
|
@@ -9277,10 +9288,10 @@ class ExcaliburGraphicsContextWebGLDebug {
|
|
|
9277
9288
|
* @param height
|
|
9278
9289
|
*/
|
|
9279
9290
|
drawRect(x, y, width, height, rectOptions = { color: Color.Black }) {
|
|
9280
|
-
this.drawLine(vec(x, y), vec(x + width, y),
|
|
9281
|
-
this.drawLine(vec(x + width, y), vec(x + width, y + height),
|
|
9282
|
-
this.drawLine(vec(x + width, y + height), vec(x, y + height),
|
|
9283
|
-
this.drawLine(vec(x, y + height), vec(x, y),
|
|
9291
|
+
this.drawLine(vec(x, y), vec(x + width, y), { ...rectOptions });
|
|
9292
|
+
this.drawLine(vec(x + width, y), vec(x + width, y + height), { ...rectOptions });
|
|
9293
|
+
this.drawLine(vec(x + width, y + height), vec(x, y + height), { ...rectOptions });
|
|
9294
|
+
this.drawLine(vec(x, y + height), vec(x, y), { ...rectOptions });
|
|
9284
9295
|
}
|
|
9285
9296
|
/**
|
|
9286
9297
|
* Draw a debugging line to the context
|
|
@@ -9586,7 +9597,7 @@ class Screen {
|
|
|
9586
9597
|
this._devicePixelRatio = this._calculateDevicePixelRatio();
|
|
9587
9598
|
this._alreadyWarned = false;
|
|
9588
9599
|
this.viewport = options.viewport;
|
|
9589
|
-
this.resolution = (_a = options.resolution) !== null && _a !== void 0 ? _a :
|
|
9600
|
+
this.resolution = (_a = options.resolution) !== null && _a !== void 0 ? _a : { ...this.viewport };
|
|
9590
9601
|
this._displayMode = (_b = options.displayMode) !== null && _b !== void 0 ? _b : DisplayMode.Fixed;
|
|
9591
9602
|
this._canvas = options.canvas;
|
|
9592
9603
|
this._ctx = options.context;
|
|
@@ -9682,8 +9693,8 @@ class Screen {
|
|
|
9682
9693
|
pushResolutionAndViewport() {
|
|
9683
9694
|
this._resolutionStack.push(this.resolution);
|
|
9684
9695
|
this._viewportStack.push(this.viewport);
|
|
9685
|
-
this.resolution =
|
|
9686
|
-
this.viewport =
|
|
9696
|
+
this.resolution = { ...this.resolution };
|
|
9697
|
+
this.viewport = { ...this.viewport };
|
|
9687
9698
|
}
|
|
9688
9699
|
peekViewport() {
|
|
9689
9700
|
return this._viewportStack[this._viewportStack.length - 1];
|
|
@@ -10351,15 +10362,6 @@ function circle(ctx, x, y, radius, stroke = Color.White, fill = null) {
|
|
|
10351
10362
|
// EXTERNAL MODULE: ./Loader.css
|
|
10352
10363
|
var Loader_0 = __webpack_require__(1388);
|
|
10353
10364
|
;// CONCATENATED MODULE: ./Loader.ts
|
|
10354
|
-
var Loader_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
10355
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10356
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10357
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10358
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10359
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10360
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10361
|
-
});
|
|
10362
|
-
};
|
|
10363
10365
|
|
|
10364
10366
|
|
|
10365
10367
|
|
|
@@ -10483,6 +10485,9 @@ class Loader extends Class {
|
|
|
10483
10485
|
buttonElement.style.display = 'none';
|
|
10484
10486
|
return buttonElement;
|
|
10485
10487
|
};
|
|
10488
|
+
this._isLoadedPromise = new Promise(resolve => {
|
|
10489
|
+
this._isLoadedResolve = resolve;
|
|
10490
|
+
});
|
|
10486
10491
|
if (loadables) {
|
|
10487
10492
|
this.addResources(loadables);
|
|
10488
10493
|
}
|
|
@@ -10558,17 +10563,18 @@ class Loader extends Class {
|
|
|
10558
10563
|
/**
|
|
10559
10564
|
* Shows the play button and returns a promise that resolves when clicked
|
|
10560
10565
|
*/
|
|
10561
|
-
showPlayButton() {
|
|
10562
|
-
var _a;
|
|
10566
|
+
async showPlayButton() {
|
|
10567
|
+
var _a, _b;
|
|
10563
10568
|
if (this.suppressPlayButton) {
|
|
10564
10569
|
this.hidePlayButton();
|
|
10565
|
-
|
|
10570
|
+
// Delay is to give the logo a chance to show, otherwise don't delay
|
|
10571
|
+
await delay(500, (_a = this._engine) === null || _a === void 0 ? void 0 : _a.clock);
|
|
10566
10572
|
}
|
|
10567
10573
|
else {
|
|
10568
10574
|
const resizeHandler = () => {
|
|
10569
10575
|
this._positionPlayButton();
|
|
10570
10576
|
};
|
|
10571
|
-
if ((
|
|
10577
|
+
if ((_b = this._engine) === null || _b === void 0 ? void 0 : _b.browser) {
|
|
10572
10578
|
this._engine.browser.window.on('resize', resizeHandler);
|
|
10573
10579
|
}
|
|
10574
10580
|
this._playButtonShown = true;
|
|
@@ -10578,7 +10584,8 @@ class Loader extends Class {
|
|
|
10578
10584
|
this._playButton.click();
|
|
10579
10585
|
}
|
|
10580
10586
|
});
|
|
10581
|
-
|
|
10587
|
+
this._positionPlayButton();
|
|
10588
|
+
const playButtonClicked = new Promise((resolve) => {
|
|
10582
10589
|
const startButtonHandler = (e) => {
|
|
10583
10590
|
var _a;
|
|
10584
10591
|
// We want to stop propogation to keep bubbling to the engine pointer handlers
|
|
@@ -10594,7 +10601,7 @@ class Loader extends Class {
|
|
|
10594
10601
|
this._playButton.addEventListener('touchend', startButtonHandler);
|
|
10595
10602
|
this._playButton.addEventListener('pointerup', startButtonHandler);
|
|
10596
10603
|
});
|
|
10597
|
-
return
|
|
10604
|
+
return await playButtonClicked;
|
|
10598
10605
|
}
|
|
10599
10606
|
}
|
|
10600
10607
|
hidePlayButton() {
|
|
@@ -10617,25 +10624,29 @@ class Loader extends Class {
|
|
|
10617
10624
|
update(_engine, _delta) {
|
|
10618
10625
|
// override me
|
|
10619
10626
|
}
|
|
10627
|
+
areResourcesLoaded() {
|
|
10628
|
+
return this._isLoadedPromise;
|
|
10629
|
+
}
|
|
10620
10630
|
/**
|
|
10621
10631
|
* Begin loading all of the supplied resources, returning a promise
|
|
10622
|
-
* that resolves when loading of all is complete
|
|
10632
|
+
* that resolves when loading of all is complete AND the user has clicked the "Play button"
|
|
10623
10633
|
*/
|
|
10624
|
-
load() {
|
|
10625
|
-
|
|
10626
|
-
|
|
10627
|
-
|
|
10628
|
-
|
|
10629
|
-
|
|
10630
|
-
|
|
10631
|
-
|
|
10632
|
-
|
|
10633
|
-
|
|
10634
|
-
|
|
10635
|
-
|
|
10636
|
-
|
|
10637
|
-
|
|
10638
|
-
|
|
10634
|
+
async load() {
|
|
10635
|
+
var _a, _b;
|
|
10636
|
+
await ((_a = this._image) === null || _a === void 0 ? void 0 : _a.decode()); // decode logo if it exists
|
|
10637
|
+
await Promise.all(this._resourceList.map((r) => r.load().finally(() => {
|
|
10638
|
+
// capture progress
|
|
10639
|
+
this._numLoaded++;
|
|
10640
|
+
})));
|
|
10641
|
+
this._isLoadedResolve();
|
|
10642
|
+
// short delay in showing the button for aesthetics
|
|
10643
|
+
await delay(200, (_b = this._engine) === null || _b === void 0 ? void 0 : _b.clock);
|
|
10644
|
+
await this.showPlayButton();
|
|
10645
|
+
// Unlock browser AudioContext in after user gesture
|
|
10646
|
+
// See: https://github.com/excaliburjs/Excalibur/issues/262
|
|
10647
|
+
// See: https://github.com/excaliburjs/Excalibur/issues/1031
|
|
10648
|
+
await WebAudio.unlock();
|
|
10649
|
+
return (this.data = this._resourceList);
|
|
10639
10650
|
}
|
|
10640
10651
|
markResourceComplete() {
|
|
10641
10652
|
this._numLoaded++;
|
|
@@ -15710,7 +15721,7 @@ class GraphicsLayer {
|
|
|
15710
15721
|
* @param options
|
|
15711
15722
|
*/
|
|
15712
15723
|
show(nameOrGraphic, options) {
|
|
15713
|
-
options =
|
|
15724
|
+
options = { ...options };
|
|
15714
15725
|
let gfx;
|
|
15715
15726
|
if (nameOrGraphic instanceof Graphic) {
|
|
15716
15727
|
gfx = this._graphics.copyGraphics ? nameOrGraphic.clone() : nameOrGraphic;
|
|
@@ -15735,7 +15746,7 @@ class GraphicsLayer {
|
|
|
15735
15746
|
* @param options
|
|
15736
15747
|
*/
|
|
15737
15748
|
use(nameOrGraphic, options) {
|
|
15738
|
-
options =
|
|
15749
|
+
options = { ...options };
|
|
15739
15750
|
this.hide();
|
|
15740
15751
|
return this.show(nameOrGraphic, options);
|
|
15741
15752
|
}
|
|
@@ -15842,7 +15853,10 @@ class GraphicsComponent extends Component {
|
|
|
15842
15853
|
this.copyGraphics = false;
|
|
15843
15854
|
this._bounds = null;
|
|
15844
15855
|
// Defaults
|
|
15845
|
-
options =
|
|
15856
|
+
options = {
|
|
15857
|
+
visible: this.visible,
|
|
15858
|
+
...options
|
|
15859
|
+
};
|
|
15846
15860
|
const { current, anchor, opacity, visible, graphics, offset, copyGraphics, onPreDraw, onPostDraw } = options;
|
|
15847
15861
|
this._graphics = graphics || {};
|
|
15848
15862
|
this.offset = offset !== null && offset !== void 0 ? offset : this.offset;
|
|
@@ -15966,7 +15980,12 @@ class Rectangle extends Raster {
|
|
|
15966
15980
|
this.rasterize();
|
|
15967
15981
|
}
|
|
15968
15982
|
clone() {
|
|
15969
|
-
return new Rectangle(
|
|
15983
|
+
return new Rectangle({
|
|
15984
|
+
width: this.width,
|
|
15985
|
+
height: this.height,
|
|
15986
|
+
...this.cloneGraphicOptions(),
|
|
15987
|
+
...this.cloneRasterOptions()
|
|
15988
|
+
});
|
|
15970
15989
|
}
|
|
15971
15990
|
execute(ctx) {
|
|
15972
15991
|
if (this.color) {
|
|
@@ -16002,7 +16021,11 @@ class Circle extends Raster {
|
|
|
16002
16021
|
this.flagDirty();
|
|
16003
16022
|
}
|
|
16004
16023
|
clone() {
|
|
16005
|
-
return new Circle(
|
|
16024
|
+
return new Circle({
|
|
16025
|
+
radius: this.radius,
|
|
16026
|
+
...this.cloneGraphicOptions(),
|
|
16027
|
+
...this.cloneRasterOptions()
|
|
16028
|
+
});
|
|
16006
16029
|
}
|
|
16007
16030
|
execute(ctx) {
|
|
16008
16031
|
if (this.radius > 0) {
|
|
@@ -17686,7 +17709,9 @@ class Actor extends Entity {
|
|
|
17686
17709
|
* @deprecated will be removed in v0.26.0
|
|
17687
17710
|
*/
|
|
17688
17711
|
this.traits = [];
|
|
17689
|
-
const { name, x, y, pos, scale, width, height, radius, collider, vel, acc, rotation, angularVelocity, z, color, visible, anchor, collisionType, collisionGroup } =
|
|
17712
|
+
const { name, x, y, pos, scale, width, height, radius, collider, vel, acc, rotation, angularVelocity, z, color, visible, anchor, collisionType, collisionGroup } = {
|
|
17713
|
+
...config
|
|
17714
|
+
};
|
|
17690
17715
|
this._setName(name);
|
|
17691
17716
|
this.anchor = anchor !== null && anchor !== void 0 ? anchor : Actor.defaults.anchor.clone();
|
|
17692
17717
|
this.addComponent(new TransformComponent());
|
|
@@ -18405,7 +18430,7 @@ Actor_decorate([
|
|
|
18405
18430
|
*/
|
|
18406
18431
|
class ScreenElement_ScreenElement extends Actor {
|
|
18407
18432
|
constructor(config) {
|
|
18408
|
-
super(
|
|
18433
|
+
super({ ...config });
|
|
18409
18434
|
this.get(TransformComponent).coordPlane = CoordPlane.Screen;
|
|
18410
18435
|
this.anchor = vec(0, 0);
|
|
18411
18436
|
this.body.collisionType = CollisionType.PreventCollision;
|
|
@@ -19789,7 +19814,10 @@ class Trigger_Trigger extends Actor {
|
|
|
19789
19814
|
* Number of times to repeat before killing the trigger,
|
|
19790
19815
|
*/
|
|
19791
19816
|
this.repeat = -1;
|
|
19792
|
-
opts =
|
|
19817
|
+
opts = {
|
|
19818
|
+
...triggerDefaults,
|
|
19819
|
+
...opts
|
|
19820
|
+
};
|
|
19793
19821
|
this.filter = opts.filter || this.filter;
|
|
19794
19822
|
this.repeat = opts.repeat || this.repeat;
|
|
19795
19823
|
this.action = opts.action || this.action;
|
|
@@ -20299,12 +20327,11 @@ class SystemManager {
|
|
|
20299
20327
|
}
|
|
20300
20328
|
}
|
|
20301
20329
|
/**
|
|
20302
|
-
*
|
|
20303
|
-
*
|
|
20304
|
-
*
|
|
20305
|
-
* @param delta time in milliseconds
|
|
20330
|
+
* Initialize all systems in the manager
|
|
20331
|
+
*
|
|
20332
|
+
* Systems added after initialize() will be initialized on add
|
|
20306
20333
|
*/
|
|
20307
|
-
|
|
20334
|
+
initialize() {
|
|
20308
20335
|
if (!this.initialized) {
|
|
20309
20336
|
this.initialized = true;
|
|
20310
20337
|
for (const s of this.systems) {
|
|
@@ -20313,6 +20340,14 @@ class SystemManager {
|
|
|
20313
20340
|
}
|
|
20314
20341
|
}
|
|
20315
20342
|
}
|
|
20343
|
+
}
|
|
20344
|
+
/**
|
|
20345
|
+
* Updates all systems
|
|
20346
|
+
* @param type whether this is an update or draw system
|
|
20347
|
+
* @param context context reference
|
|
20348
|
+
* @param delta time in milliseconds
|
|
20349
|
+
*/
|
|
20350
|
+
updateSystems(type, context, delta) {
|
|
20316
20351
|
const systems = this.systems.filter((s) => s.systemType === type);
|
|
20317
20352
|
for (const s of systems) {
|
|
20318
20353
|
if (s.preupdate) {
|
|
@@ -21108,7 +21143,13 @@ class Animation extends Graphic {
|
|
|
21108
21143
|
this.goToFrame(0);
|
|
21109
21144
|
}
|
|
21110
21145
|
clone() {
|
|
21111
|
-
return new Animation(
|
|
21146
|
+
return new Animation({
|
|
21147
|
+
frames: this.frames.map((f) => ({ ...f })),
|
|
21148
|
+
frameDuration: this.frameDuration,
|
|
21149
|
+
reverse: this._reversed,
|
|
21150
|
+
strategy: this.strategy,
|
|
21151
|
+
...this.cloneGraphicOptions()
|
|
21152
|
+
});
|
|
21112
21153
|
}
|
|
21113
21154
|
/**
|
|
21114
21155
|
* Create an Animation from a [[SpriteSheet]], a list of indices into the sprite sheet, a duration per frame
|
|
@@ -21354,7 +21395,10 @@ class GraphicsGroup extends Graphic {
|
|
|
21354
21395
|
this._updateDimensions();
|
|
21355
21396
|
}
|
|
21356
21397
|
clone() {
|
|
21357
|
-
return new GraphicsGroup(
|
|
21398
|
+
return new GraphicsGroup({
|
|
21399
|
+
members: [...this.members],
|
|
21400
|
+
...this.cloneGraphicOptions()
|
|
21401
|
+
});
|
|
21358
21402
|
}
|
|
21359
21403
|
_updateDimensions() {
|
|
21360
21404
|
let bb = new BoundingBox();
|
|
@@ -21695,7 +21739,7 @@ class ParticleEmitter extends Actor {
|
|
|
21695
21739
|
* Indicates whether particles should start with a random rotation
|
|
21696
21740
|
*/
|
|
21697
21741
|
this.randomRotation = false;
|
|
21698
|
-
const { x, y, pos, isEmitting, minVel, maxVel, acceleration, minAngle, maxAngle, emitRate, particleLife, opacity, fadeFlag, focus, focusAccel, startSize, endSize, minSize, maxSize, beginColor, endColor, particleSprite, emitterType, radius, particleRotationalVelocity, randomRotation, random } =
|
|
21742
|
+
const { x, y, pos, isEmitting, minVel, maxVel, acceleration, minAngle, maxAngle, emitRate, particleLife, opacity, fadeFlag, focus, focusAccel, startSize, endSize, minSize, maxSize, beginColor, endColor, particleSprite, emitterType, radius, particleRotationalVelocity, randomRotation, random } = { ...config };
|
|
21699
21743
|
this.pos = pos !== null && pos !== void 0 ? pos : vec(x !== null && x !== void 0 ? x : 0, y !== null && y !== void 0 ? y : 0);
|
|
21700
21744
|
this.isEmitting = isEmitting !== null && isEmitting !== void 0 ? isEmitting : this.isEmitting;
|
|
21701
21745
|
this.minVel = minVel !== null && minVel !== void 0 ? minVel : this.minVel;
|
|
@@ -22765,6 +22809,7 @@ class Scene extends Class {
|
|
|
22765
22809
|
this.engine = engine;
|
|
22766
22810
|
// Initialize camera first
|
|
22767
22811
|
this.camera._initialize(engine);
|
|
22812
|
+
this.world.systemManager.initialize();
|
|
22768
22813
|
// This order is important! we want to be sure any custom init that add actors
|
|
22769
22814
|
// fire before the actor init
|
|
22770
22815
|
this.onInitialize.call(this, engine);
|
|
@@ -23354,6 +23399,41 @@ class Debug {
|
|
|
23354
23399
|
this._engine = engine;
|
|
23355
23400
|
this.colorBlindMode = new ColorBlindFlags(this._engine);
|
|
23356
23401
|
}
|
|
23402
|
+
/**
|
|
23403
|
+
* Switch the current excalibur clock with the [[TestClock]] and return
|
|
23404
|
+
* it in the same running state.
|
|
23405
|
+
*
|
|
23406
|
+
* This is useful when you need to debug frame by frame.
|
|
23407
|
+
*/
|
|
23408
|
+
useTestClock() {
|
|
23409
|
+
const clock = this._engine.clock;
|
|
23410
|
+
const wasRunning = clock.isRunning();
|
|
23411
|
+
clock.stop();
|
|
23412
|
+
const testClock = clock.toTestClock();
|
|
23413
|
+
if (wasRunning) {
|
|
23414
|
+
testClock.start();
|
|
23415
|
+
}
|
|
23416
|
+
this._engine.clock = testClock;
|
|
23417
|
+
return testClock;
|
|
23418
|
+
}
|
|
23419
|
+
/**
|
|
23420
|
+
* Switch the current excalibur clock with the [[StandardClock]] and
|
|
23421
|
+
* return it in the same runnign state.
|
|
23422
|
+
*
|
|
23423
|
+
* This is useful when you need to switch back to normal mode after
|
|
23424
|
+
* debugging.
|
|
23425
|
+
*/
|
|
23426
|
+
useStandardClock() {
|
|
23427
|
+
const currentClock = this._engine.clock;
|
|
23428
|
+
const wasRunning = currentClock.isRunning();
|
|
23429
|
+
currentClock.stop();
|
|
23430
|
+
const standardClock = currentClock.toStandardClock();
|
|
23431
|
+
if (wasRunning) {
|
|
23432
|
+
standardClock.start();
|
|
23433
|
+
}
|
|
23434
|
+
this._engine.clock = standardClock;
|
|
23435
|
+
return standardClock;
|
|
23436
|
+
}
|
|
23357
23437
|
}
|
|
23358
23438
|
/**
|
|
23359
23439
|
* Implementation of a frame's stats. Meant to have values copied via [[FrameStats.reset]], avoid
|
|
@@ -25028,6 +25108,264 @@ class PointerEventReceiver extends Class {
|
|
|
25028
25108
|
}
|
|
25029
25109
|
}
|
|
25030
25110
|
|
|
25111
|
+
;// CONCATENATED MODULE: ./Util/Fps.ts
|
|
25112
|
+
class FpsSampler {
|
|
25113
|
+
constructor(options) {
|
|
25114
|
+
var _a;
|
|
25115
|
+
this._samplePeriod = 100;
|
|
25116
|
+
this._currentFrameTime = 0;
|
|
25117
|
+
this._frames = 0;
|
|
25118
|
+
this._previousSampleTime = 0;
|
|
25119
|
+
this._beginFrameTime = 0;
|
|
25120
|
+
this._fps = options.initialFps;
|
|
25121
|
+
this._samplePeriod = (_a = options.samplePeriod) !== null && _a !== void 0 ? _a : this._samplePeriod;
|
|
25122
|
+
this._currentFrameTime = 1000 / options.initialFps;
|
|
25123
|
+
this._nowFn = options.nowFn;
|
|
25124
|
+
this._previousSampleTime = this._nowFn();
|
|
25125
|
+
}
|
|
25126
|
+
/**
|
|
25127
|
+
* Start of code block to sample FPS for
|
|
25128
|
+
*/
|
|
25129
|
+
start() {
|
|
25130
|
+
this._beginFrameTime = this._nowFn();
|
|
25131
|
+
}
|
|
25132
|
+
/**
|
|
25133
|
+
* End of code block to sample FPS for
|
|
25134
|
+
*/
|
|
25135
|
+
end() {
|
|
25136
|
+
this._frames++;
|
|
25137
|
+
const time = this._nowFn();
|
|
25138
|
+
this._currentFrameTime = time - this._beginFrameTime;
|
|
25139
|
+
if (time >= this._previousSampleTime + this._samplePeriod) {
|
|
25140
|
+
this._fps = (this._frames * 1000) / (time - this._previousSampleTime);
|
|
25141
|
+
this._previousSampleTime = time;
|
|
25142
|
+
this._frames = 0;
|
|
25143
|
+
}
|
|
25144
|
+
}
|
|
25145
|
+
/**
|
|
25146
|
+
* Return the currenty sampled fps over the last sample period, by default every 100ms
|
|
25147
|
+
*/
|
|
25148
|
+
get fps() {
|
|
25149
|
+
return this._fps;
|
|
25150
|
+
}
|
|
25151
|
+
/**
|
|
25152
|
+
* Return the instantanteous fps, this can be less useful because it will fluctuate given the current frames time
|
|
25153
|
+
*/
|
|
25154
|
+
get instant() {
|
|
25155
|
+
return 1000 / this._currentFrameTime;
|
|
25156
|
+
}
|
|
25157
|
+
}
|
|
25158
|
+
|
|
25159
|
+
;// CONCATENATED MODULE: ./Util/Clock.ts
|
|
25160
|
+
|
|
25161
|
+
|
|
25162
|
+
/**
|
|
25163
|
+
* Abstract Clock is the base type of all Clocks
|
|
25164
|
+
*
|
|
25165
|
+
* It has a few opinions
|
|
25166
|
+
* 1. It manages the calculation of what "elapsed" time means and thus maximum fps
|
|
25167
|
+
* 2. The default timing api is implemented in now()
|
|
25168
|
+
*
|
|
25169
|
+
* To implement your own clock, extend Clock and override start/stop to start and stop the clock, then call update() with whatever
|
|
25170
|
+
* method is unique to your clock implementation.
|
|
25171
|
+
*/
|
|
25172
|
+
class Clock {
|
|
25173
|
+
constructor(options) {
|
|
25174
|
+
var _a, _b, _c;
|
|
25175
|
+
this._onFatalException = () => { };
|
|
25176
|
+
this._maxFps = Infinity;
|
|
25177
|
+
this._lastTime = 0;
|
|
25178
|
+
this._elapsed = 1;
|
|
25179
|
+
this._scheduledCbs = [];
|
|
25180
|
+
this._totalElapsed = 0;
|
|
25181
|
+
this._options = options;
|
|
25182
|
+
this.tick = options.tick;
|
|
25183
|
+
this._lastTime = (_a = this.now()) !== null && _a !== void 0 ? _a : 0;
|
|
25184
|
+
this._maxFps = (_b = options.maxFps) !== null && _b !== void 0 ? _b : this._maxFps;
|
|
25185
|
+
this._onFatalException = (_c = options.onFatalException) !== null && _c !== void 0 ? _c : this._onFatalException;
|
|
25186
|
+
this.fpsSampler = new FpsSampler({
|
|
25187
|
+
initialFps: 60,
|
|
25188
|
+
nowFn: () => this.now()
|
|
25189
|
+
});
|
|
25190
|
+
}
|
|
25191
|
+
/**
|
|
25192
|
+
* Get the elapsed time for the last completed frame
|
|
25193
|
+
*/
|
|
25194
|
+
elapsed() {
|
|
25195
|
+
return this._elapsed;
|
|
25196
|
+
}
|
|
25197
|
+
/**
|
|
25198
|
+
* Get the current time in milliseconds
|
|
25199
|
+
*/
|
|
25200
|
+
now() {
|
|
25201
|
+
return performance.now();
|
|
25202
|
+
}
|
|
25203
|
+
toTestClock() {
|
|
25204
|
+
const testClock = new TestClock({
|
|
25205
|
+
...this._options,
|
|
25206
|
+
defaultUpdateMs: 16.6
|
|
25207
|
+
});
|
|
25208
|
+
return testClock;
|
|
25209
|
+
}
|
|
25210
|
+
toStandardClock() {
|
|
25211
|
+
const clock = new StandardClock({
|
|
25212
|
+
...this._options
|
|
25213
|
+
});
|
|
25214
|
+
return clock;
|
|
25215
|
+
}
|
|
25216
|
+
/**
|
|
25217
|
+
* Schedule a callback to fire given a timeout in milliseconds using the excalibur [[Clock]]
|
|
25218
|
+
*
|
|
25219
|
+
* This is useful to use over the built in browser `setTimeout` because callbacks will be tied to the
|
|
25220
|
+
* excalibur update clock, instead of browser time, this means that callbacks wont fire if the game is
|
|
25221
|
+
* stopped or paused.
|
|
25222
|
+
*
|
|
25223
|
+
* @param cb callback to fire
|
|
25224
|
+
* @param timeoutMs Optionally specify a timeout in milliseconds from now, default is 0ms which means the next possible tick
|
|
25225
|
+
*/
|
|
25226
|
+
schedule(cb, timeoutMs = 0) {
|
|
25227
|
+
const scheduledTime = this.now() + timeoutMs;
|
|
25228
|
+
this._scheduledCbs.push([cb, scheduledTime]);
|
|
25229
|
+
}
|
|
25230
|
+
_runScheduledCbs() {
|
|
25231
|
+
// walk backwards to delete items as we loop
|
|
25232
|
+
for (let i = this._scheduledCbs.length - 1; i > -1; i--) {
|
|
25233
|
+
if (this._scheduledCbs[i][1] <= this._totalElapsed) {
|
|
25234
|
+
this._scheduledCbs[i][0]();
|
|
25235
|
+
this._scheduledCbs.splice(i, 1);
|
|
25236
|
+
}
|
|
25237
|
+
}
|
|
25238
|
+
}
|
|
25239
|
+
update(overrideUpdateMs) {
|
|
25240
|
+
try {
|
|
25241
|
+
this.fpsSampler.start();
|
|
25242
|
+
// Get the time to calculate time-elapsed
|
|
25243
|
+
const now = this.now();
|
|
25244
|
+
let elapsed = now - this._lastTime || 1; // first frame
|
|
25245
|
+
// Constrain fps
|
|
25246
|
+
const fpsInterval = this._maxFps === Infinity ? 0 : 1000 / this._maxFps;
|
|
25247
|
+
if (elapsed <= fpsInterval) {
|
|
25248
|
+
return; // too fast 😎 skip this frame
|
|
25249
|
+
}
|
|
25250
|
+
// Resolves issue #138 if the game has been paused, or blurred for
|
|
25251
|
+
// more than a 200 milliseconds, reset elapsed time to 1. This improves reliability
|
|
25252
|
+
// and provides more expected behavior when the engine comes back
|
|
25253
|
+
// into focus
|
|
25254
|
+
if (elapsed > 200) {
|
|
25255
|
+
elapsed = 1;
|
|
25256
|
+
}
|
|
25257
|
+
// tick the mainloop and run scheduled callbacks
|
|
25258
|
+
this._elapsed = overrideUpdateMs || elapsed;
|
|
25259
|
+
this._totalElapsed += this._elapsed;
|
|
25260
|
+
this._runScheduledCbs();
|
|
25261
|
+
this.tick(overrideUpdateMs || elapsed);
|
|
25262
|
+
// if fps interval is not a multple
|
|
25263
|
+
if (fpsInterval > 0) {
|
|
25264
|
+
this._lastTime = now - (elapsed % fpsInterval);
|
|
25265
|
+
}
|
|
25266
|
+
else {
|
|
25267
|
+
this._lastTime = now;
|
|
25268
|
+
}
|
|
25269
|
+
this.fpsSampler.end();
|
|
25270
|
+
}
|
|
25271
|
+
catch (e) {
|
|
25272
|
+
this._onFatalException(e);
|
|
25273
|
+
this.stop();
|
|
25274
|
+
}
|
|
25275
|
+
}
|
|
25276
|
+
}
|
|
25277
|
+
/**
|
|
25278
|
+
* The [[StandardClock]] implements the requestAnimationFrame browser api to run the tick()
|
|
25279
|
+
*/
|
|
25280
|
+
class StandardClock extends Clock {
|
|
25281
|
+
constructor(options) {
|
|
25282
|
+
super(options);
|
|
25283
|
+
this._running = false;
|
|
25284
|
+
}
|
|
25285
|
+
isRunning() {
|
|
25286
|
+
return this._running;
|
|
25287
|
+
}
|
|
25288
|
+
start() {
|
|
25289
|
+
this._running = true;
|
|
25290
|
+
const mainloop = () => {
|
|
25291
|
+
// stop the loop
|
|
25292
|
+
if (!this._running) {
|
|
25293
|
+
return;
|
|
25294
|
+
}
|
|
25295
|
+
try {
|
|
25296
|
+
// request next loop
|
|
25297
|
+
this._requestId = window.requestAnimationFrame(mainloop);
|
|
25298
|
+
this.update();
|
|
25299
|
+
}
|
|
25300
|
+
catch (e) {
|
|
25301
|
+
window.cancelAnimationFrame(this._requestId);
|
|
25302
|
+
throw e;
|
|
25303
|
+
}
|
|
25304
|
+
};
|
|
25305
|
+
// begin the first frame
|
|
25306
|
+
mainloop();
|
|
25307
|
+
}
|
|
25308
|
+
stop() {
|
|
25309
|
+
this._running = false;
|
|
25310
|
+
}
|
|
25311
|
+
}
|
|
25312
|
+
/**
|
|
25313
|
+
* The TestClock is meant for debugging interactions in excalibur that require precise timing to replicate or test
|
|
25314
|
+
*/
|
|
25315
|
+
class TestClock extends Clock {
|
|
25316
|
+
constructor(options) {
|
|
25317
|
+
super({
|
|
25318
|
+
...options
|
|
25319
|
+
});
|
|
25320
|
+
this._logger = Logger.getInstance();
|
|
25321
|
+
this._running = false;
|
|
25322
|
+
this._currentTime = 0;
|
|
25323
|
+
this._updateMs = options.defaultUpdateMs;
|
|
25324
|
+
}
|
|
25325
|
+
/**
|
|
25326
|
+
* Get the current time in milliseconds
|
|
25327
|
+
*/
|
|
25328
|
+
now() {
|
|
25329
|
+
var _a;
|
|
25330
|
+
return (_a = this._currentTime) !== null && _a !== void 0 ? _a : 0;
|
|
25331
|
+
}
|
|
25332
|
+
isRunning() {
|
|
25333
|
+
return this._running;
|
|
25334
|
+
}
|
|
25335
|
+
start() {
|
|
25336
|
+
this._running = true;
|
|
25337
|
+
}
|
|
25338
|
+
stop() {
|
|
25339
|
+
this._running = false;
|
|
25340
|
+
}
|
|
25341
|
+
/**
|
|
25342
|
+
* Manually step the clock forward 1 tick, optionally specify an elapsed time in milliseconds
|
|
25343
|
+
* @param overrideUpdateMs
|
|
25344
|
+
*/
|
|
25345
|
+
step(overrideUpdateMs) {
|
|
25346
|
+
const time = overrideUpdateMs !== null && overrideUpdateMs !== void 0 ? overrideUpdateMs : this._updateMs;
|
|
25347
|
+
if (this._running) {
|
|
25348
|
+
// to be comparable to RAF this needs to be a full blown Task
|
|
25349
|
+
// For example, images cannot decode syncronously in a single step
|
|
25350
|
+
this.update(time);
|
|
25351
|
+
this._currentTime += time;
|
|
25352
|
+
}
|
|
25353
|
+
else {
|
|
25354
|
+
this._logger.warn('The clock is not running, no step will be performed');
|
|
25355
|
+
}
|
|
25356
|
+
}
|
|
25357
|
+
/**
|
|
25358
|
+
* Run a number of steps that tick the clock, optionally specify an elapsed time in milliseconds
|
|
25359
|
+
* @param numberOfSteps
|
|
25360
|
+
* @param overrideUpdateMs
|
|
25361
|
+
*/
|
|
25362
|
+
run(numberOfSteps, overrideUpdateMs) {
|
|
25363
|
+
for (let i = 0; i < numberOfSteps; i++) {
|
|
25364
|
+
this.step(overrideUpdateMs !== null && overrideUpdateMs !== void 0 ? overrideUpdateMs : this._updateMs);
|
|
25365
|
+
}
|
|
25366
|
+
}
|
|
25367
|
+
}
|
|
25368
|
+
|
|
25031
25369
|
;// CONCATENATED MODULE: ./Engine.ts
|
|
25032
25370
|
var Engine_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
25033
25371
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -25054,6 +25392,8 @@ polyfill();
|
|
|
25054
25392
|
|
|
25055
25393
|
|
|
25056
25394
|
|
|
25395
|
+
|
|
25396
|
+
|
|
25057
25397
|
/**
|
|
25058
25398
|
* Enum representing the different mousewheel event bubble prevention
|
|
25059
25399
|
*/
|
|
@@ -25105,8 +25445,15 @@ class Engine extends Class {
|
|
|
25105
25445
|
* ```
|
|
25106
25446
|
*/
|
|
25107
25447
|
constructor(options) {
|
|
25108
|
-
var _a, _b, _c;
|
|
25448
|
+
var _a, _b, _c, _d;
|
|
25109
25449
|
super();
|
|
25450
|
+
/**
|
|
25451
|
+
* Optionally set the maximum fps if not set Excalibur will go as fast as the device allows.
|
|
25452
|
+
*
|
|
25453
|
+
* You may want to constrain max fps if your game cannot maintain fps consistenly, it can look and feel better to have a 30fps game than
|
|
25454
|
+
* one that bounces between 30fps and 60fps
|
|
25455
|
+
*/
|
|
25456
|
+
this.maxFps = Number.POSITIVE_INFINITY;
|
|
25110
25457
|
this._hasStarted = false;
|
|
25111
25458
|
/**
|
|
25112
25459
|
* Gets or sets the list of post processors to apply at the end of drawing a frame (such as [[ColorBlindCorrector]])
|
|
@@ -25142,11 +25489,14 @@ class Engine extends Class {
|
|
|
25142
25489
|
Logger.getInstance().fatal(e);
|
|
25143
25490
|
};
|
|
25144
25491
|
this._timescale = 1.0;
|
|
25145
|
-
this._isLoading = false;
|
|
25146
25492
|
this._isInitialized = false;
|
|
25147
25493
|
this._deferredGoTo = null;
|
|
25148
25494
|
this._loadingComplete = false;
|
|
25149
|
-
|
|
25495
|
+
this._isReady = false;
|
|
25496
|
+
this._isReadyPromise = new Promise(resolve => {
|
|
25497
|
+
this._isReadyResolve = resolve;
|
|
25498
|
+
});
|
|
25499
|
+
options = { ...Engine._DEFAULT_ENGINE_OPTIONS, ...options };
|
|
25150
25500
|
Flags.freeze();
|
|
25151
25501
|
// Initialize browser events facade
|
|
25152
25502
|
this.browser = new BrowserEvents(window, document);
|
|
@@ -25255,6 +25605,12 @@ O|===|* >________________>\n\
|
|
|
25255
25605
|
if (options.backgroundColor) {
|
|
25256
25606
|
this.backgroundColor = options.backgroundColor.clone();
|
|
25257
25607
|
}
|
|
25608
|
+
this.maxFps = (_d = options.maxFps) !== null && _d !== void 0 ? _d : this.maxFps;
|
|
25609
|
+
this.clock = new StandardClock({
|
|
25610
|
+
maxFps: this.maxFps,
|
|
25611
|
+
tick: this._mainloop.bind(this),
|
|
25612
|
+
onFatalException: (e) => this.onFatalException(e)
|
|
25613
|
+
});
|
|
25258
25614
|
this.enableCanvasTransparency = options.enableCanvasTransparency;
|
|
25259
25615
|
this._loader = new Loader();
|
|
25260
25616
|
this.debug = new Debug(this);
|
|
@@ -25608,7 +25964,7 @@ O|===|* >________________>\n\
|
|
|
25608
25964
|
* @param delta Number of milliseconds elapsed since the last update.
|
|
25609
25965
|
*/
|
|
25610
25966
|
_update(delta) {
|
|
25611
|
-
if (this.
|
|
25967
|
+
if (!this.ready) {
|
|
25612
25968
|
// suspend updates until loading is finished
|
|
25613
25969
|
this._loader.update(this, delta);
|
|
25614
25970
|
// Update input listeners
|
|
@@ -25616,7 +25972,6 @@ O|===|* >________________>\n\
|
|
|
25616
25972
|
this.input.gamepads.update();
|
|
25617
25973
|
return;
|
|
25618
25974
|
}
|
|
25619
|
-
this._overrideInitialize(this);
|
|
25620
25975
|
// Publish preupdate events
|
|
25621
25976
|
this._preupdate(delta);
|
|
25622
25977
|
// process engine level events
|
|
@@ -25659,10 +26014,10 @@ O|===|* >________________>\n\
|
|
|
25659
26014
|
_draw(delta) {
|
|
25660
26015
|
const ctx = this.ctx;
|
|
25661
26016
|
this._predraw(ctx, delta);
|
|
25662
|
-
|
|
26017
|
+
// Drawing nothing else while loading
|
|
26018
|
+
if (!this._isReady) {
|
|
25663
26019
|
this._loader.canvas.draw(this.graphicsContext, 0, 0);
|
|
25664
26020
|
this.graphicsContext.flush();
|
|
25665
|
-
// Drawing nothing else while loading
|
|
25666
26021
|
return;
|
|
25667
26022
|
}
|
|
25668
26023
|
// TODO move to graphics systems?
|
|
@@ -25731,64 +26086,105 @@ O|===|* >________________>\n\
|
|
|
25731
26086
|
get loadingComplete() {
|
|
25732
26087
|
return this._loadingComplete;
|
|
25733
26088
|
}
|
|
26089
|
+
get ready() {
|
|
26090
|
+
return this._isReady;
|
|
26091
|
+
}
|
|
26092
|
+
isReady() {
|
|
26093
|
+
return this._isReadyPromise;
|
|
26094
|
+
}
|
|
25734
26095
|
/**
|
|
25735
26096
|
* Starts the internal game loop for Excalibur after loading
|
|
25736
26097
|
* any provided assets.
|
|
25737
26098
|
* @param loader Optional [[Loader]] to use to load resources. The default loader is [[Loader]], override to provide your own
|
|
25738
26099
|
* custom loader.
|
|
26100
|
+
*
|
|
26101
|
+
* Note: start() only resolves AFTER the user has clicked the play button
|
|
25739
26102
|
*/
|
|
25740
|
-
start(loader) {
|
|
26103
|
+
async start(loader) {
|
|
25741
26104
|
if (!this._compatible) {
|
|
25742
|
-
|
|
25743
|
-
}
|
|
25744
|
-
|
|
25745
|
-
// Push the current user entered resolution/viewport
|
|
25746
|
-
this.screen.pushResolutionAndViewport();
|
|
25747
|
-
// Configure resolution for loader
|
|
25748
|
-
this.screen.resolution = this.screen.viewport;
|
|
25749
|
-
this.screen.applyResolutionAndViewport();
|
|
25750
|
-
this.graphicsContext.updateViewport();
|
|
26105
|
+
throw new Error('Excalibur is incompatible with your browser');
|
|
26106
|
+
}
|
|
26107
|
+
// Wire loader if we have it
|
|
25751
26108
|
if (loader) {
|
|
26109
|
+
// Push the current user entered resolution/viewport
|
|
26110
|
+
this.screen.pushResolutionAndViewport();
|
|
26111
|
+
// Configure resolution for loader, it expects resolution === viewport
|
|
26112
|
+
this.screen.resolution = this.screen.viewport;
|
|
26113
|
+
this.screen.applyResolutionAndViewport();
|
|
26114
|
+
this.graphicsContext.updateViewport();
|
|
25752
26115
|
this._loader = loader;
|
|
25753
26116
|
this._loader.suppressPlayButton = this._suppressPlayButton || this._loader.suppressPlayButton;
|
|
25754
26117
|
this._loader.wireEngine(this);
|
|
25755
|
-
loadingComplete = this.load(this._loader);
|
|
25756
26118
|
}
|
|
25757
|
-
|
|
25758
|
-
|
|
25759
|
-
|
|
25760
|
-
|
|
26119
|
+
// Start the excalibur clock which drives the mainloop
|
|
26120
|
+
// has started is a slight misnomer, it's really mainloop started
|
|
26121
|
+
this._logger.debug('Starting game clock...');
|
|
26122
|
+
this.browser.resume();
|
|
26123
|
+
this.clock.start();
|
|
26124
|
+
this._logger.debug('Game clock started');
|
|
26125
|
+
if (loader) {
|
|
26126
|
+
await this.load(this._loader);
|
|
26127
|
+
this._loadingComplete = true;
|
|
26128
|
+
// reset back to previous user resolution/viewport
|
|
25761
26129
|
this.screen.popResolutionAndViewport();
|
|
25762
26130
|
this.screen.applyResolutionAndViewport();
|
|
25763
26131
|
this.graphicsContext.updateViewport();
|
|
25764
|
-
this.emit('start', new GameStartEvent(this));
|
|
25765
|
-
this._loadingComplete = true;
|
|
25766
|
-
});
|
|
25767
|
-
if (!this._hasStarted) {
|
|
25768
|
-
// has started is a slight misnomer, it's really mainloop started
|
|
25769
|
-
this._hasStarted = true;
|
|
25770
|
-
this._logger.debug('Starting game...');
|
|
25771
|
-
this.browser.resume();
|
|
25772
|
-
Engine.createMainLoop(this, window.requestAnimationFrame, Date.now)();
|
|
25773
|
-
this._logger.debug('Game started');
|
|
25774
|
-
}
|
|
25775
|
-
else {
|
|
25776
|
-
// Game already started;
|
|
25777
26132
|
}
|
|
25778
|
-
|
|
26133
|
+
this._loadingComplete = true;
|
|
26134
|
+
// Initialize before ready
|
|
26135
|
+
this._overrideInitialize(this);
|
|
26136
|
+
this._isReady = true;
|
|
26137
|
+
this._isReadyResolve();
|
|
26138
|
+
this.emit('start', new GameStartEvent(this));
|
|
26139
|
+
return this._isReadyPromise;
|
|
26140
|
+
}
|
|
26141
|
+
_mainloop(elapsed) {
|
|
26142
|
+
this.emit('preframe', new PreFrameEvent(this, this.stats.prevFrame));
|
|
26143
|
+
const delta = elapsed * this.timescale;
|
|
26144
|
+
// reset frame stats (reuse existing instances)
|
|
26145
|
+
const frameId = this.stats.prevFrame.id + 1;
|
|
26146
|
+
this.stats.currFrame.reset();
|
|
26147
|
+
this.stats.currFrame.id = frameId;
|
|
26148
|
+
this.stats.currFrame.delta = delta;
|
|
26149
|
+
this.stats.currFrame.fps = this.clock.fpsSampler.fps;
|
|
26150
|
+
const beforeUpdate = this.clock.now();
|
|
26151
|
+
this._update(delta);
|
|
26152
|
+
const afterUpdate = this.clock.now();
|
|
26153
|
+
this._draw(delta);
|
|
26154
|
+
const afterDraw = this.clock.now();
|
|
26155
|
+
this.stats.currFrame.duration.update = afterUpdate - beforeUpdate;
|
|
26156
|
+
this.stats.currFrame.duration.draw = afterDraw - afterUpdate;
|
|
26157
|
+
this.emit('postframe', new PostFrameEvent(this, this.stats.currFrame));
|
|
25779
26158
|
}
|
|
26159
|
+
/**
|
|
26160
|
+
*
|
|
26161
|
+
* @param game
|
|
26162
|
+
* @param raf
|
|
26163
|
+
* @param nowFn
|
|
26164
|
+
* @deprecated Use [[Clock]] to run the mainloop, will be removed in v0.26.0
|
|
26165
|
+
*/
|
|
25780
26166
|
static createMainLoop(game, raf, nowFn) {
|
|
25781
26167
|
let lastTime = nowFn();
|
|
26168
|
+
const fpsSampler = new FpsSampler({
|
|
26169
|
+
nowFn,
|
|
26170
|
+
initialFps: game.maxFps === Infinity ? 60 : game.maxFps
|
|
26171
|
+
});
|
|
25782
26172
|
return function mainloop() {
|
|
25783
26173
|
if (!game._hasStarted) {
|
|
25784
26174
|
return;
|
|
25785
26175
|
}
|
|
25786
26176
|
try {
|
|
25787
26177
|
game._requestId = raf(mainloop);
|
|
26178
|
+
fpsSampler.start();
|
|
25788
26179
|
game.emit('preframe', new PreFrameEvent(game, game.stats.prevFrame));
|
|
25789
26180
|
// Get the time to calculate time-elapsed
|
|
25790
26181
|
const now = nowFn();
|
|
25791
|
-
let elapsed =
|
|
26182
|
+
let elapsed = now - lastTime || 1; // first frame
|
|
26183
|
+
// Constrain fps
|
|
26184
|
+
const fpsInterval = game.maxFps === Number.POSITIVE_INFINITY ? 0 : 1000 / game.maxFps;
|
|
26185
|
+
if (elapsed <= fpsInterval) {
|
|
26186
|
+
return; // too fast 😎 skip this frame
|
|
26187
|
+
}
|
|
25792
26188
|
// Resolves issue #138 if the game has been paused, or blurred for
|
|
25793
26189
|
// more than a 200 milliseconds, reset elapsed time to 1. This improves reliability
|
|
25794
26190
|
// and provides more expected behavior when the engine comes back
|
|
@@ -25802,7 +26198,7 @@ O|===|* >________________>\n\
|
|
|
25802
26198
|
game.stats.currFrame.reset();
|
|
25803
26199
|
game.stats.currFrame.id = frameId;
|
|
25804
26200
|
game.stats.currFrame.delta = delta;
|
|
25805
|
-
game.stats.currFrame.fps =
|
|
26201
|
+
game.stats.currFrame.fps = fpsSampler.fps;
|
|
25806
26202
|
const beforeUpdate = nowFn();
|
|
25807
26203
|
game._update(delta);
|
|
25808
26204
|
const afterUpdate = nowFn();
|
|
@@ -25810,8 +26206,15 @@ O|===|* >________________>\n\
|
|
|
25810
26206
|
const afterDraw = nowFn();
|
|
25811
26207
|
game.stats.currFrame.duration.update = afterUpdate - beforeUpdate;
|
|
25812
26208
|
game.stats.currFrame.duration.draw = afterDraw - afterUpdate;
|
|
25813
|
-
|
|
26209
|
+
// if fps interval is not a multple
|
|
26210
|
+
if (fpsInterval > 0) {
|
|
26211
|
+
lastTime = now - (elapsed % fpsInterval);
|
|
26212
|
+
}
|
|
26213
|
+
else {
|
|
26214
|
+
lastTime = now;
|
|
26215
|
+
}
|
|
25814
26216
|
game.emit('postframe', new PostFrameEvent(game, game.stats.currFrame));
|
|
26217
|
+
fpsSampler.end();
|
|
25815
26218
|
game.stats.prevFrame.reset(game.stats.currFrame);
|
|
25816
26219
|
}
|
|
25817
26220
|
catch (e) {
|
|
@@ -25825,10 +26228,10 @@ O|===|* >________________>\n\
|
|
|
25825
26228
|
* Stops Excalibur's main loop, useful for pausing the game.
|
|
25826
26229
|
*/
|
|
25827
26230
|
stop() {
|
|
25828
|
-
if (this.
|
|
26231
|
+
if (this.clock.isRunning()) {
|
|
25829
26232
|
this.emit('stop', new GameStopEvent(this));
|
|
25830
26233
|
this.browser.pause();
|
|
25831
|
-
this.
|
|
26234
|
+
this.clock.stop();
|
|
25832
26235
|
this._logger.debug('Game stopped');
|
|
25833
26236
|
}
|
|
25834
26237
|
}
|
|
@@ -25836,7 +26239,7 @@ O|===|* >________________>\n\
|
|
|
25836
26239
|
* Returns the Engine's Running status, Useful for checking whether engine is running or paused.
|
|
25837
26240
|
*/
|
|
25838
26241
|
isPaused() {
|
|
25839
|
-
return !this.
|
|
26242
|
+
return !this.clock.isRunning();
|
|
25840
26243
|
}
|
|
25841
26244
|
/**
|
|
25842
26245
|
* Takes a screen shot of the current viewport and returns it as an
|
|
@@ -25854,24 +26257,13 @@ O|===|* >________________>\n\
|
|
|
25854
26257
|
* will appear.
|
|
25855
26258
|
* @param loader Some [[Loadable]] such as a [[Loader]] collection, [[Sound]], or [[Texture]].
|
|
25856
26259
|
*/
|
|
25857
|
-
load(loader) {
|
|
25858
|
-
|
|
25859
|
-
|
|
25860
|
-
|
|
25861
|
-
|
|
25862
|
-
|
|
25863
|
-
|
|
25864
|
-
resolve();
|
|
25865
|
-
// Delay is to give the logo a chance to show, otherwise don't delay
|
|
25866
|
-
}, 500);
|
|
25867
|
-
}
|
|
25868
|
-
else {
|
|
25869
|
-
this._isLoading = false;
|
|
25870
|
-
resolve();
|
|
25871
|
-
}
|
|
25872
|
-
});
|
|
25873
|
-
});
|
|
25874
|
-
return complete;
|
|
26260
|
+
async load(loader) {
|
|
26261
|
+
try {
|
|
26262
|
+
await loader.load();
|
|
26263
|
+
}
|
|
26264
|
+
catch (_a) {
|
|
26265
|
+
await Promise.resolve();
|
|
26266
|
+
}
|
|
25875
26267
|
}
|
|
25876
26268
|
}
|
|
25877
26269
|
/**
|
|
@@ -26050,13 +26442,25 @@ class Font extends Raster {
|
|
|
26050
26442
|
this.flagDirty();
|
|
26051
26443
|
}
|
|
26052
26444
|
clone() {
|
|
26053
|
-
return new Font(
|
|
26445
|
+
return new Font({
|
|
26446
|
+
...this.cloneGraphicOptions(),
|
|
26447
|
+
...this.cloneRasterOptions(),
|
|
26448
|
+
size: this.size,
|
|
26449
|
+
unit: this.unit,
|
|
26450
|
+
family: this.family,
|
|
26451
|
+
style: this.style,
|
|
26452
|
+
bold: this.bold,
|
|
26453
|
+
textAlign: this.textAlign,
|
|
26454
|
+
baseAlign: this.baseAlign,
|
|
26455
|
+
direction: this.direction,
|
|
26456
|
+
shadow: this.shadow
|
|
26054
26457
|
? {
|
|
26055
26458
|
blur: this.shadow.blur,
|
|
26056
26459
|
offset: this.shadow.offset,
|
|
26057
26460
|
color: this.shadow.color
|
|
26058
26461
|
}
|
|
26059
|
-
: null
|
|
26462
|
+
: null
|
|
26463
|
+
});
|
|
26060
26464
|
}
|
|
26061
26465
|
get fontString() {
|
|
26062
26466
|
return `${this.style} ${this.bold ? 'bold' : ''} ${this.size}${this.unit} ${this.family}`;
|
|
@@ -26746,7 +27150,17 @@ let Polygon = class Polygon {
|
|
|
26746
27150
|
}
|
|
26747
27151
|
_drawWithOptions(options) {
|
|
26748
27152
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
26749
|
-
const { ctx, x, y, rotation, drawWidth, drawHeight, anchor, offset, opacity, flipHorizontal, flipVertical } =
|
|
27153
|
+
const { ctx, x, y, rotation, drawWidth, drawHeight, anchor, offset, opacity, flipHorizontal, flipVertical } = {
|
|
27154
|
+
...options,
|
|
27155
|
+
rotation: (_a = options.rotation) !== null && _a !== void 0 ? _a : this.rotation,
|
|
27156
|
+
drawWidth: (_b = options.drawWidth) !== null && _b !== void 0 ? _b : this.drawWidth,
|
|
27157
|
+
drawHeight: (_c = options.drawHeight) !== null && _c !== void 0 ? _c : this.drawHeight,
|
|
27158
|
+
flipHorizontal: (_d = options.flipHorizontal) !== null && _d !== void 0 ? _d : this.flipHorizontal,
|
|
27159
|
+
flipVertical: (_e = options.flipVertical) !== null && _e !== void 0 ? _e : this.flipVertical,
|
|
27160
|
+
anchor: (_f = options.anchor) !== null && _f !== void 0 ? _f : this.anchor,
|
|
27161
|
+
offset: (_g = options.offset) !== null && _g !== void 0 ? _g : this.offset,
|
|
27162
|
+
opacity: ((_h = options.opacity) !== null && _h !== void 0 ? _h : 1) * ((_j = this.opacity) !== null && _j !== void 0 ? _j : 1)
|
|
27163
|
+
};
|
|
26750
27164
|
const xpoint = drawWidth * anchor.x + offset.x + x;
|
|
26751
27165
|
const ypoint = drawHeight * anchor.y + offset.y + y;
|
|
26752
27166
|
ctx.save();
|
|
@@ -27068,15 +27482,6 @@ function canPlayFile(file) {
|
|
|
27068
27482
|
}
|
|
27069
27483
|
|
|
27070
27484
|
;// CONCATENATED MODULE: ./Resources/Sound/Sound.ts
|
|
27071
|
-
var Sound_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
27072
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27073
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
27074
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
27075
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
27076
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27077
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
27078
|
-
});
|
|
27079
|
-
};
|
|
27080
27485
|
|
|
27081
27486
|
|
|
27082
27487
|
|
|
@@ -27167,30 +27572,26 @@ class Sound extends Class {
|
|
|
27167
27572
|
isLoaded() {
|
|
27168
27573
|
return !!this.data;
|
|
27169
27574
|
}
|
|
27170
|
-
load() {
|
|
27171
|
-
|
|
27172
|
-
|
|
27173
|
-
|
|
27174
|
-
|
|
27175
|
-
|
|
27176
|
-
|
|
27177
|
-
|
|
27178
|
-
|
|
27179
|
-
return this.data = audiobuffer;
|
|
27180
|
-
});
|
|
27575
|
+
async load() {
|
|
27576
|
+
if (this.data) {
|
|
27577
|
+
return this.data;
|
|
27578
|
+
}
|
|
27579
|
+
const arraybuffer = await this._resource.load();
|
|
27580
|
+
const audiobuffer = await this.decodeAudio(arraybuffer.slice(0));
|
|
27581
|
+
this._duration = typeof audiobuffer === 'object' ? audiobuffer.duration : undefined;
|
|
27582
|
+
this.emit('processed', new NativeSoundProcessedEvent(this, audiobuffer));
|
|
27583
|
+
return this.data = audiobuffer;
|
|
27181
27584
|
}
|
|
27182
|
-
decodeAudio(data) {
|
|
27183
|
-
|
|
27184
|
-
|
|
27185
|
-
|
|
27186
|
-
|
|
27187
|
-
|
|
27188
|
-
|
|
27189
|
-
|
|
27190
|
-
|
|
27191
|
-
|
|
27192
|
-
}
|
|
27193
|
-
});
|
|
27585
|
+
async decodeAudio(data) {
|
|
27586
|
+
try {
|
|
27587
|
+
return await this._audioContext.decodeAudioData(data.slice(0));
|
|
27588
|
+
}
|
|
27589
|
+
catch (e) {
|
|
27590
|
+
this.logger.error('Unable to decode ' +
|
|
27591
|
+
' this browser may not fully support this format, or the file may be corrupt, ' +
|
|
27592
|
+
'if this is an mp3 try removing id3 tags and album art from the file.');
|
|
27593
|
+
return await Promise.reject();
|
|
27594
|
+
}
|
|
27194
27595
|
}
|
|
27195
27596
|
wireEngine(engine) {
|
|
27196
27597
|
if (engine) {
|
|
@@ -27282,38 +27683,34 @@ class Sound extends Class {
|
|
|
27282
27683
|
getTrackId(track) {
|
|
27283
27684
|
return this._tracks.indexOf(track);
|
|
27284
27685
|
}
|
|
27285
|
-
_resumePlayback() {
|
|
27286
|
-
|
|
27287
|
-
|
|
27288
|
-
|
|
27289
|
-
|
|
27290
|
-
|
|
27291
|
-
resumed.push(track.play());
|
|
27292
|
-
}
|
|
27293
|
-
this._isPaused = false;
|
|
27294
|
-
this.emit('resume', new NativeSoundEvent(this));
|
|
27295
|
-
this.logger.debug('Resuming paused instances for sound', this.path, this._tracks);
|
|
27296
|
-
// resolve when resumed tracks are done
|
|
27297
|
-
yield Promise.all(resumed);
|
|
27686
|
+
async _resumePlayback() {
|
|
27687
|
+
if (this._isPaused) {
|
|
27688
|
+
const resumed = [];
|
|
27689
|
+
// ensure we resume *current* tracks (if paused)
|
|
27690
|
+
for (const track of this._tracks) {
|
|
27691
|
+
resumed.push(track.play());
|
|
27298
27692
|
}
|
|
27299
|
-
|
|
27300
|
-
|
|
27693
|
+
this._isPaused = false;
|
|
27694
|
+
this.emit('resume', new NativeSoundEvent(this));
|
|
27695
|
+
this.logger.debug('Resuming paused instances for sound', this.path, this._tracks);
|
|
27696
|
+
// resolve when resumed tracks are done
|
|
27697
|
+
await Promise.all(resumed);
|
|
27698
|
+
}
|
|
27699
|
+
return true;
|
|
27301
27700
|
}
|
|
27302
27701
|
/**
|
|
27303
27702
|
* Starts playback, returns a promise that resolves when playback is complete
|
|
27304
27703
|
*/
|
|
27305
|
-
_startPlayback() {
|
|
27306
|
-
|
|
27307
|
-
|
|
27308
|
-
|
|
27309
|
-
|
|
27310
|
-
this.logger.debug('Playing new instance for sound', this.path);
|
|
27311
|
-
});
|
|
27312
|
-
// when done, remove track
|
|
27313
|
-
this.emit('playbackend', new NativeSoundEvent(this, track));
|
|
27314
|
-
this._tracks.splice(this.getTrackId(track), 1);
|
|
27315
|
-
return complete;
|
|
27704
|
+
async _startPlayback() {
|
|
27705
|
+
const track = await this._getTrackInstance(this.data);
|
|
27706
|
+
const complete = await track.play(() => {
|
|
27707
|
+
this.emit('playbackstart', new NativeSoundEvent(this, track));
|
|
27708
|
+
this.logger.debug('Playing new instance for sound', this.path);
|
|
27316
27709
|
});
|
|
27710
|
+
// when done, remove track
|
|
27711
|
+
this.emit('playbackend', new NativeSoundEvent(this, track));
|
|
27712
|
+
this._tracks.splice(this.getTrackId(track), 1);
|
|
27713
|
+
return complete;
|
|
27317
27714
|
}
|
|
27318
27715
|
_getTrackInstance(data) {
|
|
27319
27716
|
const newTrack = new WebAudioInstance(data);
|
|
@@ -27331,15 +27728,6 @@ class Sound extends Class {
|
|
|
27331
27728
|
|
|
27332
27729
|
|
|
27333
27730
|
;// CONCATENATED MODULE: ./Resources/Gif.ts
|
|
27334
|
-
var Gif_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
27335
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27336
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
27337
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
27338
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
27339
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27340
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
27341
|
-
});
|
|
27342
|
-
};
|
|
27343
27731
|
|
|
27344
27732
|
|
|
27345
27733
|
|
|
@@ -27373,16 +27761,14 @@ class Gif {
|
|
|
27373
27761
|
/**
|
|
27374
27762
|
* Begins loading the texture and returns a promise to be resolved on completion
|
|
27375
27763
|
*/
|
|
27376
|
-
load() {
|
|
27377
|
-
|
|
27378
|
-
|
|
27379
|
-
|
|
27380
|
-
|
|
27381
|
-
|
|
27382
|
-
|
|
27383
|
-
|
|
27384
|
-
return this.data = this._textures = images;
|
|
27385
|
-
});
|
|
27764
|
+
async load() {
|
|
27765
|
+
const arraybuffer = await this._resource.load();
|
|
27766
|
+
this._stream = new Stream(arraybuffer);
|
|
27767
|
+
this._gif = new ParseGif(this._stream, this._transparentColor);
|
|
27768
|
+
const images = this._gif.images.map(i => new ImageSource(i.src, false));
|
|
27769
|
+
// Load all textures
|
|
27770
|
+
await Promise.all(images.map(t => t.load()));
|
|
27771
|
+
return this.data = this._textures = images;
|
|
27386
27772
|
}
|
|
27387
27773
|
isLoaded() {
|
|
27388
27774
|
return !!this.data;
|
|
@@ -27866,7 +28252,11 @@ class Polygon_Polygon extends Raster {
|
|
|
27866
28252
|
return vec(minX, minY);
|
|
27867
28253
|
}
|
|
27868
28254
|
clone() {
|
|
27869
|
-
return new Polygon_Polygon(
|
|
28255
|
+
return new Polygon_Polygon({
|
|
28256
|
+
points: this.points.map((p) => p.clone()),
|
|
28257
|
+
...this.cloneGraphicOptions(),
|
|
28258
|
+
...this.cloneRasterOptions()
|
|
28259
|
+
});
|
|
27870
28260
|
}
|
|
27871
28261
|
execute(ctx) {
|
|
27872
28262
|
if (this.points && this.points.length) {
|
|
@@ -28426,7 +28816,7 @@ Promises_Promise = Promise_1 = Promises_decorate([
|
|
|
28426
28816
|
* The current Excalibur version string
|
|
28427
28817
|
* @description `process.env.__EX_VERSION` gets replaced by Webpack on build
|
|
28428
28818
|
*/
|
|
28429
|
-
const EX_VERSION = "0.26.0-alpha.
|
|
28819
|
+
const EX_VERSION = "0.26.0-alpha.311+c19e8da";
|
|
28430
28820
|
|
|
28431
28821
|
polyfill();
|
|
28432
28822
|
// This file is used as the bundle entry point and exports everything
|
|
@@ -28488,6 +28878,9 @@ polyfill();
|
|
|
28488
28878
|
|
|
28489
28879
|
|
|
28490
28880
|
|
|
28881
|
+
|
|
28882
|
+
|
|
28883
|
+
|
|
28491
28884
|
// ex.Deprecated
|
|
28492
28885
|
|
|
28493
28886
|
// import * as deprecated from './Deprecated';
|
|
@@ -28524,6 +28917,7 @@ var __webpack_exports__Cell = __webpack_exports__.bLd;
|
|
|
28524
28917
|
var __webpack_exports__Circle = __webpack_exports__.Cdc;
|
|
28525
28918
|
var __webpack_exports__CircleCollider = __webpack_exports__.FKn;
|
|
28526
28919
|
var __webpack_exports__Class = __webpack_exports__.wTW;
|
|
28920
|
+
var __webpack_exports__Clock = __webpack_exports__.SUY;
|
|
28527
28921
|
var __webpack_exports__ClosestLine = __webpack_exports__.ab2;
|
|
28528
28922
|
var __webpack_exports__ClosestLineJumpTable = __webpack_exports__.GfZ;
|
|
28529
28923
|
var __webpack_exports__Collider = __webpack_exports__.YMS;
|
|
@@ -28590,6 +28984,7 @@ var __webpack_exports__Follow = __webpack_exports__.j9l;
|
|
|
28590
28984
|
var __webpack_exports__Font = __webpack_exports__.Zxw;
|
|
28591
28985
|
var __webpack_exports__FontStyle = __webpack_exports__.Hdx;
|
|
28592
28986
|
var __webpack_exports__FontUnit = __webpack_exports__.Z$d;
|
|
28987
|
+
var __webpack_exports__FpsSampler = __webpack_exports__.iqV;
|
|
28593
28988
|
var __webpack_exports__FrameStats = __webpack_exports__.o$7;
|
|
28594
28989
|
var __webpack_exports__GameEvent = __webpack_exports__.Zm$;
|
|
28595
28990
|
var __webpack_exports__GameStartEvent = __webpack_exports__.$QH;
|
|
@@ -28690,6 +29085,7 @@ var __webpack_exports__Sound = __webpack_exports__.$uU;
|
|
|
28690
29085
|
var __webpack_exports__Sprite = __webpack_exports__.jyi;
|
|
28691
29086
|
var __webpack_exports__SpriteFont = __webpack_exports__.E03;
|
|
28692
29087
|
var __webpack_exports__SpriteSheet = __webpack_exports__.V6q;
|
|
29088
|
+
var __webpack_exports__StandardClock = __webpack_exports__.rg2;
|
|
28693
29089
|
var __webpack_exports__StrategyContainer = __webpack_exports__.nVo;
|
|
28694
29090
|
var __webpack_exports__Stream = __webpack_exports__.F6N;
|
|
28695
29091
|
var __webpack_exports__SubscribeEvent = __webpack_exports__.ad3;
|
|
@@ -28697,6 +29093,7 @@ var __webpack_exports__System = __webpack_exports__.xP7;
|
|
|
28697
29093
|
var __webpack_exports__SystemManager = __webpack_exports__.Odq;
|
|
28698
29094
|
var __webpack_exports__SystemType = __webpack_exports__.Zif;
|
|
28699
29095
|
var __webpack_exports__TagComponent = __webpack_exports__.ZGJ;
|
|
29096
|
+
var __webpack_exports__TestClock = __webpack_exports__.MJk;
|
|
28700
29097
|
var __webpack_exports__Text = __webpack_exports__.xvT;
|
|
28701
29098
|
var __webpack_exports__TextAlign = __webpack_exports__.PHM;
|
|
28702
29099
|
var __webpack_exports__TileMap = __webpack_exports__.KwO;
|
|
@@ -28710,6 +29107,7 @@ var __webpack_exports__Util = __webpack_exports__.ZrN;
|
|
|
28710
29107
|
var __webpack_exports__Vector = __webpack_exports__.OWs;
|
|
28711
29108
|
var __webpack_exports__VectorView = __webpack_exports__.dF9;
|
|
28712
29109
|
var __webpack_exports__VisibleEvent = __webpack_exports__.VHo;
|
|
29110
|
+
var __webpack_exports__WebAudio = __webpack_exports__.ohE;
|
|
28713
29111
|
var __webpack_exports__WebAudioInstance = __webpack_exports__.R$E;
|
|
28714
29112
|
var __webpack_exports__World = __webpack_exports__.q3I;
|
|
28715
29113
|
var __webpack_exports__canonicalizeAngle = __webpack_exports__.Pab;
|
|
@@ -28737,6 +29135,6 @@ var __webpack_exports__resetObsoleteCounter = __webpack_exports__.Q4c;
|
|
|
28737
29135
|
var __webpack_exports__toDegrees = __webpack_exports__.Uxb;
|
|
28738
29136
|
var __webpack_exports__toRadians = __webpack_exports__.Yr5;
|
|
28739
29137
|
var __webpack_exports__vec = __webpack_exports__.Bhw;
|
|
28740
|
-
export { __webpack_exports__ActionContext as ActionContext, __webpack_exports__ActionQueue as ActionQueue, __webpack_exports__ActionsComponent as ActionsComponent, __webpack_exports__ActionsSystem as ActionsSystem, __webpack_exports__ActivateEvent as ActivateEvent, __webpack_exports__Actor as Actor, __webpack_exports__AddedComponent as AddedComponent, __webpack_exports__AddedEntity as AddedEntity, __webpack_exports__Animation as Animation, __webpack_exports__AnimationDirection as AnimationDirection, __webpack_exports__AnimationStrategy as AnimationStrategy, __webpack_exports__ArcadeSolver as ArcadeSolver, __webpack_exports__AudioContextFactory as AudioContextFactory, __webpack_exports__Axis as Axis, __webpack_exports__BaseAlign as BaseAlign, __webpack_exports__BinaryTreeNode as BinaryTreeNode, __webpack_exports__Blink as Blink, __webpack_exports__BodyComponent as BodyComponent, __webpack_exports__BoundingBox as BoundingBox, __webpack_exports__BroadphaseStrategy as BroadphaseStrategy, __webpack_exports__BrowserComponent as BrowserComponent, __webpack_exports__BrowserEvents as BrowserEvents, __webpack_exports__Camera as Camera, __webpack_exports__Canvas as Canvas, __webpack_exports__Cell as Cell, __webpack_exports__Circle as Circle, __webpack_exports__CircleCollider as CircleCollider, __webpack_exports__Class as Class, __webpack_exports__ClosestLine as ClosestLine, __webpack_exports__ClosestLineJumpTable as ClosestLineJumpTable, __webpack_exports__Collider as Collider, __webpack_exports__ColliderComponent as ColliderComponent, __webpack_exports__CollisionContact as CollisionContact, __webpack_exports__CollisionEndEvent as CollisionEndEvent, __webpack_exports__CollisionGroup as CollisionGroup, __webpack_exports__CollisionGroupManager as CollisionGroupManager, __webpack_exports__CollisionJumpTable as CollisionJumpTable, __webpack_exports__CollisionPostSolveEvent as CollisionPostSolveEvent, __webpack_exports__CollisionPreSolveEvent as CollisionPreSolveEvent, __webpack_exports__CollisionResolutionStrategy as CollisionResolutionStrategy, __webpack_exports__CollisionSolver as CollisionSolver, __webpack_exports__CollisionStartEvent as CollisionStartEvent, __webpack_exports__CollisionSystem as CollisionSystem, __webpack_exports__CollisionType as CollisionType, __webpack_exports__Color as Color, __webpack_exports__ColorBlindCorrector as ColorBlindCorrector, __webpack_exports__ColorBlindFlags as ColorBlindFlags, __webpack_exports__ColorBlindness as ColorBlindness, __webpack_exports__Component as Component, __webpack_exports__CompositeCollider as CompositeCollider, __webpack_exports__Configurable as Configurable, __webpack_exports__ConsoleAppender as ConsoleAppender, __webpack_exports__ContactConstraintPoint as ContactConstraintPoint, __webpack_exports__ContactEndEvent as ContactEndEvent, __webpack_exports__ContactStartEvent as ContactStartEvent, __webpack_exports__CoordPlane as CoordPlane, __webpack_exports__CullingBox as CullingBox, __webpack_exports__DeactivateEvent as DeactivateEvent, __webpack_exports__Debug as Debug, __webpack_exports__DebugSystem as DebugSystem, __webpack_exports__DebugText as DebugText, __webpack_exports__DegreeOfFreedom as DegreeOfFreedom, __webpack_exports__Detector as Detector, __webpack_exports__Die as Die, __webpack_exports__Direction as Direction, __webpack_exports__DisplayMode as DisplayMode, __webpack_exports__DynamicTree as DynamicTree, __webpack_exports__DynamicTreeCollisionProcessor as DynamicTreeCollisionProcessor, __webpack_exports__EX_VERSION as EX_VERSION, __webpack_exports__EaseTo as EaseTo, __webpack_exports__EasingFunctions as EasingFunctions, __webpack_exports__EdgeCollider as EdgeCollider, __webpack_exports__ElasticToActorStrategy as ElasticToActorStrategy, __webpack_exports__EmitterType as EmitterType, __webpack_exports__Engine as Engine, __webpack_exports__EnterTriggerEvent as EnterTriggerEvent, __webpack_exports__EnterViewPortEvent as EnterViewPortEvent, __webpack_exports__Entity as Entity, __webpack_exports__EntityManager as EntityManager, __webpack_exports__EventDispatcher as EventDispatcher, __webpack_exports__EventTypes as EventTypes, __webpack_exports__Events as Events, __webpack_exports__ExResponse as ExResponse, __webpack_exports__ExcaliburGraphicsContext2DCanvas as ExcaliburGraphicsContext2DCanvas, __webpack_exports__ExcaliburGraphicsContextWebGL as ExcaliburGraphicsContextWebGL, __webpack_exports__ExitTriggerEvent as ExitTriggerEvent, __webpack_exports__ExitViewPortEvent as ExitViewPortEvent, __webpack_exports__Experiments as Experiments, __webpack_exports__Fade as Fade, __webpack_exports__Flags as Flags, __webpack_exports__Follow as Follow, __webpack_exports__Font as Font, __webpack_exports__FontStyle as FontStyle, __webpack_exports__FontUnit as FontUnit, __webpack_exports__FrameStats as FrameStats, __webpack_exports__GameEvent as GameEvent, __webpack_exports__GameStartEvent as GameStartEvent, __webpack_exports__GameStopEvent as GameStopEvent, __webpack_exports__GamepadAxisEvent as GamepadAxisEvent, __webpack_exports__GamepadButtonEvent as GamepadButtonEvent, __webpack_exports__GamepadConnectEvent as GamepadConnectEvent, __webpack_exports__GamepadDisconnectEvent as GamepadDisconnectEvent, __webpack_exports__Gif as Gif, __webpack_exports__GlobalCoordinates as GlobalCoordinates, __webpack_exports__Graphic as Graphic, __webpack_exports__GraphicsComponent as GraphicsComponent, __webpack_exports__GraphicsGroup as GraphicsGroup, __webpack_exports__GraphicsLayer as GraphicsLayer, __webpack_exports__GraphicsLayers as GraphicsLayers, __webpack_exports__GraphicsSystem as GraphicsSystem, __webpack_exports__HiddenEvent as HiddenEvent, __webpack_exports__ImageSource as ImageSource, __webpack_exports__InitializeEvent as InitializeEvent, __webpack_exports__Input as Input, __webpack_exports__Integrator as Integrator, __webpack_exports__KillEvent as KillEvent, __webpack_exports__Label as Label, __webpack_exports__Legacy as Legacy, __webpack_exports__LegacyDrawing as LegacyDrawing, __webpack_exports__LimitCameraBoundsStrategy as LimitCameraBoundsStrategy, __webpack_exports__Line as Line, __webpack_exports__Loader as Loader, __webpack_exports__LockCameraToActorAxisStrategy as LockCameraToActorAxisStrategy, __webpack_exports__LockCameraToActorStrategy as LockCameraToActorStrategy, __webpack_exports__LogLevel as LogLevel, __webpack_exports__Logger as Logger, __webpack_exports__Matrix as Matrix, __webpack_exports__MatrixLocations as MatrixLocations, __webpack_exports__MediaEvent as MediaEvent, __webpack_exports__Meet as Meet, __webpack_exports__MockedElement as MockedElement, __webpack_exports__MotionComponent as MotionComponent, __webpack_exports__MotionSystem as MotionSystem, __webpack_exports__MoveBy as MoveBy, __webpack_exports__MoveTo as MoveTo, __webpack_exports__NativeSoundEvent as NativeSoundEvent, __webpack_exports__NativeSoundProcessedEvent as NativeSoundProcessedEvent, __webpack_exports__Observable as Observable, __webpack_exports__Pair as Pair, __webpack_exports__ParseGif as ParseGif, __webpack_exports__Particle as Particle, __webpack_exports__ParticleEmitter as ParticleEmitter, __webpack_exports__Physics as Physics, __webpack_exports__PhysicsStats as PhysicsStats, __webpack_exports__PointerComponent as PointerComponent, __webpack_exports__Polygon as Polygon, __webpack_exports__PolygonCollider as PolygonCollider, __webpack_exports__Pool as Pool, __webpack_exports__PostCollisionEvent as PostCollisionEvent, __webpack_exports__PostDebugDrawEvent as PostDebugDrawEvent, __webpack_exports__PostDrawEvent as PostDrawEvent, __webpack_exports__PostFrameEvent as PostFrameEvent, __webpack_exports__PostKillEvent as PostKillEvent, __webpack_exports__PostUpdateEvent as PostUpdateEvent, __webpack_exports__PreCollisionEvent as PreCollisionEvent, __webpack_exports__PreDebugDrawEvent as PreDebugDrawEvent, __webpack_exports__PreDrawEvent as PreDrawEvent, __webpack_exports__PreFrameEvent as PreFrameEvent, __webpack_exports__PreKillEvent as PreKillEvent, __webpack_exports__PreUpdateEvent as PreUpdateEvent, __webpack_exports__Projection as Projection, __webpack_exports__Promise as Promise, __webpack_exports__PromiseState as PromiseState, __webpack_exports__Query as Query, __webpack_exports__QueryManager as QueryManager, __webpack_exports__RadiusAroundActorStrategy as RadiusAroundActorStrategy, __webpack_exports__Random as Random, __webpack_exports__Raster as Raster, __webpack_exports__Ray as Ray, __webpack_exports__RealisticSolver as RealisticSolver, __webpack_exports__Rectangle as Rectangle, __webpack_exports__RemovedComponent as RemovedComponent, __webpack_exports__RemovedEntity as RemovedEntity, __webpack_exports__Repeat as Repeat, __webpack_exports__RepeatForever as RepeatForever, __webpack_exports__Resolution as Resolution, __webpack_exports__Resource as Resource, __webpack_exports__RotateBy as RotateBy, __webpack_exports__RotateTo as RotateTo, __webpack_exports__RotationType as RotationType, __webpack_exports__ScaleBy as ScaleBy, __webpack_exports__ScaleTo as ScaleTo, __webpack_exports__Scene as Scene, __webpack_exports__Screen as Screen, __webpack_exports__ScreenAppender as ScreenAppender, __webpack_exports__ScreenElement as ScreenElement, __webpack_exports__ScrollPreventionMode as ScrollPreventionMode, __webpack_exports__Shape as Shape, __webpack_exports__Side as Side, __webpack_exports__SortedList as SortedList, __webpack_exports__Sound as Sound, __webpack_exports__Sprite as Sprite, __webpack_exports__SpriteFont as SpriteFont, __webpack_exports__SpriteSheet as SpriteSheet, __webpack_exports__StrategyContainer as StrategyContainer, __webpack_exports__Stream as Stream, __webpack_exports__SubscribeEvent as SubscribeEvent, __webpack_exports__System as System, __webpack_exports__SystemManager as SystemManager, __webpack_exports__SystemType as SystemType, __webpack_exports__TagComponent as TagComponent, __webpack_exports__Text as Text, __webpack_exports__TextAlign as TextAlign, __webpack_exports__TileMap as TileMap, __webpack_exports__Timer as Timer, __webpack_exports__Traits as Traits, __webpack_exports__TransformComponent as TransformComponent, __webpack_exports__TreeNode as TreeNode, __webpack_exports__Trigger as Trigger, __webpack_exports__UnsubscribeEvent as UnsubscribeEvent, __webpack_exports__Util as Util, __webpack_exports__Vector as Vector, __webpack_exports__VectorView as VectorView, __webpack_exports__VisibleEvent as VisibleEvent, __webpack_exports__WebAudioInstance as WebAudioInstance, __webpack_exports__World as World, __webpack_exports__canonicalizeAngle as canonicalizeAngle, __webpack_exports__clamp as clamp, __webpack_exports__createId as createId, __webpack_exports__hasGraphicsTick as hasGraphicsTick, __webpack_exports__hasOnInitialize as hasOnInitialize, __webpack_exports__hasOnPostUpdate as hasOnPostUpdate, __webpack_exports__hasOnPreUpdate as hasOnPreUpdate, __webpack_exports__hasPostDraw as hasPostDraw, __webpack_exports__hasPreDraw as hasPreDraw, __webpack_exports__has_initialize as has_initialize, __webpack_exports__has_postupdate as has_postupdate, __webpack_exports__has_preupdate as has_preupdate, __webpack_exports__isAddedComponent as isAddedComponent, __webpack_exports__isAddedSystemEntity as isAddedSystemEntity, __webpack_exports__isRemoveSystemEntity as isRemoveSystemEntity, __webpack_exports__isRemovedComponent as isRemovedComponent, __webpack_exports__maxMessages as maxMessages, __webpack_exports__obsolete as obsolete, __webpack_exports__randomInRange as randomInRange, __webpack_exports__randomIntInRange as randomIntInRange, __webpack_exports__range as range, __webpack_exports__resetObsoleteCounter as resetObsoleteCounter, __webpack_exports__toDegrees as toDegrees, __webpack_exports__toRadians as toRadians, __webpack_exports__vec as vec };
|
|
29138
|
+
export { __webpack_exports__ActionContext as ActionContext, __webpack_exports__ActionQueue as ActionQueue, __webpack_exports__ActionsComponent as ActionsComponent, __webpack_exports__ActionsSystem as ActionsSystem, __webpack_exports__ActivateEvent as ActivateEvent, __webpack_exports__Actor as Actor, __webpack_exports__AddedComponent as AddedComponent, __webpack_exports__AddedEntity as AddedEntity, __webpack_exports__Animation as Animation, __webpack_exports__AnimationDirection as AnimationDirection, __webpack_exports__AnimationStrategy as AnimationStrategy, __webpack_exports__ArcadeSolver as ArcadeSolver, __webpack_exports__AudioContextFactory as AudioContextFactory, __webpack_exports__Axis as Axis, __webpack_exports__BaseAlign as BaseAlign, __webpack_exports__BinaryTreeNode as BinaryTreeNode, __webpack_exports__Blink as Blink, __webpack_exports__BodyComponent as BodyComponent, __webpack_exports__BoundingBox as BoundingBox, __webpack_exports__BroadphaseStrategy as BroadphaseStrategy, __webpack_exports__BrowserComponent as BrowserComponent, __webpack_exports__BrowserEvents as BrowserEvents, __webpack_exports__Camera as Camera, __webpack_exports__Canvas as Canvas, __webpack_exports__Cell as Cell, __webpack_exports__Circle as Circle, __webpack_exports__CircleCollider as CircleCollider, __webpack_exports__Class as Class, __webpack_exports__Clock as Clock, __webpack_exports__ClosestLine as ClosestLine, __webpack_exports__ClosestLineJumpTable as ClosestLineJumpTable, __webpack_exports__Collider as Collider, __webpack_exports__ColliderComponent as ColliderComponent, __webpack_exports__CollisionContact as CollisionContact, __webpack_exports__CollisionEndEvent as CollisionEndEvent, __webpack_exports__CollisionGroup as CollisionGroup, __webpack_exports__CollisionGroupManager as CollisionGroupManager, __webpack_exports__CollisionJumpTable as CollisionJumpTable, __webpack_exports__CollisionPostSolveEvent as CollisionPostSolveEvent, __webpack_exports__CollisionPreSolveEvent as CollisionPreSolveEvent, __webpack_exports__CollisionResolutionStrategy as CollisionResolutionStrategy, __webpack_exports__CollisionSolver as CollisionSolver, __webpack_exports__CollisionStartEvent as CollisionStartEvent, __webpack_exports__CollisionSystem as CollisionSystem, __webpack_exports__CollisionType as CollisionType, __webpack_exports__Color as Color, __webpack_exports__ColorBlindCorrector as ColorBlindCorrector, __webpack_exports__ColorBlindFlags as ColorBlindFlags, __webpack_exports__ColorBlindness as ColorBlindness, __webpack_exports__Component as Component, __webpack_exports__CompositeCollider as CompositeCollider, __webpack_exports__Configurable as Configurable, __webpack_exports__ConsoleAppender as ConsoleAppender, __webpack_exports__ContactConstraintPoint as ContactConstraintPoint, __webpack_exports__ContactEndEvent as ContactEndEvent, __webpack_exports__ContactStartEvent as ContactStartEvent, __webpack_exports__CoordPlane as CoordPlane, __webpack_exports__CullingBox as CullingBox, __webpack_exports__DeactivateEvent as DeactivateEvent, __webpack_exports__Debug as Debug, __webpack_exports__DebugSystem as DebugSystem, __webpack_exports__DebugText as DebugText, __webpack_exports__DegreeOfFreedom as DegreeOfFreedom, __webpack_exports__Detector as Detector, __webpack_exports__Die as Die, __webpack_exports__Direction as Direction, __webpack_exports__DisplayMode as DisplayMode, __webpack_exports__DynamicTree as DynamicTree, __webpack_exports__DynamicTreeCollisionProcessor as DynamicTreeCollisionProcessor, __webpack_exports__EX_VERSION as EX_VERSION, __webpack_exports__EaseTo as EaseTo, __webpack_exports__EasingFunctions as EasingFunctions, __webpack_exports__EdgeCollider as EdgeCollider, __webpack_exports__ElasticToActorStrategy as ElasticToActorStrategy, __webpack_exports__EmitterType as EmitterType, __webpack_exports__Engine as Engine, __webpack_exports__EnterTriggerEvent as EnterTriggerEvent, __webpack_exports__EnterViewPortEvent as EnterViewPortEvent, __webpack_exports__Entity as Entity, __webpack_exports__EntityManager as EntityManager, __webpack_exports__EventDispatcher as EventDispatcher, __webpack_exports__EventTypes as EventTypes, __webpack_exports__Events as Events, __webpack_exports__ExResponse as ExResponse, __webpack_exports__ExcaliburGraphicsContext2DCanvas as ExcaliburGraphicsContext2DCanvas, __webpack_exports__ExcaliburGraphicsContextWebGL as ExcaliburGraphicsContextWebGL, __webpack_exports__ExitTriggerEvent as ExitTriggerEvent, __webpack_exports__ExitViewPortEvent as ExitViewPortEvent, __webpack_exports__Experiments as Experiments, __webpack_exports__Fade as Fade, __webpack_exports__Flags as Flags, __webpack_exports__Follow as Follow, __webpack_exports__Font as Font, __webpack_exports__FontStyle as FontStyle, __webpack_exports__FontUnit as FontUnit, __webpack_exports__FpsSampler as FpsSampler, __webpack_exports__FrameStats as FrameStats, __webpack_exports__GameEvent as GameEvent, __webpack_exports__GameStartEvent as GameStartEvent, __webpack_exports__GameStopEvent as GameStopEvent, __webpack_exports__GamepadAxisEvent as GamepadAxisEvent, __webpack_exports__GamepadButtonEvent as GamepadButtonEvent, __webpack_exports__GamepadConnectEvent as GamepadConnectEvent, __webpack_exports__GamepadDisconnectEvent as GamepadDisconnectEvent, __webpack_exports__Gif as Gif, __webpack_exports__GlobalCoordinates as GlobalCoordinates, __webpack_exports__Graphic as Graphic, __webpack_exports__GraphicsComponent as GraphicsComponent, __webpack_exports__GraphicsGroup as GraphicsGroup, __webpack_exports__GraphicsLayer as GraphicsLayer, __webpack_exports__GraphicsLayers as GraphicsLayers, __webpack_exports__GraphicsSystem as GraphicsSystem, __webpack_exports__HiddenEvent as HiddenEvent, __webpack_exports__ImageSource as ImageSource, __webpack_exports__InitializeEvent as InitializeEvent, __webpack_exports__Input as Input, __webpack_exports__Integrator as Integrator, __webpack_exports__KillEvent as KillEvent, __webpack_exports__Label as Label, __webpack_exports__Legacy as Legacy, __webpack_exports__LegacyDrawing as LegacyDrawing, __webpack_exports__LimitCameraBoundsStrategy as LimitCameraBoundsStrategy, __webpack_exports__Line as Line, __webpack_exports__Loader as Loader, __webpack_exports__LockCameraToActorAxisStrategy as LockCameraToActorAxisStrategy, __webpack_exports__LockCameraToActorStrategy as LockCameraToActorStrategy, __webpack_exports__LogLevel as LogLevel, __webpack_exports__Logger as Logger, __webpack_exports__Matrix as Matrix, __webpack_exports__MatrixLocations as MatrixLocations, __webpack_exports__MediaEvent as MediaEvent, __webpack_exports__Meet as Meet, __webpack_exports__MockedElement as MockedElement, __webpack_exports__MotionComponent as MotionComponent, __webpack_exports__MotionSystem as MotionSystem, __webpack_exports__MoveBy as MoveBy, __webpack_exports__MoveTo as MoveTo, __webpack_exports__NativeSoundEvent as NativeSoundEvent, __webpack_exports__NativeSoundProcessedEvent as NativeSoundProcessedEvent, __webpack_exports__Observable as Observable, __webpack_exports__Pair as Pair, __webpack_exports__ParseGif as ParseGif, __webpack_exports__Particle as Particle, __webpack_exports__ParticleEmitter as ParticleEmitter, __webpack_exports__Physics as Physics, __webpack_exports__PhysicsStats as PhysicsStats, __webpack_exports__PointerComponent as PointerComponent, __webpack_exports__Polygon as Polygon, __webpack_exports__PolygonCollider as PolygonCollider, __webpack_exports__Pool as Pool, __webpack_exports__PostCollisionEvent as PostCollisionEvent, __webpack_exports__PostDebugDrawEvent as PostDebugDrawEvent, __webpack_exports__PostDrawEvent as PostDrawEvent, __webpack_exports__PostFrameEvent as PostFrameEvent, __webpack_exports__PostKillEvent as PostKillEvent, __webpack_exports__PostUpdateEvent as PostUpdateEvent, __webpack_exports__PreCollisionEvent as PreCollisionEvent, __webpack_exports__PreDebugDrawEvent as PreDebugDrawEvent, __webpack_exports__PreDrawEvent as PreDrawEvent, __webpack_exports__PreFrameEvent as PreFrameEvent, __webpack_exports__PreKillEvent as PreKillEvent, __webpack_exports__PreUpdateEvent as PreUpdateEvent, __webpack_exports__Projection as Projection, __webpack_exports__Promise as Promise, __webpack_exports__PromiseState as PromiseState, __webpack_exports__Query as Query, __webpack_exports__QueryManager as QueryManager, __webpack_exports__RadiusAroundActorStrategy as RadiusAroundActorStrategy, __webpack_exports__Random as Random, __webpack_exports__Raster as Raster, __webpack_exports__Ray as Ray, __webpack_exports__RealisticSolver as RealisticSolver, __webpack_exports__Rectangle as Rectangle, __webpack_exports__RemovedComponent as RemovedComponent, __webpack_exports__RemovedEntity as RemovedEntity, __webpack_exports__Repeat as Repeat, __webpack_exports__RepeatForever as RepeatForever, __webpack_exports__Resolution as Resolution, __webpack_exports__Resource as Resource, __webpack_exports__RotateBy as RotateBy, __webpack_exports__RotateTo as RotateTo, __webpack_exports__RotationType as RotationType, __webpack_exports__ScaleBy as ScaleBy, __webpack_exports__ScaleTo as ScaleTo, __webpack_exports__Scene as Scene, __webpack_exports__Screen as Screen, __webpack_exports__ScreenAppender as ScreenAppender, __webpack_exports__ScreenElement as ScreenElement, __webpack_exports__ScrollPreventionMode as ScrollPreventionMode, __webpack_exports__Shape as Shape, __webpack_exports__Side as Side, __webpack_exports__SortedList as SortedList, __webpack_exports__Sound as Sound, __webpack_exports__Sprite as Sprite, __webpack_exports__SpriteFont as SpriteFont, __webpack_exports__SpriteSheet as SpriteSheet, __webpack_exports__StandardClock as StandardClock, __webpack_exports__StrategyContainer as StrategyContainer, __webpack_exports__Stream as Stream, __webpack_exports__SubscribeEvent as SubscribeEvent, __webpack_exports__System as System, __webpack_exports__SystemManager as SystemManager, __webpack_exports__SystemType as SystemType, __webpack_exports__TagComponent as TagComponent, __webpack_exports__TestClock as TestClock, __webpack_exports__Text as Text, __webpack_exports__TextAlign as TextAlign, __webpack_exports__TileMap as TileMap, __webpack_exports__Timer as Timer, __webpack_exports__Traits as Traits, __webpack_exports__TransformComponent as TransformComponent, __webpack_exports__TreeNode as TreeNode, __webpack_exports__Trigger as Trigger, __webpack_exports__UnsubscribeEvent as UnsubscribeEvent, __webpack_exports__Util as Util, __webpack_exports__Vector as Vector, __webpack_exports__VectorView as VectorView, __webpack_exports__VisibleEvent as VisibleEvent, __webpack_exports__WebAudio as WebAudio, __webpack_exports__WebAudioInstance as WebAudioInstance, __webpack_exports__World as World, __webpack_exports__canonicalizeAngle as canonicalizeAngle, __webpack_exports__clamp as clamp, __webpack_exports__createId as createId, __webpack_exports__hasGraphicsTick as hasGraphicsTick, __webpack_exports__hasOnInitialize as hasOnInitialize, __webpack_exports__hasOnPostUpdate as hasOnPostUpdate, __webpack_exports__hasOnPreUpdate as hasOnPreUpdate, __webpack_exports__hasPostDraw as hasPostDraw, __webpack_exports__hasPreDraw as hasPreDraw, __webpack_exports__has_initialize as has_initialize, __webpack_exports__has_postupdate as has_postupdate, __webpack_exports__has_preupdate as has_preupdate, __webpack_exports__isAddedComponent as isAddedComponent, __webpack_exports__isAddedSystemEntity as isAddedSystemEntity, __webpack_exports__isRemoveSystemEntity as isRemoveSystemEntity, __webpack_exports__isRemovedComponent as isRemovedComponent, __webpack_exports__maxMessages as maxMessages, __webpack_exports__obsolete as obsolete, __webpack_exports__randomInRange as randomInRange, __webpack_exports__randomIntInRange as randomIntInRange, __webpack_exports__range as range, __webpack_exports__resetObsoleteCounter as resetObsoleteCounter, __webpack_exports__toDegrees as toDegrees, __webpack_exports__toRadians as toRadians, __webpack_exports__vec as vec };
|
|
28741
29139
|
|
|
28742
29140
|
//# sourceMappingURL=excalibur.js.map
|