excalibur
Version:
Excalibur.js is a simple JavaScript game engine with TypeScript bindings for making 2D games in HTML5 Canvas. Our mission is to make web game development as simple as possible.
1,290 lines (1,236 loc) • 1.39 MB
JavaScript
/*!
* excalibur - 0.30.3 - 2025-1-1
* https://github.com/excaliburjs/Excalibur
* Copyright (c) 2025 Excalibur.js <https://github.com/excaliburjs/Excalibur/graphs/contributors>
* Licensed BSD-2-Clause
* @preserve
*/
/******/ var __webpack_modules__ = ({
/***/ 851:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(935);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, `/* Buttons styles start */
button#excalibur-play {
display: inline-block;
position: relative;
z-index: 999;
border-radius: 6px;
border: none;
/*border: 3px solid;
border-color: white;
box-shadow: 0 0 10px #ccc;*/
padding: 1rem 1.5rem 1rem 4rem;
margin: 0;
text-decoration: none;
background: #00b233;
color: #ffffff;
font-family: sans-serif;
font-size: 2rem;
white-space: nowrap;
line-height: 1;
cursor: pointer;
text-align: center;
transition:
background 250ms ease-in-out,
transform 150ms ease;
-webkit-appearance: none;
-moz-appearance: none;
-webkit-animation: excalibur-button-fadein 200ms; /* Safari, Chrome and Opera > 12.1 */
-moz-animation: excalibur-button-fadein 200ms; /* Firefox < 16 */
-ms-animation: excalibur-button-fadein 200ms; /* Internet Explorer */
-o-animation: excalibur-button-fadein 200ms; /* Opera < 12.1 */
animation: excalibur-button-fadein 200ms;
}
/*
button#excalibur-play {
display: none;
}*/
button#excalibur-play:after {
position: absolute;
content: '';
border: 8px solid;
border-color: transparent transparent transparent white;
left: 35px;
top: 24px;
width: 0;
height: 0;
}
button#excalibur-play:before {
position: absolute;
content: '';
border: 3px solid;
left: 19px;
top: 14px;
border-radius: 20px;
width: 30px;
height: 30px;
}
button#excalibur-play:hover,
button#excalibur-play:focus {
background: #00982c;
}
button#excalibur-play:focus {
outline: 1px solid #fff;
outline-offset: -4px;
}
button#excalibur-play:active {
transform: scale(0.99);
}
@keyframes excalibur-button-fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Firefox < 16 */
@-moz-keyframes excalibur-button-fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Safari, Chrome and Opera > 12.1 */
@-webkit-keyframes excalibur-button-fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Internet Explorer */
@-ms-keyframes excalibur-button-fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Opera < 12.1 */
@-o-keyframes excalibur-button-fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
`, "",{"version":3,"sources":["webpack://./Director/Loader.css"],"names":[],"mappings":"AAAA,yBAAyB;;AAEzB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,YAAY;EACZ,kBAAkB;EAClB,YAAY;EACZ;;+BAE6B;EAC7B,8BAA8B;EAC9B,SAAS;EACT,qBAAqB;EACrB,mBAAmB;EACnB,cAAc;EACd,uBAAuB;EACvB,eAAe;EACf,mBAAmB;EACnB,cAAc;EACd,eAAe;EACf,kBAAkB;EAClB;;wBAEsB;EACtB,wBAAwB;EACxB,qBAAqB;;EAErB,gDAAgD,EAAE,oCAAoC;EACtF,6CAA6C,EAAE,iBAAiB;EAChE,4CAA4C,EAAE,sBAAsB;EACpE,2CAA2C,EAAE,iBAAiB;EAC9D,wCAAwC;AAC1C;;AAEA;;;EAGE;;AAEF;EACE,kBAAkB;EAClB,WAAW;EACX,iBAAiB;EACjB,uDAAuD;EACvD,UAAU;EACV,SAAS;EACT,QAAQ;EACR,SAAS;AACX;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,iBAAiB;EACjB,UAAU;EACV,SAAS;EACT,mBAAmB;EACnB,WAAW;EACX,YAAY;AACd;;AAEA;;EAEE,mBAAmB;AACrB;;AAEA;EACE,uBAAuB;EACvB,oBAAoB;AACtB;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;;AAEA,iBAAiB;AACjB;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;;AAEA,oCAAoC;AACpC;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;;AAEA,sBAAsB;AACtB;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;;AAEA,iBAAiB;AACjB;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF","sourcesContent":["/* Buttons styles start */\r\n\r\nbutton#excalibur-play {\r\n display: inline-block;\r\n position: relative;\r\n z-index: 999;\r\n border-radius: 6px;\r\n border: none;\r\n /*border: 3px solid;\r\n border-color: white;\r\n box-shadow: 0 0 10px #ccc;*/\r\n padding: 1rem 1.5rem 1rem 4rem;\r\n margin: 0;\r\n text-decoration: none;\r\n background: #00b233;\r\n color: #ffffff;\r\n font-family: sans-serif;\r\n font-size: 2rem;\r\n white-space: nowrap;\r\n line-height: 1;\r\n cursor: pointer;\r\n text-align: center;\r\n transition:\r\n background 250ms ease-in-out,\r\n transform 150ms ease;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n\r\n -webkit-animation: excalibur-button-fadein 200ms; /* Safari, Chrome and Opera > 12.1 */\r\n -moz-animation: excalibur-button-fadein 200ms; /* Firefox < 16 */\r\n -ms-animation: excalibur-button-fadein 200ms; /* Internet Explorer */\r\n -o-animation: excalibur-button-fadein 200ms; /* Opera < 12.1 */\r\n animation: excalibur-button-fadein 200ms;\r\n}\r\n\r\n/*\r\nbutton#excalibur-play {\r\n display: none;\r\n}*/\r\n\r\nbutton#excalibur-play:after {\r\n position: absolute;\r\n content: '';\r\n border: 8px solid;\r\n border-color: transparent transparent transparent white;\r\n left: 35px;\r\n top: 24px;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\nbutton#excalibur-play:before {\r\n position: absolute;\r\n content: '';\r\n border: 3px solid;\r\n left: 19px;\r\n top: 14px;\r\n border-radius: 20px;\r\n width: 30px;\r\n height: 30px;\r\n}\r\n\r\nbutton#excalibur-play:hover,\r\nbutton#excalibur-play:focus {\r\n background: #00982c;\r\n}\r\n\r\nbutton#excalibur-play:focus {\r\n outline: 1px solid #fff;\r\n outline-offset: -4px;\r\n}\r\n\r\nbutton#excalibur-play:active {\r\n transform: scale(0.99);\r\n}\r\n\r\n@keyframes excalibur-button-fadein {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n/* Firefox < 16 */\r\n@-moz-keyframes excalibur-button-fadein {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n/* Safari, Chrome and Opera > 12.1 */\r\n@-webkit-keyframes excalibur-button-fadein {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n/* Internet Explorer */\r\n@-ms-keyframes excalibur-button-fadein {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n/* Opera < 12.1 */\r\n@-o-keyframes excalibur-button-fadein {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 296:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(935);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, `#ex-toast-container {
position: absolute;
height: 0;
min-width: 50%;
left: 50%;
top: 0;
}
.ex-toast-message {
left: -50%;
position: relative;
display: flex;
justify-content: space-between;
padding: 10px;
margin-top: 5px;
font-size: 18px;
font-family: sans-serif;
border-radius: 6px;
border: 3px solid #b7b779;
background-color: rgb(253, 253, 192);
}
.ex-toast-message button {
align-self: flex-start;
}
`, "",{"version":3,"sources":["webpack://./Util/Toaster.css"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,SAAS;EACT,cAAc;EACd,SAAS;EACT,MAAM;AACR;;AAEA;EACE,UAAU;EACV,kBAAkB;EAClB,aAAa;EACb,8BAA8B;;EAE9B,aAAa;EACb,eAAe;EACf,eAAe;EACf,uBAAuB;EACvB,kBAAkB;EAClB,yBAAyB;EACzB,oCAAoC;AACtC;;AAEA;EACE,sBAAsB;AACxB","sourcesContent":["#ex-toast-container {\r\n position: absolute;\r\n height: 0;\r\n min-width: 50%;\r\n left: 50%;\r\n top: 0;\r\n}\r\n\r\n.ex-toast-message {\r\n left: -50%;\r\n position: relative;\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n padding: 10px;\r\n margin-top: 5px;\r\n font-size: 18px;\r\n font-family: sans-serif;\r\n border-radius: 6px;\r\n border: 3px solid #b7b779;\r\n background-color: rgb(253, 253, 192);\r\n}\r\n\r\n.ex-toast-message button {\r\n align-self: flex-start;\r\n}\r\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 935:
/***/ ((module) => {
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
module.exports = function (cssWithMappingToString) {
var list = [];
// return the list of modules as css string
list.toString = function toString() {
return this.map(function (item) {
var content = "";
var needLayer = typeof item[5] !== "undefined";
if (item[4]) {
content += "@supports (".concat(item[4], ") {");
}
if (item[2]) {
content += "@media ".concat(item[2], " {");
}
if (needLayer) {
content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
}
content += cssWithMappingToString(item);
if (needLayer) {
content += "}";
}
if (item[2]) {
content += "}";
}
if (item[4]) {
content += "}";
}
return content;
}).join("");
};
// import a list of modules into the list
list.i = function i(modules, media, dedupe, supports, layer) {
if (typeof modules === "string") {
modules = [[null, modules, undefined]];
}
var alreadyImportedModules = {};
if (dedupe) {
for (var k = 0; k < this.length; k++) {
var id = this[k][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
}
for (var _k = 0; _k < modules.length; _k++) {
var item = [].concat(modules[_k]);
if (dedupe && alreadyImportedModules[item[0]]) {
continue;
}
if (typeof layer !== "undefined") {
if (typeof item[5] === "undefined") {
item[5] = layer;
} else {
item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
item[5] = layer;
}
}
if (media) {
if (!item[2]) {
item[2] = media;
} else {
item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
item[2] = media;
}
}
if (supports) {
if (!item[4]) {
item[4] = "".concat(supports);
} else {
item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
item[4] = supports;
}
}
list.push(item);
}
};
return list;
};
/***/ }),
/***/ 1:
/***/ ((module) => {
module.exports = function (item) {
var content = item[1];
var cssMapping = item[3];
if (!cssMapping) {
return content;
}
if (typeof btoa === "function") {
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
var sourceMapping = "/*# ".concat(data, " */");
return [content].concat([sourceMapping]).join("\n");
}
return [content].join("\n");
};
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
eKr: () => (/* reexport */ ActionCompleteEvent),
yVm: () => (/* reexport */ ActionContext),
a7j: () => (/* reexport */ ActionQueue),
U_w: () => (/* reexport */ ActionSequence),
JF2: () => (/* reexport */ ActionStartEvent),
htg: () => (/* reexport */ ActionsComponent),
HXL: () => (/* reexport */ ActionsSystem),
mcg: () => (/* reexport */ ActivateEvent),
Agj: () => (/* reexport */ Actor),
J3_: () => (/* reexport */ ActorEvents),
Wgv: () => (/* reexport */ AddEvent),
u6S: () => (/* reexport */ AddedComponent),
x7M: () => (/* reexport */ AffineMatrix),
X55: () => (/* reexport */ Animation),
m3M: () => (/* reexport */ AnimationDirection),
aE5: () => (/* reexport */ AnimationEvents),
YJU: () => (/* reexport */ AnimationStrategy),
eZi: () => (/* reexport */ ArcadeSolver),
GNv: () => (/* reexport */ AudioContextFactory),
Y56: () => (/* reexport */ Axes),
_0v: () => (/* reexport */ Axis),
vhs: () => (/* reexport */ BaseAlign),
vrQ: () => (/* reexport */ BezierCurve),
Z8b: () => (/* reexport */ Blink),
Yfw: () => (/* reexport */ BodyComponent),
IcQ: () => (/* reexport */ BoundingBox),
kgJ: () => (/* reexport */ BrowserComponent),
GTT: () => (/* reexport */ BrowserEvents),
ypY: () => (/* reexport */ Buttons),
i7d: () => (/* reexport */ Camera),
fQ3: () => (/* reexport */ CameraEvents),
HlI: () => (/* reexport */ Canvas),
jlt: () => (/* reexport */ Circle),
VQc: () => (/* reexport */ CircleCollider),
zD7: () => (/* reexport */ Clock),
AUF: () => (/* reexport */ ClosestLineJumpTable),
JoF: () => (/* reexport */ Collider),
MlA: () => (/* reexport */ ColliderComponent),
PZh: () => (/* reexport */ CollisionContact),
qA: () => (/* reexport */ CollisionEndEvent),
CrD: () => (/* reexport */ CollisionGroup),
dQK: () => (/* reexport */ CollisionGroupManager),
D3r: () => (/* reexport */ CollisionJumpTable),
Qpo: () => (/* reexport */ CollisionPostSolveEvent),
D9n: () => (/* reexport */ CollisionPreSolveEvent),
b6v: () => (/* reexport */ CollisionStartEvent),
mvh: () => (/* reexport */ CollisionSystem),
Bpo: () => (/* reexport */ CollisionType),
Q1f: () => (/* reexport */ Color),
IKv: () => (/* reexport */ ColorBlindFlags),
fcV: () => (/* reexport */ ColorBlindnessMode),
Glf: () => (/* reexport */ ColorBlindnessPostProcessor),
uAl: () => (/* reexport */ Component),
ElT: () => (/* reexport */ CompositeCollider),
Z8r: () => (/* reexport */ ConsoleAppender),
QSL: () => (/* reexport */ ContactConstraintPoint),
sPV: () => (/* reexport */ ContactEndEvent),
nAn: () => (/* reexport */ ContactSolveBias),
zCU: () => (/* reexport */ ContactStartEvent),
QrV: () => (/* reexport */ CoordPlane),
fF9: () => (/* reexport */ CrossFade),
Jqv: () => (/* reexport */ CurveBy),
d_u: () => (/* reexport */ CurveTo),
xI8: () => (/* reexport */ DeactivateEvent),
yar: () => (/* reexport */ Debug),
SP7: () => (/* reexport */ DebugConfig),
oRy: () => (/* reexport */ DebugGraphicsComponent),
f5X: () => (/* reexport */ DebugSystem),
V1c: () => (/* reexport */ DebugText),
Mlx: () => (/* reexport */ DefaultAntialiasOptions),
ZiM: () => (/* reexport */ DefaultGarbageCollectionOptions),
ZCo: () => (/* reexport */ DefaultLoader),
J5p: () => (/* reexport */ DefaultPixelArtOptions),
mL_: () => (/* reexport */ DegreeOfFreedom),
Guw: () => (/* reexport */ Delay),
N5j: () => (/* reexport */ Detector),
pgY: () => (/* reexport */ Die),
OP3: () => (/* reexport */ Direction),
rl5: () => (/* reexport */ Director),
eod: () => (/* reexport */ DirectorEvents),
q5Z: () => (/* reexport */ DisplayMode),
YUC: () => (/* reexport */ DynamicTree),
saR: () => (/* reexport */ DynamicTreeCollisionProcessor),
hvr: () => (/* binding */ EX_VERSION),
Qol: () => (/* reexport */ EaseBy),
Wf4: () => (/* reexport */ EaseTo),
JCs: () => (/* reexport */ EasingFunctions),
gJV: () => (/* reexport */ EdgeCollider),
fWD: () => (/* reexport */ ElasticToActorStrategy),
Va_: () => (/* reexport */ EmitterType),
N$8: () => (/* reexport */ Engine),
_jQ: () => (/* reexport */ EngineEvents),
rxj: () => (/* reexport */ EnterTriggerEvent),
rhv: () => (/* reexport */ EnterViewPortEvent),
wCu: () => (/* reexport */ Entity),
HAp: () => (/* reexport */ EntityEvents),
Zy1: () => (/* reexport */ EntityManager),
bkB: () => (/* reexport */ EventEmitter),
wfL: () => (/* reexport */ EventTypes),
sVA: () => (/* reexport */ Events_namespaceObject),
$Gs: () => (/* reexport */ ExResponse),
CJ0: () => (/* reexport */ ExcaliburGraphicsContext2DCanvas),
NWh: () => (/* reexport */ ExcaliburGraphicsContextWebGL),
tWi: () => (/* reexport */ ExitTriggerEvent),
xAj: () => (/* reexport */ ExitViewPortEvent),
zWh: () => (/* reexport */ Fade),
i_4: () => (/* reexport */ FadeInOut),
iIx: () => (/* reexport */ Flags),
Hxo: () => (/* reexport */ Flash),
c9e: () => (/* reexport */ Follow),
KQV: () => (/* reexport */ Font),
weH: () => (/* reexport */ FontCache),
jXp: () => (/* reexport */ FontSource),
zzY: () => (/* reexport */ FontStyle),
yRQ: () => (/* reexport */ FontUnit),
MtE: () => (/* reexport */ FpsSampler),
rPj: () => (/* reexport */ FrameStats),
KLc: () => (/* reexport */ Future),
Fir: () => (/* reexport */ GameEvent),
V5f: () => (/* reexport */ GameStartEvent),
Xj7: () => (/* reexport */ GameStopEvent),
Wud: () => (/* reexport */ Gamepad),
FVg: () => (/* reexport */ GamepadAxisEvent),
g5Y: () => (/* reexport */ GamepadButtonEvent),
YQB: () => (/* reexport */ GamepadConnectEvent),
KPb: () => (/* reexport */ GamepadDisconnectEvent),
nHK: () => (/* reexport */ Gamepads),
Jrb: () => (/* reexport */ GarbageCollector),
TX_: () => (/* reexport */ Gif),
Olt: () => (/* reexport */ GifParser),
r3n: () => (/* reexport */ GlobalCoordinates),
Fvk: () => (/* reexport */ GpuParticleEmitter),
gpR: () => (/* reexport */ GpuParticleRenderer),
vYh: () => (/* reexport */ Graphic),
hnk: () => (/* reexport */ GraphicsComponent),
D2R: () => (/* reexport */ GraphicsGroup),
n1o: () => (/* reexport */ GraphicsSystem),
h9O: () => (/* reexport */ HashColliderProxy),
X5j: () => (/* reexport */ HashGridCell),
p3P: () => (/* reexport */ HashGridProxy),
RLG: () => (/* reexport */ HiddenEvent),
fBU: () => (/* reexport */ HorizontalFirst),
Adb: () => (/* reexport */ ImageFiltering),
bEs: () => (/* reexport */ ImageSource),
wCy: () => (/* reexport */ ImageSourceAttributeConstants),
CbD: () => (/* reexport */ ImageWrapping),
x_C: () => (/* reexport */ InitializeEvent),
pGf: () => (/* reexport */ InputHost),
ibQ: () => (/* reexport */ InputMapper),
shR: () => (/* reexport */ IsometricEntityComponent),
Yjk: () => (/* reexport */ IsometricEntitySystem),
_u1: () => (/* reexport */ IsometricMap),
OBI: () => (/* reexport */ IsometricTile),
klh: () => (/* reexport */ KeyEvent),
s3S: () => (/* reexport */ Keyboard),
D$R: () => (/* reexport */ Keys),
xth: () => (/* reexport */ KillEvent),
JU7: () => (/* reexport */ Label),
h9x: () => (/* reexport */ LimitCameraBoundsStrategy),
N1A: () => (/* reexport */ Line),
e_k: () => (/* reexport */ LineSegment),
aHM: () => (/* reexport */ Loader),
tlv: () => (/* reexport */ LoaderEvents),
Vi9: () => (/* reexport */ LockCameraToActorAxisStrategy),
ieR: () => (/* reexport */ LockCameraToActorStrategy),
$bb: () => (/* reexport */ LogLevel),
VyI: () => (/* reexport */ Logger),
imn: () => (/* reexport */ Material),
uqu: () => (/* reexport */ Matrix),
QnL: () => (/* reexport */ MatrixLocations),
vnc: () => (/* reexport */ MediaEvent),
wk_: () => (/* reexport */ Meet),
GH0: () => (/* reexport */ MotionComponent),
_1r: () => (/* reexport */ MotionSystem),
l0X: () => (/* reexport */ MoveBy),
bT: () => (/* reexport */ MoveByWithOptions),
HHX: () => (/* reexport */ MoveTo),
jtW: () => (/* reexport */ MoveToWithOptions),
tjk: () => (/* reexport */ NativePointerButton),
rWe: () => (/* reexport */ NativeSoundEvent),
j9l: () => (/* reexport */ NativeSoundProcessedEvent),
l0$: () => (/* reexport */ NineSlice),
sGJ: () => (/* reexport */ NineSliceStretch),
NVp: () => (/* reexport */ None),
cPK: () => (/* reexport */ Observable),
XoL: () => (/* reexport */ OffscreenSystem),
RmF: () => (/* reexport */ Pair),
DXI: () => (/* reexport */ ParallaxComponent),
tCD: () => (/* reexport */ ParallelActions),
J3D: () => (/* reexport */ Particle),
vCJ: () => (/* reexport */ ParticleEmitter),
e6k: () => (/* reexport */ ParticleRenderer),
f9l: () => (/* reexport */ ParticleTransform),
v9m: () => (/* reexport */ PhysicsStats),
yRJ: () => (/* reexport */ PhysicsWorld),
EU6: () => (/* reexport */ PointerAbstraction),
m3O: () => (/* reexport */ PointerButton),
Ryz: () => (/* reexport */ PointerComponent),
OxP: () => (/* reexport */ PointerEvent),
LEs: () => (/* reexport */ PointerEventReceiver),
Ec: () => (/* reexport */ PointerScope),
Pi5: () => (/* reexport */ PointerSystem),
gmH: () => (/* reexport */ PointerType),
tS: () => (/* reexport */ Polygon),
XxX: () => (/* reexport */ PolygonCollider),
bCz: () => (/* reexport */ Pool),
nYS: () => (/* reexport */ PostCollisionEvent),
yiT: () => (/* reexport */ PostDebugDrawEvent),
NHl: () => (/* reexport */ PostDrawEvent),
mO8: () => (/* reexport */ PostFrameEvent),
PXI: () => (/* reexport */ PostKillEvent),
bn5: () => (/* reexport */ PostTransformDrawEvent),
Ywr: () => (/* reexport */ PostUpdateEvent),
cMd: () => (/* reexport */ PreCollisionEvent),
Bs6: () => (/* reexport */ PreDebugDrawEvent),
G0k: () => (/* reexport */ PreDrawEvent),
pyn: () => (/* reexport */ PreFrameEvent),
QeM: () => (/* reexport */ PreKillEvent),
aPX: () => (/* reexport */ PreLoadEvent),
ITP: () => (/* reexport */ PreTransformDrawEvent),
BY0: () => (/* reexport */ PreUpdateEvent),
MFw: () => (/* reexport */ Projection),
sBn: () => (/* reexport */ QuadIndexBuffer),
S3L: () => (/* reexport */ QuadTree),
XKQ: () => (/* reexport */ Query),
ESI: () => (/* reexport */ QueryManager),
uxz: () => (/* reexport */ RadiusAroundActorStrategy),
o8N: () => (/* reexport */ Random),
u_r: () => (/* reexport */ Raster),
RlV: () => (/* reexport */ Ray),
gVA: () => (/* reexport */ RealisticSolver),
M_G: () => (/* reexport */ Rectangle),
BpG: () => (/* reexport */ RemoveEvent),
GRB: () => (/* reexport */ RemovedComponent),
kM6: () => (/* reexport */ Repeat),
dO8: () => (/* reexport */ RepeatForever),
jgM: () => (/* reexport */ Resolution),
FWq: () => (/* reexport */ Resource),
s3j: () => (/* reexport */ ResourceEvents),
hlw: () => (/* reexport */ RotateBy),
L0q: () => (/* reexport */ RotateByWithOptions),
B7e: () => (/* reexport */ RotateTo),
PGN: () => (/* reexport */ RotateToWithOptions),
H_X: () => (/* reexport */ RotationType),
S_d: () => (/* reexport */ ScaleBy),
_Tq: () => (/* reexport */ ScaleByWithOptions),
U7E: () => (/* reexport */ ScaleTo),
IOH: () => (/* reexport */ ScaleToWithOptions),
Z58: () => (/* reexport */ Scene),
yh2: () => (/* reexport */ SceneEvents),
ff$: () => (/* reexport */ Screen),
cWi: () => (/* reexport */ ScreenAppender),
NBt: () => (/* reexport */ ScreenElement),
oNz: () => (/* reexport */ ScreenEvents),
QlU: () => (/* reexport */ ScreenShader),
Xey: () => (/* reexport */ ScrollPreventionMode),
jft: () => (/* reexport */ Semaphore),
_r8: () => (/* reexport */ SeparatingAxis),
bTC: () => (/* reexport */ SeparationInfo),
Mtr: () => (/* reexport */ Shader),
ypk: () => (/* reexport */ Shape),
mnM: () => (/* reexport */ Side),
q7S: () => (/* reexport */ Slide),
bAZ: () => (/* reexport */ SolverStrategy),
ABN: () => (/* reexport */ Sound),
VK6: () => (/* reexport */ SoundEvents),
Hj2: () => (/* reexport */ SparseHashGrid),
Df8: () => (/* reexport */ SparseHashGridCollisionProcessor),
oOx: () => (/* reexport */ SpatialPartitionStrategy),
kxk: () => (/* reexport */ Sprite),
DT1: () => (/* reexport */ SpriteFont),
FLG: () => (/* reexport */ SpriteSheet),
qN_: () => (/* reexport */ StandardClock),
Z37: () => (/* reexport */ StateMachine),
FtL: () => (/* reexport */ StrategyContainer),
Z6X: () => (/* reexport */ Stream),
iQT: () => (/* reexport */ System),
ziO: () => (/* reexport */ SystemManager),
OEF: () => (/* reexport */ SystemPriority),
uuE: () => (/* reexport */ SystemType),
tiv: () => (/* reexport */ TagQuery),
T$Y: () => (/* reexport */ TestClock),
EYj: () => (/* reexport */ Text),
nOB: () => (/* reexport */ TextAlign),
Tap: () => (/* reexport */ TextureLoader),
FAs: () => (/* reexport */ Tile),
B_P: () => (/* reexport */ TileMap),
aA5: () => (/* reexport */ TileMapEvents),
J3s: () => (/* reexport */ TiledAnimation),
Y0Q: () => (/* reexport */ TiledSprite),
M4G: () => (/* reexport */ Timer),
l$l: () => (/* reexport */ Toaster),
dLy: () => (/* reexport */ transform_Transform),
WZP: () => (/* reexport */ TransformComponent),
eB6: () => (/* reexport */ Transition),
nFK: () => (/* reexport */ TreeNode),
l9z: () => (/* reexport */ Trigger),
YOF: () => (/* reexport */ TriggerEvents),
yhB: () => (/* reexport */ TwoPI),
J0N: () => (/* reexport */ Util_Index_namespaceObject),
Miz: () => (/* reexport */ Vector),
Bj4: () => (/* reexport */ VectorView),
Rcs: () => (/* reexport */ VertexBuffer),
vJ4: () => (/* reexport */ VertexLayout),
TqC: () => (/* reexport */ VerticalFirst),
nM0: () => (/* reexport */ VisibleEvent),
X1u: () => (/* reexport */ WebAudio),
SpZ: () => (/* reexport */ WebAudioInstance),
DX8: () => (/* reexport */ WheelDeltaMode),
Yx$: () => (/* reexport */ WheelEvent),
HK4: () => (/* reexport */ World),
yt5: () => (/* reexport */ approximatelyEqual),
vAR: () => (/* reexport */ assert),
SE$: () => (/* reexport */ canonicalizeAngle),
qE8: () => (/* reexport */ clamp),
Pz7: () => (/* reexport */ coroutine),
sX_: () => (/* reexport */ createId),
JuI: () => (/* reexport */ frac),
pxT: () => (/* reexport */ getDefaultPhysicsConfig),
Nl$: () => (/* reexport */ hasGraphicsTick),
zDr: () => (/* reexport */ hasOnAdd),
OwT: () => (/* reexport */ hasOnInitialize),
P$G: () => (/* reexport */ hasOnPostUpdate),
mHV: () => (/* reexport */ hasOnPreUpdate),
kEA: () => (/* reexport */ hasOnRemove),
Fx_: () => (/* reexport */ hasPostDraw),
WFC: () => (/* reexport */ hasPreDraw),
vKu: () => (/* reexport */ has_add),
aDq: () => (/* reexport */ has_initialize),
jIg: () => (/* reexport */ has_postupdate),
UH3: () => (/* reexport */ has_preupdate),
AJO: () => (/* reexport */ has_remove),
U4: () => (/* reexport */ inverseLerp),
xAc: () => (/* reexport */ inverseLerpVector),
_3Y: () => (/* reexport */ isActor),
K6X: () => (/* reexport */ isAddedComponent),
C1Y: () => (/* reexport */ isComponentCtor),
Aw1: () => (/* reexport */ isLoaderConstructor),
tm8: () => (/* reexport */ isMoveByOptions),
LBV: () => (/* reexport */ isMoveToOptions),
A8$: () => (/* reexport */ isRemovedComponent),
F5e: () => (/* reexport */ isRotateByOptions),
ran: () => (/* reexport */ isRotateToOptions),
c8L: () => (/* reexport */ isScaleByOptions),
o6M: () => (/* reexport */ isScaleToOptions),
hsx: () => (/* reexport */ isSceneConstructor),
l9E: () => (/* reexport */ isScreenElement),
aSf: () => (/* reexport */ isSystemConstructor),
CcK: () => (/* reexport */ lerp),
nU8: () => (/* reexport */ lerpAngle),
td6: () => (/* reexport */ lerpVector),
Zex: () => (/* reexport */ maxMessages),
bkJ: () => (/* reexport */ nextActionId),
mXP: () => (/* reexport */ obsolete),
vt$: () => (/* reexport */ parseImageFiltering),
hCA: () => (/* reexport */ parseImageWrapping),
pjR: () => (/* reexport */ pixelSnapEpsilon),
U43: () => (/* reexport */ randomInRange),
pSZ: () => (/* reexport */ randomIntInRange),
y17: () => (/* reexport */ range),
Ew7: () => (/* reexport */ remap),
hG1: () => (/* reexport */ remapVector),
jVr: () => (/* reexport */ resetObsoleteCounter),
_SZ: () => (/* reexport */ sign),
xWn: () => (/* reexport */ toDegrees),
ehJ: () => (/* reexport */ toRadians),
t6s: () => (/* reexport */ vec),
Eyn: () => (/* reexport */ webgl_util_namespaceObject)
});
// NAMESPACE OBJECT: ./Graphics/Context/webgl-util.ts
var webgl_util_namespaceObject = {};
__webpack_require__.r(webgl_util_namespaceObject);
__webpack_require__.d(webgl_util_namespaceObject, {
getAttributeComponentSize: () => (getAttributeComponentSize),
getAttributePointerType: () => (getAttributePointerType),
getGLTypeFromSource: () => (getGLTypeFromSource),
getGlTypeSizeBytes: () => (getGlTypeSizeBytes),
getMaxShaderComplexity: () => (getMaxShaderComplexity),
isAttributeInSource: () => (isAttributeInSource)
});
// NAMESPACE OBJECT: ./Util/DrawUtil.ts
var DrawUtil_namespaceObject = {};
__webpack_require__.r(DrawUtil_namespaceObject);
__webpack_require__.d(DrawUtil_namespaceObject, {
circle: () => (circle),
line: () => (line),
point: () => (point),
roundRect: () => (roundRect),
vector: () => (vector)
});
// NAMESPACE OBJECT: ./Events.ts
var Events_namespaceObject = {};
__webpack_require__.r(Events_namespaceObject);
__webpack_require__.d(Events_namespaceObject, {
ActionCompleteEvent: () => (ActionCompleteEvent),
ActionStartEvent: () => (ActionStartEvent),
ActivateEvent: () => (ActivateEvent),
AddEvent: () => (AddEvent),
CollisionEndEvent: () => (CollisionEndEvent),
CollisionPostSolveEvent: () => (CollisionPostSolveEvent),
CollisionPreSolveEvent: () => (CollisionPreSolveEvent),
CollisionStartEvent: () => (CollisionStartEvent),
ContactEndEvent: () => (ContactEndEvent),
ContactStartEvent: () => (ContactStartEvent),
DeactivateEvent: () => (DeactivateEvent),
EnterTriggerEvent: () => (EnterTriggerEvent),
EnterViewPortEvent: () => (EnterViewPortEvent),
EventTypes: () => (EventTypes),
ExitTriggerEvent: () => (ExitTriggerEvent),
ExitViewPortEvent: () => (ExitViewPortEvent),
GameEvent: () => (GameEvent),
GameStartEvent: () => (GameStartEvent),
GameStopEvent: () => (GameStopEvent),
GamepadAxisEvent: () => (GamepadAxisEvent),
GamepadButtonEvent: () => (GamepadButtonEvent),
GamepadConnectEvent: () => (GamepadConnectEvent),
GamepadDisconnectEvent: () => (GamepadDisconnectEvent),
HiddenEvent: () => (HiddenEvent),
InitializeEvent: () => (InitializeEvent),
KillEvent: () => (KillEvent),
PostCollisionEvent: () => (PostCollisionEvent),
PostDebugDrawEvent: () => (PostDebugDrawEvent),
PostDrawEvent: () => (PostDrawEvent),
PostFrameEvent: () => (PostFrameEvent),
PostKillEvent: () => (PostKillEvent),
PostTransformDrawEvent: () => (PostTransformDrawEvent),
PostUpdateEvent: () => (PostUpdateEvent),
PreCollisionEvent: () => (PreCollisionEvent),
PreDebugDrawEvent: () => (PreDebugDrawEvent),
PreDrawEvent: () => (PreDrawEvent),
PreFrameEvent: () => (PreFrameEvent),
PreKillEvent: () => (PreKillEvent),
PreTransformDrawEvent: () => (PreTransformDrawEvent),
PreUpdateEvent: () => (PreUpdateEvent),
RemoveEvent: () => (RemoveEvent),
VisibleEvent: () => (VisibleEvent)
});
// NAMESPACE OBJECT: ./Util/Index.ts
var Util_Index_namespaceObject = {};
__webpack_require__.r(Util_Index_namespaceObject);
__webpack_require__.d(Util_Index_namespaceObject, {
ConsoleAppender: () => (ConsoleAppender),
DrawUtil: () => (DrawUtil_namespaceObject),
EasingFunctions: () => (EasingFunctions),
LogLevel: () => (LogLevel),
Logger: () => (Logger),
Observable: () => (Observable),
ScreenAppender: () => (ScreenAppender),
addItemToArray: () => (addItemToArray),
contains: () => (contains),
delay: () => (delay),
fail: () => (fail),
getPosition: () => (getPosition),
isObject: () => (isObject),
mergeDeep: () => (mergeDeep),
omit: () => (omit),
removeItemFromArray: () => (removeItemFromArray)
});
;// ./Polyfill.ts
/**
* Polyfill adding function
*/
function polyfill() {
/* istanbul ignore next */
if (typeof window === 'undefined') {
window = {
audioContext: function () {
return;
}
};
}
/* istanbul ignore next */
if (typeof window !== 'undefined' && !window.requestAnimationFrame) {
window.requestAnimationFrame =
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function (callback) {
window.setInterval(callback, 1000 / 60);
};
}
/* istanbul ignore next */
if (typeof window !== 'undefined' && !window.cancelAnimationFrame) {
window.cancelAnimationFrame =
window.webkitCancelAnimationFrame ||
window.mozCancelAnimationFrame ||
function () {
return;
};
}
/* istanbul ignore next */
if (typeof window !== 'undefined' && !window.AudioContext) {
if (window.webkitAudioContext) {
const ctx = window.webkitAudioContext;
const replaceMe = ctx.prototype.decodeAudioData;
window.webkitAudioContext.prototype.decodeAudioData = function (arrayBuffer) {
return new Promise((resolve, reject) => {
replaceMe.call(this, arrayBuffer, resolve, reject);
});
};
}
window.AudioContext =
window.AudioContext ||
window.webkitAudioContext ||
window.mozAudioContext ||
window.msAudioContext ||
window.oAudioContext;
}
/* istanbul ignore next */
if (typeof window !== 'undefined' && !window.devicePixelRatio) {
window.devicePixelRatio = window.devicePixelRatio || 1;
}
/* istanbul ignore next */
if (typeof window !== 'undefined' && !window.requestIdleCallback) {
// Adapted from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback
window.requestIdleCallback =
window.requestIdleCallback ||
function (cb) {
const start = Date.now();
return setTimeout(function () {
cb({
didTimeout: false,
timeRemaining: function () {
return Math.max(0, 50 - (Date.now() - start));
}
});
}, 1);
};
window.cancelIdleCallback =
window.cancelIdleCallback ||
function (id) {
clearTimeout(id);
};
}
}
;// ./Flags.ts
/**
* Flags is a feature flag implementation for Excalibur. They can only be operated **before {@apilink Engine} construction**
* after which they are frozen and are read-only.
*
* Flags are used to enable experimental or preview features in Excalibur.
*/
class Flags {
/**
* Force excalibur to load the Canvas 2D graphics context fallback
* @warning not all features of excalibur are supported in the Canvas 2D fallback
*/
static useCanvasGraphicsContext() {
Flags.enable('use-canvas-context');
}
/**
* Force excalibur to use the less optimized image renderer
*/
static useLegacyImageRenderer() {
Flags.enable('use-legacy-image-renderer');
}
/**
* Freeze all flag modifications making them readonly
*/
static freeze() {
Flags._FROZEN = true;
}
/**
* Resets internal flag state, not meant to be called by users. Only used for testing.
*
* Calling this in your game is UNSUPPORTED
* @internal
*/
static _reset() {
Flags._FROZEN = false;
Flags._FLAGS = {};
}
/**
* Enable a specific feature flag by name. **Note: can only be set before {@apilink Engine} constructor time**
* @param flagName
*/
static enable(flagName) {
if (this._FROZEN) {
throw Error('Feature flags can only be enabled before Engine constructor time');
}
Flags._FLAGS[flagName] = true;
}
/**
* Disable a specific feature flag by name. **Note: can only be set before {@apilink Engine} constructor time**
* @param flagName
*/
static disable(flagName) {
if (this._FROZEN) {
throw Error('Feature flags can only be disabled before Engine constructor time');
}
Flags._FLAGS[flagName] = false;
}
/**
* Check if a flag is enabled. If the flag is disabled or does not exist `false` is returned
* @param flagName
*/
static isEnabled(flagName) {
return !!Flags._FLAGS[flagName];
}
/**
* Show a list of currently known flags
*/
static show() {
return Object.keys(Flags._FLAGS);
}
}
Flags._FROZEN = false;
Flags._FLAGS = {};
;// ./Id.ts
/**
* Create a branded ID type from a number
*/
function createId(type, value) {
return { type, value };
}
;// ./Util/Future.ts
/**
* Future is a wrapper around a native browser Promise to allow resolving/rejecting at any time
*/
class Future {
constructor() {
this._isCompleted = false;
this.promise = new Promise((resolve, reject) => {
this._resolver = resolve;
this._rejecter = reject;
});
}
get isCompleted() {
return this._isCompleted;
}
resolve(value) {
if (this._isCompleted) {
return;
}
this._isCompleted = true;
this._resolver(value);
}
reject(error) {
if (this._isCompleted) {
return;
}
this._isCompleted = true;
this._rejecter(error);
}
}
;// ./EventEmitter.ts
/**
* Excalibur's typed event emitter, this allows events to be sent with any string to Type mapping
*/
class EventEmitter {
constructor() {
this._paused = false;
this._empty = true;
this._listeners = {};
this._listenersOnce = {};
this._pipes = [];
}
/**
* Removes all listeners and pipes
*/
clear() {
this._listeners = {};
this._listenersOnce = {};
this._pipes.length = 0;
this._empty = true;
}
on(eventName, handler) {
var _a;
this._empty = false;
this._listeners[eventName] = (_a = this._listeners[eventName]) !== null && _a !== void 0 ? _a : [];
this._listeners[eventName].push(handler);
return {
close: () => this.off(eventName, handler)
};
}
once(eventName, handler) {
var _a;
this._empty = false;
this._listenersOnce[eventName] = (_a = this._listenersOnce[eventName]) !== null && _a !== void 0 ? _a : [];
this._listenersOnce[eventName].push(handler);
return {
close: () => this.off(eventName, handler)
};
}
off(eventName, handler) {
var _a, _b;
if (handler) {
const newListeners = (_a = this._listeners[eventName]) === null || _a === void 0 ? void 0 : _a.filter((h) => h !== handler);
this._listeners[eventName] = newListeners;
const newOnceListeners = (_b = this._listenersOnce[eventName]) === null || _b === void 0 ? void 0 : _b.filter((h) => h !== handler);
this._listenersOnce[eventName] = newOnceListeners;
}
else {
delete this._listeners[eventName];
}
}
emit(eventName, event) {
if (this._empty) {
return;
}
if (this._paused) {
return;
}
const listeners = this._listeners[eventName];
if (listeners) {
for (let i = 0; i < listeners.length; i++) {
listeners[i](event);
}
}
const onces = this._listenersOnce[eventName];
this._listenersOnce[eventName] = [];
if (onces) {
for (let i = 0; i < onces.length; i++) {
onces[i](event);
}
}
for (let i = 0; i < this._pipes.length; i++) {
this._pipes[i].emit(eventName, event);
}
}
/**
* Replay events from this emitter to another
* @param emitter
*/
pipe(emitter) {
if (this === emitter) {
throw Error('Cannot pipe to self');
}
this._empty = false;
this._pipes.push(emitter);
return {
close: () => {
const i = this._pipes.indexOf(emitter);
if (i > -1) {
this._pipes.splice(i, 1);
}
}
};
}
/**
* Remove any piped emitters
* @param emitter
*/
unpipe(emitter) {
const i = this._pipes.indexOf(emitter);
if (i > -1) {
this._pipes.splice(i, 1);
}
}
/**
* Paused event emitters do not emit events
*/
pause() {
this._paused = true;
}
/**
* Unpaused event emitter do emit events
*/
unpause() {
this._paused = false;
}
}
;// ./Input/PointerScope.ts
/**
* Determines the scope of handling mouse/touch events.
*/
var PointerScope;
(function (PointerScope) {
/**
* Handle events on the `canvas` element only. Events originating outside the
* `canvas` will not be handled.
*/
PointerScope["Canvas"] = "Canvas";
/**
* Handles events on the entire document. All events will be handled by Excalibur.
*/
PointerScope["Document"] = "Document";
})(PointerScope || (PointerScope = {}));
;// ./Math/rotation-type.ts
/**
* An enum that describes the strategies that rotation actions can use
*/
var RotationType;
(function (RotationType) {
/**
* Rotation via `ShortestPath` will use the smallest angle
* between the starting and ending points. This strategy is the default behavior.
*/
RotationType["ShortestPath"] = "shortest-path";
/**
* Rotation via `LongestPath` will use the largest angle
* between the starting and ending points.
*/
RotationType["LongestPath"] = "longest-path";
/**
* Rotation via `Clockwise` will travel in a clockwise direction,
* regardless of the starting and ending points.
*/
RotationType["Clockwise"] = "clockwise";
/**
* Rotation via `CounterClockwise` will travel in a counterclockwise direction,
* regardless of the starting and ending points.
*/
RotationType["CounterClockwise"] = "counter-clockwise";
})(RotationType || (RotationType = {}));
;// ./Math/Random.ts
/**
* @module
* Pseudo-Random Utility
*
* A pseudo-random utility to add seeded random support for help in
* generating things like terrain or reproducible randomness. Uses the
* [Mersenne Twister](https://en.wikipedia.org/wiki/Mersenne_Twister) algorithm.
*/
/**
* 32-bit mask
*/
const BITMASK32 = 0xffffffff;
/**
* Pseudo-random number generator following the Mersenne_Twister algorithm. Given a seed this generator will produce the same sequence
* of numbers each time it is called.
* See https://en.wikipedia.org/wiki/Mersenne_Twister for more details.
* Uses the MT19937-32 (2002) implementation documented here http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html
*
* Api inspired by http://chancejs.com/# https://github.com/chancejs/chancejs
*/
class Random {
/**
* If no seed is specified, the Date.now() is used
*/
constructor(seed) {
this.seed = seed;
// Separation point of one one word, the number of bits in the lower bitmask 0 <= r <= w-1
this._lowerMask = 0x7fffffff; // 31 bits same as _r
this._upperMask = 0x80000000; // 34 high bits
// Word size, 64 bits
this._w = 32;
// Degree of recurrence
this._n = 624;
// Middle word, an offset used in the recurrence defining the series x, 1<=m<n
this._m = 397;
// coefficients of teh rational normal form twist matrix
this._a = 0x9908b0df;
// tempering bit shifts and masks
this._u = 11;
this._s = 7;
this._b = 0x9d2c5680;
this._t = 15;
this._c = 0xefc60000;
this._l = 18;
this._f = 1812433253;
this._mt = new Array(this._n);
// need to mask to support higher bit machines
this._mt[0] = (seed || Date.now()) >>> 0;
for (let i = 1; i < this._n; i++) {
const s = this._mt[i - 1] ^ (this._mt[i - 1] >>> (this._w - 2));
// numbers are bigger than the JS max safe int, add in 16-bit chunks to prevent IEEE rounding errors on high bits
this._mt[i] = (((this._f * ((s & 0xffff0000) >>> 16)) << 16) + this._f * (s & 0xffff) + i) >>> 0;
}
this._index = this._n;
}
/**
* Apply the twist
*/
_twist() {
const mag01 = [0x0, this._a];
let y = 0, i = 0;
for (; i < this._n - this._m; i++) {
y = (this._mt[i] & this._upperMask) | (this._mt[i + 1] & this._lowerMask);
this._mt[i] = this._mt[i + this._m] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
}
for (; i < this._n - 1; i++) {
y = (this._mt[i] & this._upperMask) | (this._mt[i + 1] & this._lowerMask);
this._mt[i] = this._mt[i + (this._m - this._n)] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
}
y = (this._mt[this._n - 1] & this._upperMask) | (this._mt[0] & this._lowerMask);
this._mt[this._n - 1] = this._mt[this._m - 1] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
this._index = 0;
}
/**
* Return next 32 bit integer number in sequence
*/
nextInt() {
if (this._index >= this._n) {
this._twist();
}
let y = this._mt[this._index++];
y ^= y >>> this._u;
y ^= (y << this._s) & this._b;
y ^= (y << this._t) & this._c;
y ^= y >>> this