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
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
*/
(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-