UNPKG

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,201 lines (1,148 loc) • 1.36 MB
/*! * 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 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["ex"] = factory(); else root["ex"] = factory(); })(self, () => { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ 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__ = {}; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { ActionCompleteEvent: () => (/* reexport */ ActionCompleteEvent), ActionContext: () => (/* reexport */ ActionContext), ActionQueue: () => (/* reexport */ ActionQueue), ActionSequence: () => (/* reexport */ ActionSequence), ActionStartEvent: () => (/* reexport */ ActionStartEvent), ActionsComponent: () => (/* reexport */ ActionsComponent), ActionsSystem: () => (/* reexport */ ActionsSystem), ActivateEvent: () => (/* reexport */ ActivateEvent), Actor: () => (/* reexport */ Actor), ActorEvents: () => (/* reexport */ ActorEvents), AddEvent: () => (/* reexport */ AddEvent), AddedComponent: () => (/* reexport */ AddedComponent), AffineMatrix: () => (/* reexport */ AffineMatrix), Animation: () => (/* reexport */ Animation), AnimationDirection: () => (/* reexport */ AnimationDirection), AnimationEvents: () => (/* reexport */ AnimationEvents), AnimationStrategy: () => (/* reexport */ AnimationStrategy), ArcadeSolver: () => (/* reexport */ ArcadeSolver), AudioContextFactory: () => (/* reexport */ AudioContextFactory), Axes: () => (/* reexport */ Axes), Axis: () => (/* reexport */ Axis), BaseAlign: () => (/* reexport */ BaseAlign), BezierCurve: () => (/* reexport */ BezierCurve), Blink: () => (/* reexport */ Blink), BodyComponent: () => (/* reexport */ BodyComponent), BoundingBox: () => (/* reexport */ BoundingBox), BrowserComponent: () => (/* reexport */ BrowserComponent), BrowserEvents: () => (/* reexport */ BrowserEvents), Buttons: () => (/* reexport */ Buttons), Camera: () => (/* reexport */ Camera), CameraEvents: () => (/* reexport */ CameraEvents), Canvas: () => (/* reexport */ Canvas), Circle: () => (/* reexport */ Circle), CircleCollider: () => (/* reexport */ CircleCollider), Clock: () => (/* reexport */ Clock), ClosestLineJumpTable: () => (/* reexport */ ClosestLineJumpTable), Collider: () => (/* reexport */ Collider), ColliderComponent: () => (/* reexport */ ColliderComponent), CollisionContact: () => (/* reexport */ CollisionContact), CollisionEndEvent: () => (/* reexport */ CollisionEndEvent), CollisionGroup: () => (/* reexport */ CollisionGroup), CollisionGroupManager: () => (/* reexport */ CollisionGroupManager), CollisionJumpTable: () => (/* reexport */ CollisionJumpTable), CollisionPostSolveEvent: () => (/* reexport */ CollisionPostSolveEvent), CollisionPreSolveEvent: () => (/* reexport */ CollisionPreSolveEvent), CollisionStartEvent: () => (/* reexport */ CollisionStartEvent), CollisionSystem: () => (/* reexport */ CollisionSystem), CollisionType: () => (/* reexport */ CollisionType), Color: () => (/* reexport */ Color), ColorBlindFlags: () => (/* reexport */ ColorBlindFlags), ColorBlindnessMode: () => (/* reexport */ ColorBlindnessMode), ColorBlindnessPostProcessor: () => (/* reexport */ ColorBlindnessPostProcessor), Component: () => (/* reexport */ Component), CompositeCollider: () => (/* reexport */ CompositeCollider), ConsoleAppender: () => (/* reexport */ ConsoleAppender), ContactConstraintPoint: () => (/* reexport */ ContactConstraintPoint), ContactEndEvent: () => (/* reexport */ ContactEndEvent), ContactSolveBias: () => (/* reexport */ ContactSolveBias), ContactStartEvent: () => (/* reexport */ ContactStartEvent), CoordPlane: () => (/* reexport */ CoordPlane), CrossFade: () => (/* reexport */ CrossFade), CurveBy: () => (/* reexport */ CurveBy), CurveTo: () => (/* reexport */ CurveTo), DeactivateEvent: () => (/* reexport */ DeactivateEvent), Debug: () => (/* reexport */ Debug), DebugConfig: () => (/* reexport */ DebugConfig), DebugGraphicsComponent: () => (/* reexport */ DebugGraphicsComponent), DebugSystem: () => (/* reexport */ DebugSystem), DebugText: () => (/* reexport */ DebugText), DefaultAntialiasOptions: () => (/* reexport */ DefaultAntialiasOptions), DefaultGarbageCollectionOptions: () => (/* reexport */ DefaultGarbageCollectionOptions), DefaultLoader: () => (/* reexport */ DefaultLoader), DefaultPixelArtOptions: () => (/* reexport */ DefaultPixelArtOptions), DegreeOfFreedom: () => (/* reexport */ DegreeOfFreedom), Delay: () => (/* reexport */ Delay), Detector: () => (/* reexport */ Detector), Die: () => (/* reexport */ Die), Direction: () => (/* reexport */ Direction), Director: () => (/* reexport */ Director), DirectorEvents: () => (/* reexport */ DirectorEvents), DisplayMode: () => (/* reexport */ DisplayMode), DynamicTree: () => (/* reexport */ DynamicTree), DynamicTreeCollisionProcessor: () => (/* reexport */ DynamicTreeCollisionProcessor), EX_VERSION: () => (/* binding */ EX_VERSION), EaseBy: () => (/* reexport */ EaseBy), EaseTo: () => (/* reexport */ EaseTo), EasingFunctions: () => (/* reexport */ EasingFunctions), EdgeCollider: () => (/* reexport */ EdgeCollider), ElasticToActorStrategy: () => (/* reexport */ ElasticToActorStrategy), EmitterType: () => (/* reexport */ EmitterType), Engine: () => (/* reexport */ Engine), EngineEvents: () => (/* reexport */ EngineEvents), EnterTriggerEvent: () => (/* reexport */ EnterTriggerEvent), EnterViewPortEvent: () => (/* reexport */ EnterViewPortEvent), Entity: () => (/* reexport */ Entity), EntityEvents: () => (/* reexport */ EntityEvents), EntityManager: () => (/* reexport */ EntityManager), EventEmitter: () => (/* reexport */ EventEmitter), EventTypes: () => (/* reexport */ EventTypes), Events: () => (/* reexport */ Events_namespaceObject), ExResponse: () => (/* reexport */ ExResponse), ExcaliburGraphicsContext2DCanvas: () => (/* reexport */ ExcaliburGraphicsContext2DCanvas), ExcaliburGraphicsContextWebGL: () => (/* reexport */ ExcaliburGraphicsContextWebGL), ExitTriggerEvent: () => (/* reexport */ ExitTriggerEvent), ExitViewPortEvent: () => (/* reexport */ ExitViewPortEvent), Fade: () => (/* reexport */ Fade), FadeInOut: () => (/* reexport */ FadeInOut), Flags: () => (/* reexport */ Flags), Flash: () => (/* reexport */ Flash), Follow: () => (/* reexport */ Follow), Font: () => (/* reexport */ Font), FontCache: () => (/* reexport */ FontCache), FontSource: () => (/* reexport */ FontSource), FontStyle: () => (/* reexport */ FontStyle), FontUnit: () => (/* reexport */ FontUnit), FpsSampler: () => (/* reexport */ FpsSampler), FrameStats: () => (/* reexport */ FrameStats), Future: () => (/* reexport */ Future), GameEvent: () => (/* reexport */ GameEvent), GameStartEvent: () => (/* reexport */ GameStartEvent), GameStopEvent: () => (/* reexport */ GameStopEvent), Gamepad: () => (/* reexport */ Gamepad), GamepadAxisEvent: () => (/* reexport */ GamepadAxisEvent), GamepadButtonEvent: () => (/* reexport */ GamepadButtonEvent), GamepadConnectEvent: () => (/* reexport */ GamepadConnectEvent), GamepadDisconnectEvent: () => (/* reexport */ GamepadDisconnectEvent), Gamepads: () => (/* reexport */ Gamepads), GarbageCollector: () => (/* reexport */ GarbageCollector), Gif: () => (/* reexport */ Gif), GifParser: () => (/* reexport */ GifParser), GlobalCoordinates: () => (/* reexport */ GlobalCoordinates), GpuParticleEmitter: () => (/* reexport */ GpuParticleEmitter), GpuParticleRenderer: () => (/* reexport */ GpuParticleRenderer), Graphic: () => (/* reexport */ Graphic), GraphicsComponent: () => (/* reexport */ GraphicsComponent), GraphicsGroup: () => (/* reexport */ GraphicsGroup), GraphicsSystem: () => (/* reexport */ GraphicsSystem), HashColliderProxy: () => (/* reexport */ HashColliderProxy), HashGridCell: () => (/* reexport */ HashGridCell), HashGridProxy: () => (/* reexport */ HashGridProxy), HiddenEvent: () => (/* reexport */ HiddenEvent), HorizontalFirst: () => (/* reexport */ HorizontalFirst), ImageFiltering: () => (/* reexport */ ImageFiltering), ImageSource: () => (/* reexport */ ImageSource), ImageSourceAttributeConstants: () => (/* reexport */ ImageSourceAttributeConstants), ImageWrapping: () => (/* reexport */ ImageWrapping), InitializeEvent: () => (/* reexport */ InitializeEvent), InputHost: () => (/* reexport */ InputHost), InputMapper: () => (/* reexport */ InputMapper), IsometricEntityComponent: () => (/* reexport */ IsometricEntityComponent), IsometricEntitySystem: () => (/* reexport */ IsometricEntitySystem), IsometricMap: () => (/* reexport */ IsometricMap), IsometricTile: () => (/* reexport */ IsometricTile), KeyEvent: () => (/* reexport */ KeyEvent), Keyboard: () => (/* reexport */ Keyboard), Keys: () => (/* reexport */ Keys), KillEvent: () => (/* reexport */ KillEvent), Label: () => (/* reexport */ Label), LimitCameraBoundsStrategy: () => (/* reexport */ LimitCameraBoundsStrategy), Line: () => (/* reexport */ Line), LineSegment: () => (/* reexport */ LineSegment), Loader: () => (/* reexport */ Loader), LoaderEvents: () => (/* reexport */ LoaderEvents), LockCameraToActorAxisStrategy: () => (/* reexport */ LockCameraToActorAxisStrategy), LockCameraToActorStrategy: () => (/* reexport */ LockCameraToActorStrategy), LogLevel: () => (/* reexport */ LogLevel), Logger: () => (/* reexport */ Logger), Material: () => (/* reexport */ Material), Matrix: () => (/* reexport */ Matrix), MatrixLocations: () => (/* reexport */ MatrixLocations), MediaEvent: () => (/* reexport */ MediaEvent), Meet: () => (/* reexport */ Meet), MotionComponent: () => (/* reexport */ MotionComponent), MotionSystem: () => (/* reexport */ MotionSystem), MoveBy: () => (/* reexport */ MoveBy), MoveByWithOptions: () => (/* reexport */ MoveByWithOptions), MoveTo: () => (/* reexport */ MoveTo), MoveToWithOptions: () => (/* reexport */ MoveToWithOptions), NativePointerButton: () => (/* reexport */ NativePointerButton), NativeSoundEvent: () => (/* reexport */ NativeSoundEvent), NativeSoundProcessedEvent: () => (/* reexport */ NativeSoundProcessedEvent), NineSlice: () => (/* reexport */ NineSlice), NineSliceStretch: () => (/* reexport */ NineSliceStretch), None: () => (/* reexport */ None), Observable: () => (/* reexport */ Observable), OffscreenSystem: () => (/* reexport */ OffscreenSystem), Pair: () => (/* reexport */ Pair), ParallaxComponent: () => (/* reexport */ ParallaxComponent), ParallelActions: () => (/* reexport */ ParallelActions), Particle: () => (/* reexport */ Particle), ParticleEmitter: () => (/* reexport */ ParticleEmitter), ParticleRenderer: () => (/* reexport */ ParticleRenderer), ParticleTransform: () => (/* reexport */ ParticleTransform), PhysicsStats: () => (/* reexport */ PhysicsStats), PhysicsWorld: () => (/* reexport */ PhysicsWorld), PointerAbstraction: () => (/* reexport */ PointerAbstraction), PointerButton: () => (/* reexport */ PointerButton), PointerComponent: () => (/* reexport */ PointerComponent), PointerEvent: () => (/* reexport */ PointerEvent), PointerEventReceiver: () => (/* reexport */ PointerEventReceiver), PointerScope: () => (/* reexport */ PointerScope), PointerSystem: () => (/* reexport */ PointerSystem), PointerType: () => (/* reexport */ PointerType), Polygon: () => (/* reexport */ Polygon), PolygonCollider: () => (/* reexport */ PolygonCollider), Pool: () => (/* reexport */ Pool), PostCollisionEvent: () => (/* reexport */ PostCollisionEvent), PostDebugDrawEvent: () => (/* reexport */ PostDebugDrawEvent), PostDrawEvent: () => (/* reexport */ PostDrawEvent), PostFrameEvent: () => (/* reexport */ PostFrameEvent), PostKillEvent: () => (/* reexport */ PostKillEvent), PostTransformDrawEvent: () => (/* reexport */ PostTransformDrawEvent), PostUpdateEvent: () => (/* reexport */ PostUpdateEvent), PreCollisionEvent: () => (/* reexport */ PreCollisionEvent), PreDebugDrawEvent: () => (/* reexport */ PreDebugDrawEvent), PreDrawEvent: () => (/* reexport */ PreDrawEvent), PreFrameEvent: () => (/* reexport */ PreFrameEvent), PreKillEvent: () => (/* reexport */ PreKillEvent), PreLoadEvent: () => (/* reexport */ PreLoadEvent), PreTransformDrawEvent: () => (/* reexport */ PreTransformDrawEvent), PreUpdateEvent: () => (/* reexport */ PreUpdateEvent), Projection: () => (/* reexport */ Projection), QuadIndexBuffer: () => (/* reexport */ QuadIndexBuffer), QuadTree: () => (/* reexport */ QuadTree), Query: () => (/* reexport */ Query), QueryManager: () => (/* reexport */ QueryManager), RadiusAroundActorStrategy: () => (/* reexport */ RadiusAroundActorStrategy), Random: () => (/* reexport */ Random), Raster: () => (/* reexport */ Raster), Ray: () => (/* reexport */ Ray), RealisticSolver: () => (/* reexport */ RealisticSolver), Rectangle: () => (/* reexport */ Rectangle), RemoveEvent: () => (/* reexport */ RemoveEvent), RemovedComponent: () => (/* reexport */ RemovedComponent), Repeat: () => (/* reexport */ Repeat), RepeatForever: () => (/* reexport */ RepeatForever), Resolution: () => (/* reexport */ Resolution), Resource: () => (/* reexport */ Resource), ResourceEvents: () => (/* reexport */ ResourceEvents), RotateBy: () => (/* reexport */ RotateBy), RotateByWithOptions: () => (/* reexport */ RotateByWithOptions), RotateTo: () => (/* reexport */ RotateTo), RotateToWithOptions: () => (/* reexport */ RotateToWithOptions), RotationType: () => (/* reexport */ RotationType), ScaleBy: () => (/* reexport */ ScaleBy), ScaleByWithOptions: () => (/* reexport */ ScaleByWithOptions), ScaleTo: () => (/* reexport */ ScaleTo), ScaleToWithOptions: () => (/* reexport */ ScaleToWithOptions), Scene: () => (/* reexport */ Scene), SceneEvents: () => (/* reexport */ SceneEvents), Screen: () => (/* reexport */ Screen), ScreenAppender: () => (/* reexport */ ScreenAppender), ScreenElement: () => (/* reexport */ ScreenElement), ScreenEvents: () => (/* reexport */ ScreenEvents), ScreenShader: () => (/* reexport */ ScreenShader), ScrollPreventionMode: () => (/* reexport */ ScrollPreventionMode), Semaphore: () => (/* reexport */ Semaphore), SeparatingAxis: () => (/* reexport */ SeparatingAxis), SeparationInfo: () => (/* reexport */ SeparationInfo), Shader: () => (/* reexport */ Shader), Shape: () => (/* reexport */ Shape), Side: () => (/* reexport */ Side), Slide: () => (/* reexport */ Slide), SolverStrategy: () => (/* reexport */ SolverStrategy), Sound: () => (/* reexport */ Sound), SoundEvents: () => (/* reexport */ SoundEvents), SparseHashGrid: () => (/* reexport */ SparseHashGrid), SparseHashGridCollisionProcessor: () => (/* reexport */ SparseHashGridCollisionProcessor), SpatialPartitionStrategy: () => (/* reexport */ SpatialPartitionStrategy), Sprite: () => (/* reexport */ Sprite), SpriteFont: () => (/* reexport */ SpriteFont), SpriteSheet: () => (/* reexport */ SpriteSheet), StandardClock: () => (/* reexport */ StandardClock), StateMachine: () => (/* reexport */ StateMachine), StrategyContainer: () => (/* reexport */ StrategyContainer), Stream: () => (/* reexport */ Stream), System: () => (/* reexport */ System), SystemManager: () => (/* reexport */ SystemManager), SystemPriority: () => (/* reexport */ SystemPriority), SystemType: () => (/* reexport */ SystemType), TagQuery: () => (/* reexport */ TagQuery), TestClock: () => (/* reexport */ TestClock), Text: () => (/* reexport */ Text), TextAlign: () => (/* reexport */ TextAlign), TextureLoader: () => (/* reexport */ TextureLoader), Tile: () => (/* reexport */ Tile), TileMap: () => (/* reexport */ TileMap), TileMapEvents: () => (/* reexport */ TileMapEvents), TiledAnimation: () => (/* reexport */ TiledAnimation), TiledSprite: () => (/* reexport */ TiledSprite), Timer: () => (/* reexport */ Timer), Toaster: () => (/* reexport */ Toaster), Transform: () => (/* reexport */ transform_Transform), TransformComponent: () => (/* reexport */ TransformComponent), Transition: () => (/* reexport */ Transition), TreeNode: () => (/* reexport */ TreeNode), Trigger: () => (/* reexport */ Trigger), TriggerEvents: () => (/* reexport */ TriggerEvents), TwoPI: () => (/* reexport */ TwoPI), Util: () => (/* reexport */ Util_Index_namespaceObject), Vector: () => (/* reexport */ Vector), VectorView: () => (/* reexport */ VectorView), VertexBuffer: () => (/* reexport */ VertexBuffer), VertexLayout: () => (/* reexport */ VertexLayout), VerticalFirst: () => (/* reexport */ VerticalFirst), VisibleEvent: () => (/* reexport */ VisibleEvent), WebAudio: () => (/* reexport */ WebAudio), WebAudioInstance: () => (/* reexport */ WebAudioInstance), WheelDeltaMode: () => (/* reexport */ WheelDeltaMode), WheelEvent: () => (/* reexport */ WheelEvent), World: () => (/* reexport */ World), approximatelyEqual: () => (/* reexport */ approximatelyEqual), assert: () => (/* reexport */ assert), canonicalizeAngle: () => (/* reexport */ canonicalizeAngle), clamp: () => (/* reexport */ clamp), coroutine: () => (/* reexport */ coroutine), createId: () => (/* reexport */ createId), frac: () => (/* reexport */ frac), getDefaultPhysicsConfig: () => (/* reexport */ getDefaultPhysicsConfig), hasGraphicsTick: () => (/* reexport */ hasGraphicsTick), hasOnAdd: () => (/* reexport */ hasOnAdd), hasOnInitialize: () => (/* reexport */ hasOnInitialize), hasOnPostUpdate: () => (/* reexport */ hasOnPostUpdate), hasOnPreUpdate: () => (/* reexport */ hasOnPreUpdate), hasOnRemove: () => (/* reexport */ hasOnRemove), hasPostDraw: () => (/* reexport */ hasPostDraw), hasPreDraw: () => (/* reexport */ hasPreDraw), has_add: () => (/* reexport */ has_add), has_initialize: () => (/* reexport */ has_initialize), has_postupdate: () => (/* reexport */ has_postupdate), has_preupdate: () => (/* reexport */ has_preupdate), has_remove: () => (/* reexport */ has_remove), inverseLerp: () => (/* reexport */ inverseLerp), inverseLerpVector: () => (/* reexport */ inverseLerpVector), isActor: () => (/* reexport */ isActor), isAddedComponent: () => (/* reexport */ isAddedComponent), isComponentCtor: () => (/* reexport */ isComponentCtor), isLoaderConstructor: () => (/* reexport */ isLoaderConstructor), isMoveByOptions: () => (/* reexport */ isMoveByOptions), isMoveToOptions: () => (/* reexport */ isMoveToOptions), isRemovedComponent: () => (/* reexport */ isRemovedComponent), isRotateByOptions: () => (/* reexport */ isRotateByOptions), isRotateToOptions: () => (/* reexport */ isRotateToOptions), isScaleByOptions: () => (/* reexport */ isScaleByOptions), isScaleToOptions: () => (/* reexport */ isScaleToOptions), isSceneConstructor: () => (/* reexport */ isSceneConstructor), isScreenElement: () => (/* reexport */ isScreenElement), isSystemConstructor: () => (/* reexport */ isSystemConstructor), lerp: () => (/* reexport */ lerp), lerpAngle: () => (/* reexport */ lerpAngle), lerpVector: () => (/* reexport */ lerpVector), maxMessages: () => (/* reexport */ maxMessages), nextActionId: () => (/* reexport */ nextActionId), obsolete: () => (/* reexport */ obsolete), parseImageFiltering: () => (/* reexport */ parseImageFiltering), parseImageWrapping: () => (/* reexport */ parseImageWrapping), pixelSnapEpsilon: () => (/* reexport */ pixelSnapEpsilon), randomInRange: () => (/* reexport */ randomInRange), randomIntInRange: () => (/* reexport */ randomIntInRange), range: () => (/* reexport */ range), remap: () => (/* reexport */ remap), remapVector: () => (/* reexport */ remapVector), resetObsoleteCounter: () => (/* reexport */ resetObsoleteCounter), sign: () => (/* reexport */ sign), toDegrees: () => (/* reexport */ toDegrees), toRadians: () => (/* reexport */ toRadians), vec: () => (/* reexport */ vec), webgl: () => (/* 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-