angry-pixel 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../packages/collisions/dist/broadPhase/IBroadPhaseResolver.js","../../../packages/math/dist/Vector2.js","../../../packages/math/dist/Rectangle.js","../../../packages/math/dist/utils.js","../../../packages/ioc/dist/container.js","../../../packages/collisions/dist/symbols.js","../../../packages/collisions/dist/broadPhase/QuadTree.js","../../../packages/collisions/dist/broadPhase/SpartialGrid.js","../../../packages/collisions/dist/Shape.js","../../../packages/collisions/dist/method/AABBMethod.js","../../../packages/collisions/dist/method/CollisionMethod.js","../../../packages/collisions/dist/method/SatMethod.js","../../../packages/collisions/dist/resolver/AABBResolver.js","../../../packages/collisions/dist/resolver/CircumferenceAABBResolver.js","../../../packages/collisions/dist/resolver/CircumferenceResolver.js","../../../packages/collisions/dist/resolver/SatResolver.js","../../../packages/collisions/dist/CollisionRepository.js","../../../packages/ecs/dist/utils.js","../../../packages/ecs/dist/symbols.js","../../../packages/ecs/dist/EntityManager.js","../../../packages/ecs/dist/SystemManager.js","../../../packages/webgl/dist/ContextManager.js","../../../packages/webgl/dist/FontAtlasFactory.js","../../../packages/webgl/dist/program/ProgramFactory.js","../../../packages/webgl/dist/program/ProgramManager.js","../../../packages/webgl/dist/shader/vertexShader.js","../../../packages/webgl/dist/shader/fragmentShader.js","../../../packages/webgl/dist/shader/legacy/vertexShader.js","../../../packages/webgl/dist/shader/legacy/fragmentShader.js","../../../packages/webgl/dist/program/ShaderLoader.js","../../../node_modules/gl-matrix/esm/common.js","../../../node_modules/gl-matrix/esm/mat4.js","../../../packages/webgl/dist/renderer/utils.js","../../../packages/webgl/dist/renderer/CanvasColorRenderer.js","../../../packages/webgl/dist/renderer/Renderer.js","../../../packages/webgl/dist/renderer/GeometricRenderer.js","../../../packages/webgl/dist/renderer/MaskRenderer.js","../../../packages/webgl/dist/renderer/DarknessRenderer.js","../../../packages/webgl/dist/renderer/SpriteRenderer.js","../../../packages/webgl/dist/renderer/TextRenderer.js","../../../packages/webgl/dist/renderer/TilemapRenderer.js","../../../packages/webgl/dist/renderer/VideoRenderer.js","../../../packages/webgl/dist/texture/TextureFactory.js","../../../packages/webgl/dist/texture/TextureManager.js","../../../packages/webgl/dist/symbols.js","../../../packages/webgl/dist/WebGLManager.js","../../../packages/engine/src/config/dependencySymbols.ts","../../../node_modules/tslib/tslib.es6.js","../../../packages/engine/src/utils/input/GamepadController.ts","../../../packages/engine/src/utils/input/Keyboard.ts","../../../packages/engine/src/utils/input/Mouse.ts","../../../packages/engine/src/utils/input/TouchScreen.ts","../../../packages/engine/src/manager/InputManager.ts","../../../packages/engine/src/manager/TimeManager.ts","../../../packages/engine/src/manager/AssetManager.ts","../../../packages/engine/src/component/gameLogic/AudioPlayer.ts","../../../packages/engine/src/config/systemSymbols.ts","../../../packages/engine/src/system/gameLogic/AudioPlayerSystem.ts","../../../packages/engine/src/system/SystemGroup.ts","../../../packages/engine/src/component/gameLogic/Transform.ts","../../../packages/engine/src/component/render2d/Camera.ts","../../../packages/engine/src/component/render2d/VideoRenderer.ts","../../../packages/engine/src/system/render2d/VideoRendererSystem.ts","../../../packages/engine/src/manager/SceneManager.ts","../../../packages/engine/src/component/gameLogic/Button.ts","../../../packages/engine/src/system/gameLogic/ButtonSystem.ts","../../../packages/engine/src/component/gameLogic/TiledWrapper.ts","../../../packages/engine/src/component/render2d/TilemapRenderer.ts","../../../packages/engine/src/system/gameLogic/TiledWrapperSystem.ts","../../../packages/engine/src/system/gameLogic/TilemapPreProcessingSystem.ts","../../../packages/engine/src/system/gameLogic/TransformSystem.ts","../../../packages/engine/src/system/input/GamepadSystem.ts","../../../packages/engine/src/system/input/KeyboardSystem.ts","../../../packages/engine/src/system/input/MouseSystem.ts","../../../packages/engine/src/system/input/TouchScreenSystem.ts","../../../packages/engine/src/component/gameLogic/Animator.ts","../../../packages/engine/src/component/render2d/SpriteRenderer.ts","../../../packages/engine/src/system/render2d/AnimatorSystem.ts","../../../packages/engine/src/system/render2d/CameraSystem.ts","../../../packages/engine/src/system/render2d/ClearScreenSystem.ts","../../../packages/engine/src/component/physics2d/BallCollider.ts","../../../packages/engine/src/component/physics2d/BoxCollider.ts","../../../packages/engine/src/component/physics2d/EdgeCollider.ts","../../../packages/engine/src/component/physics2d/PolygonCollider.ts","../../../packages/engine/src/component/physics2d/TilemapCollider.ts","../../../packages/engine/src/system/debug/DebugColliderRenderSystem.ts","../../../packages/engine/src/system/render2d/CullingSystem.ts","../../../packages/engine/src/component/render2d/MaskRenderer.ts","../../../packages/engine/src/system/render2d/MaskRendererSystem.ts","../../../packages/engine/src/system/render2d/RenderSystem.ts","../../../packages/engine/src/component/render2d/LightRenderer.ts","../../../packages/engine/src/component/render2d/DarknessRenderer.ts","../../../packages/engine/src/system/render2d/DarknessLightRendererSystem.ts","../../../packages/engine/src/component/render2d/GeometricRenderer.ts","../../../packages/engine/src/system/render2d/GeometricRendererSystem.ts","../../../packages/engine/src/system/render2d/SpriteRendererSystem.ts","../../../packages/engine/src/component/render2d/TextRenderer.ts","../../../packages/engine/src/system/render2d/TextRendererSystem.ts","../../../packages/engine/src/system/render2d/TilemapRendererSystem.ts","../../../packages/engine/src/component/physics2d/RigidBody.ts","../../../packages/engine/src/system/physics2d/ApplyVelocitySystem.ts","../../../packages/engine/src/system/physics2d/collider/BaseUpdateColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateBallColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateBoxColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateEdgeColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdatePolygonColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateTilemapColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/ResolveCollisionSystem.ts","../../../packages/engine/src/system/physics2d/ApplyRepositionSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateCollidersAfterRepositionSystem.ts","../../../packages/engine/src/system/debug/DebugMousePositionSystem.ts","../../../packages/engine/src/system/debug/DebugTextRendererSystem.ts","../../../packages/engine/src/config/systemsByGroup.ts","../../../packages/engine/src/manager/LoopManager.ts","../../../packages/engine/src/system/CreateSystemService.ts","../../../packages/engine/src/manager/RenderManager.ts","../../../packages/engine/src/config/bootstrap.ts","../../../packages/engine/src/system/GameSystem.ts","../../../packages/engine/src/utils/misc/audio.ts","../../../packages/engine/src/index.ts","../../../packages/engine/src/Game.ts","../../../packages/engine/src/utils/misc/decorator.ts"],"sourcesContent":["/**\n * Broad phase collision methods\n * - QuadTree: Stores the shapes in an incremental quad tree.\n * - SpartialGrid: Stores the shapes in an incremental spartial grid.\n * @category Config\n * @public\n */\nexport var BroadPhaseMethods;\n(function (BroadPhaseMethods) {\n BroadPhaseMethods[BroadPhaseMethods[\"QuadTree\"] = 0] = \"QuadTree\";\n BroadPhaseMethods[BroadPhaseMethods[\"SpartialGrid\"] = 1] = \"SpartialGrid\";\n})(BroadPhaseMethods || (BroadPhaseMethods = {}));\n//# sourceMappingURL=IBroadPhaseResolver.js.map","/**\n * Represents a two-dimensional vector with x and y components.\\\n * Provides static methods for common vector operations\n * like addition, subtraction, scaling, dot product, cross product, normalization and more.\\\n * Used throughout the engine for storing 2D positions, directions, velocities and other vector quantities.\n * @category Math\n * @public\n * @example\n * ```js\n * const v1 = new Vector2(2, 1);\n * const v2 = new Vector2(3, 2);\n * const v3 = new Vector2(); // zero vector\n *\n * Vector2.add(v3, v1, v2);\n * v3.x // 5\n * v3.y // 3\n * ```\n */\nexport class Vector2 {\n constructor(x = 0, y = 0) {\n this._x = x;\n this._y = y;\n }\n get x() {\n return this._x;\n }\n set x(x) {\n this._x = x;\n }\n get y() {\n return this._y;\n }\n set y(y) {\n this._y = y;\n }\n /**\n * Get the magnitude of the vector\n *\n * @returns The magnitude of the vector\n */\n get magnitude() {\n return Math.sqrt(Math.pow(this._x, 2) + Math.pow(this._y, 2));\n }\n /**\n * Get the direction as an unit vector\n *\n * @returns The direction vector\n */\n get direction() {\n if (!this._direction)\n this._direction = new Vector2();\n return Vector2.unit(this._direction, this);\n }\n /**\n * Set the vector\n *\n * @param x The x value\n * @param y The y value\n */\n set(x, y) {\n this._x = x;\n this._y = y;\n }\n /**\n * Copy the target vector properties\n *\n * @param vector The vector to copy from\n */\n copy(vector) {\n this.set(vector.x, vector.y);\n }\n /**\n * Compare if two vector are equals\n *\n * @param vector The vector to compare\n * @returns True if the vectors are equals, false if not\n */\n equals(vector) {\n return this._x === vector.x && this._y === vector.y;\n }\n /**\n * Colne a vector into a new instace\n *\n * @returns The cloned vector\n */\n clone() {\n return new Vector2(this._x, this._y);\n }\n /**\n * Get the distance with another vector\n *\n * @param vector The vector to compare\n * @returns The magnitude of the distance\n */\n distance(vector) {\n return Math.sqrt(Math.pow((this._x - vector.x), 2) + Math.pow((this._y - vector.y), 2));\n }\n /**\n * Calculates a + b\n * @param out The output vector\n * @param a The first operand\n * @param b The second operand\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(2, 1);\n * const v2 = new Vector2(3, 2);\n * const v3 = Vector2.add(new Vector2(), v1, v2);\n * v3.x // 5\n * v3.y // 3\n * ```\n */\n static add(out, a, b) {\n out.set(a.x + b.x, a.y + b.y);\n return out;\n }\n /**\n * Calculates a - b\n *\n * @param out The output vector\n * @param a The first operand\n * @param b The second operand\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3, 2);\n * const v2 = new Vector2(2, 1);\n * const v3 = Vector2.subtract(new Vector2(), v1, v2);\n * v3.x // 1\n * v3.y // 1\n * ```\n */\n static subtract(out, a, b) {\n out.set(a.x - b.x, a.y - b.y);\n return out;\n }\n /**\n * Returns the unit vector\n *\n * @param out The output vector\n * @param a The vector to get the unit\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3, 0);\n * const v2 = Vector2.unit(new Vector2(), v1);\n * v2.x // 1\n * v2.y // 0\n * ```\n */\n static unit(out, a) {\n const lenSq = a.x * a.x + a.y * a.y;\n if (lenSq === 0) {\n out.set(0, 0);\n }\n else {\n const inv = 1 / Math.sqrt(lenSq);\n out.set(a.x * inv, a.y * inv);\n }\n return out;\n }\n /**\n * Normalize a vector\n *\n * @param out The output vector\n * @param a The vector to normalize\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(0, 2);\n * const v2 = Vector2.normal(new Vector2(), v1);\n * v2.x // -2\n * v2.y // 0\n * ```\n */\n static normal(out, a) {\n out.set(-a.y, a.x);\n return this.unit(out, out);\n }\n /**\n * Scale a vector\n *\n * @param out The output vector\n * @param a The vector to scale\n * @param scalar The scalar value\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3, 2);\n * const v2 = Vector2.scale(new Vector2(), v1, 2);\n * v2.x // 6\n * v2.y // 4\n * ```\n */\n static scale(out, a, scalar) {\n out.set(a.x * scalar, a.y * scalar);\n return out;\n }\n /**\n * Calculates the dot product of two vectors and returns a scalar value\n *\n * @param a The first operand\n * @param b The second operand\n * @returns The dot product result\n * @example\n * ```js\n * const v1 = new Vector2(3, 2);\n * const v2 = new Vector2(2, 1);\n * Vector2.dot(v1, v2); // 8\n * ```\n */\n static dot(a, b) {\n return a.x * b.x + a.y * b.y;\n }\n /**\n * Calculates the cross product of two vectors and returns a scalar value\n *\n * @param a The first operand\n * @param b The second operand\n * @returns The cross produc result\n * @example\n * ```js\n * const v1 = new Vector2(3, 2);\n * const v2 = new Vector2(2, 1);\n * Vector2.cross(v1, v2); // -1\n * ```\n */\n static cross(a, b) {\n return a.x * b.y - a.y * b.x;\n }\n /**\n * Rounds a vector\n *\n * @param a The vector to round\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * const v2 = Vector2.round(new Vector2(), v1);\n * v2.x // 4\n * v2.y // 2\n * ```\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * Vector2.round(v1, v1);\n * v1.x // 4\n * v1.y // 2\n * ```\n */\n static round(out, a) {\n out.set(Math.round(a.x), Math.round(a.y));\n return out;\n }\n /**\n * Floors a vector\n *\n * @param a The vector to floor\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * const v2 = Vector2.floor(new Vector2(), v1);\n * v2.x // 3\n * v2.y // 2\n * ```\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * Vector2.floor(v1, v1);\n * v1.x // 3\n * v1.y // 2\n * ```\n */\n static floor(out, a) {\n out.set(Math.floor(a.x), Math.floor(a.y));\n return out;\n }\n /**\n * Ceils a vector\n *\n * @param a The vector to ceil\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * const v2 = Vector2.ceil(new Vector2(), v1);\n * v2.x // 4\n * v2.y // 3\n * ```\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * Vector2.ceil(v1, v1);\n * v1.x // 4\n * v1.y // 3\n * ```\n */\n static ceil(out, a) {\n out.set(Math.ceil(a.x), Math.ceil(a.y));\n return out;\n }\n toString() {\n return `(${this._x}, ${this._y})`;\n }\n}\n//# sourceMappingURL=Vector2.js.map","import { Vector2 } from \"./Vector2\";\n/**\n * Represents an axis-aligned bounding rectangle (AABR) defined by position, width and height.\n * The position represents the bottom-left corner of the rectangle.\\\n * Provides methods and properties for manipulating and querying the rectangle's geometry.\n * @category Math\n * @public\n * @example\n * ```js\n * const rect = new Rectangle(0, 0, 100, 100);\n * rect.width // 100\n * rect.height // 100\n *\n * rect.x // 0\n * rect.y // 0\n *\n * rect.x1 // 100\n * rect.y1 // 100\n *\n * rect.center // { x: 50, y: 50 }\n *\n * rect.intersects(new Rectangle(50, 50, 100, 100)) // true\n *\n * rect.contains(new Vector2(50, 50)) // true\n *\n * rect.contains(new Rectangle(100, 100, 100, 100)) // false\n *\n * rect.toString() // \"(0, 0, 100, 100)\"\n * ```\n */\nexport class Rectangle {\n constructor(x = 0, y = 0, width = 0, height = 0) {\n this.width = 0;\n this.height = 0;\n this._position = new Vector2();\n this._center = new Vector2();\n this.set(x, y, width, height);\n }\n get x() {\n return this._position.x;\n }\n set x(value) {\n this._position.set(value, this._position.y);\n }\n get y() {\n return this._position.y;\n }\n set y(value) {\n this._position.set(this._position.x, value);\n }\n get x1() {\n return this._position.x + this.width;\n }\n get y1() {\n return this._position.y + this.height;\n }\n get position() {\n return this._position;\n }\n set position(position) {\n this._position.set(position.x, position.y);\n }\n get center() {\n this._center.set(this.x + this.width / 2, this.y + this.height / 2);\n return this._center;\n }\n /**\n * Set the rectangle\n *\n * @param x\n * @param y\n * @param width\n * @param height\n */\n set(x, y, width, height) {\n this._position.set(x, y);\n this.width = width;\n this.height = height;\n }\n /**\n * Compare if two rectangles are equals\n *\n * @param rectangle The rectangle to compare\n * @returns TRUE if the rectangles are equals, FALSE if not\n */\n equals(rectangle) {\n return (this.position.equals(rectangle.position) &&\n this.width === rectangle.width &&\n this.height === rectangle.height);\n }\n /**\n * Copy the target rectangle properties\n *\n * @param rect The rectangle to copy from\n */\n copy(rect) {\n this.set(rect.x, rect.y, rect.width, rect.height);\n }\n /**\n * Check if the target rectangle is overlapping\n *\n * @param rect The target rectangle\n * @returns TRUE or FALSE\n */\n intersects(rect) {\n return !(this.x1 < rect.x || this.x > rect.x1 || this.y1 < rect.y || this.y > rect.y1);\n }\n contains(object) {\n if (object instanceof Rectangle) {\n return object.x1 <= this.x1 && object.x >= this.x && object.y1 <= this.y1 && object.y >= this.y;\n }\n else if (object instanceof Vector2) {\n return !(object.x < this.x || object.y < this.y || object.x >= this.x1 || object.y >= this.y1);\n }\n return false;\n }\n toString() {\n return `(${this.position.x}, ${this.position.y}, ${this.width}, ${this.height})`;\n }\n}\n//# sourceMappingURL=Rectangle.js.map","/**\n * Constrains a number to be within a specified range by clamping it between a minimum and maximum value.\\\n * If the value is less than the minimum, returns the minimum. If greater than the maximum, returns the maximum.\\\n * Otherwise returns the original value unchanged.\n * @category Math\n * @public\n * @param value number to clamp\n * @param min min value\n * @param max max value\n * @returns clamped value\n * @example\n * ```js\n * clamp(10, 0, 5); // 5\n * clamp(10, 0, 15); // 10\n * ```\n */\nexport const clamp = (value, min, max) => Math.min(max, Math.max(min, value));\n/**\n * Returns a random integer number between the given minimum (inclusive) and maximum (inclusive) values.\\\n * Uses Math.random() internally to generate the random number, then rounds and scales it to fit the desired range.\n * @category Math\n * @public\n * @param min min value\n * @param max max value\n * @returns the random int value\n * @example\n * ```js\n * randomInt(0, 10); // 5\n * ```\n */\nexport const randomInt = (min, max) => Math.round(Math.random() * (max - min)) + min;\n/**\n * Returns a random floating point number between the given minimum (inclusive) and maximum (inclusive) values.\\\n * Uses Math.random() internally to generate the random number and can be rounded to a specified number of decimal places.\n * @category Math\n * @public\n * @param min min value\n * @param max max value\n * @returns the random float value\n * @example\n * ```js\n * randomFloat(0, 10); // 5.23\n * randomFloat(0, 10, 4); // 5.2345\n * ```\n */\nexport const randomFloat = (min, max, decimals = 2) => fixedRound(Math.random() * (max - min) + min, decimals);\n/**\n * Rounds a floating point number to a specified number of decimal places.\\\n * Uses Math.round() internally to avoid floating point precision errors that can occur with direct decimal arithmetic.\\\n * For example, 5.2345 rounded to 2 decimal places becomes 5.23.\n * @category Math\n * @public\n * @param value the value to round\n * @param decimals the number of decimals\n * @returns the rounded value\n * @example\n * ```js\n * fixedRound(5.2345, 2); // 5.23\n * ```\n */\nexport const fixedRound = (value, decimals) => Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);\n/**\n * Generates an array containing a sequence of numbers from start to end (inclusive) with optional step size.\\\n * For example, range(0,5) produces [0,1,2,3,4,5] and range(0,10,2) produces [0,2,4,6,8,10].\\\n * Useful for creating numeric sequences and iteration ranges.\n * @category Math\n * @public\n * @param start the starting value\n * @param end the end value\n * @param steps the steps to move\n * @returns number range\n * @example\n * ```js\n * range(0, 5); // [0, 1, 2, 3, 4, 5]\n * range(0, 10, 2); // [0, 2, 4, 6, 8, 10]\n * ```\n */\nexport const range = (start, end, steps = 1) => {\n const range = [];\n for (let i = start; i <= end; i += steps) {\n range.push(i);\n }\n return range;\n};\n/**\n * Checks if a number falls within a specified range (inclusive of both minimum and maximum bounds).\\\n * Returns true if the value is greater than or equal to the minimum and less than or equal to the maximum.\\\n * Useful for range checking, input validation, and boundary testing.\n * @category Math\n * @public\n * @param value number to compare\n * @param min min value\n * @param max max value\n * @returns true if the number is between the min and the max, false instead\n * @example\n * ```js\n * between(5, 0, 10); // true\n * between(5, 0, 4); // false\n * ```\n */\nexport const between = (value, min, max) => {\n return value >= min && value <= max;\n};\n/**\n * Converts an angle from radians to degrees by multiplying by (180/π).\\\n * Useful for converting between angular measurement systems and displaying angles in a more human-readable format.\n * @param radians\n * @returns degrees\n * @category Math\n * @public\n * @example\n * ```js\n * radiansToDegrees(Math.PI); // 180\n * ```\n */\nexport const radiansToDegrees = (radians) => radians * (180 / Math.PI);\n/**\n * Converts an angle from degrees to radians by multiplying by (π/180).\\\n * Useful for converting between angular measurement systems and performing trigonometric calculations.\n * @param degrees\n * @returns radians\n * @category Math\n * @public\n * @example\n * ```js\n * degreesToRadians(180); // 3.141592653589793\n * ```\n */\nexport const degreesToRadians = (degrees) => degrees * (Math.PI / 180);\n/**\n * Converts RGB color values to a hexadecimal color string.\\\n * Takes red, green and blue color components (0-255) and returns a hex color code.\\\n * Useful for converting between color formats and generating color strings for CSS/HTML.\n * @param rgb\n * @param prefix default is \"#\"\n * @returns string\n * @public\n * @category Math\n * @example\n * ```js\n * // default prefix \"#\"\n * rgbToHex({ r: 255, g: 255, b: 255 }); // #ffffff\n * ```\n * @example\n * ```js\n * // no prefix\n * rgbToHex({ r: 0, g: 255, b: 0 }, \"\"); // 00ff00\n * ```\n */\nexport const rgbToHex = ({ r, g, b }, prefix = \"#\") => {\n const hex = (x) => x.toString(16).padStart(2, \"0\");\n return `${prefix}${hex(r)}${hex(g)}${hex(b)}`;\n};\n//# sourceMappingURL=utils.js.map","export class Container {\n constructor() {\n this.instances = new Map();\n this.types = new Map();\n }\n add(type, name) {\n if (!name && !type.prototype.__ioc_injectable) {\n throw new Error(`Type ${type.name} is not injectable`);\n }\n this.types.set(name !== null && name !== void 0 ? name : type.prototype.__ioc_injectable, type);\n return this;\n }\n set(name, dependency) {\n this.instances.set(name, dependency);\n return this;\n }\n get(name) {\n var _a, _b;\n if (!this.instances.has(name)) {\n const type = this.types.get(name);\n if (!type)\n throw new Error(`${name.toString()} is not a valid type`);\n // constructor params\n const instance = new type(...((_a = type.prototype.__ioc_inject_constructor) !== null && _a !== void 0 ? _a : []).map((inject) => this.get(inject)));\n // class props\n ((_b = type.prototype.__ioc_inject_prop) !== null && _b !== void 0 ? _b : []).forEach(([prop, dependency]) => (instance[prop] = this.get(dependency)));\n this.instances.set(name, instance);\n }\n return this.instances.get(name);\n }\n has(name) {\n return this.types.has(name) || this.instances.has(name);\n }\n}\n/**\n * Decorator to mark a class as an injectable dependency that can be managed by the IoC container.\\\n * Injectable classes can be automatically instantiated and have their dependencies resolved when requested through the container.\\\n * This enables dependency injection and inversion of control.\n * @param name the name to identify the dependency\n * @public\n * @category Decorators\n * @example\n * ```typescript\n * @injectable(\"SomeDependency\")\n * class SomeDependency {}\n * ```\n */\nexport function injectable(name) {\n return function (target) {\n if (!target.prototype.__ioc_injectable || target.prototype.__ioc_injectable !== name) {\n target.prototype.__ioc_injectable = name;\n }\n };\n}\n/**\n * Decorator to mark a property or constructor parameter as a dependency that should be automatically injected by the IoC container.\\\n * When applied to a property or constructor parameter, the container will resolve and inject the specified dependency at runtime.\n * @param name the name to identify the dependency\n * @public\n * @category Decorators\n * @example\n * ```typescript\n * class SomeClass {\n * private anotherDependency: DependencyType;\n *\n * constructor(@inject(\"AnotherDependency\") anotherDependency: DependencyType) {\n * this.anotherDependency = anotherDependency;\n * }\n * }\n * ```\n * @example\n * ```typescript\n * class SomeClass {\n * @inject(\"AnotherDependency\") private anotherDependency: DependencyType;\n * }\n * ```\n */\nexport function inject(name) {\n return function (target, propertyKey, parameterIndex) {\n if (parameterIndex !== undefined) {\n // constructor param\n if (!target.prototype.__ioc_inject_constructor)\n target.prototype.__ioc_inject_constructor = [];\n target.prototype.__ioc_inject_constructor[parameterIndex] = name;\n }\n else if (propertyKey !== undefined) {\n // class prop\n if (!target.constructor.prototype.__ioc_inject_prop)\n target.constructor.prototype.__ioc_inject_prop = [];\n target.constructor.prototype.__ioc_inject_prop.push([propertyKey, name]);\n }\n };\n}\n//# sourceMappingURL=container.js.map","export const SYMBOLS = {\n CollisionRepository: Symbol.for(\"CollisionRepository\"),\n CollisionBroadphaseResolver: Symbol.for(\"CollisionBroadphaseResolver\"),\n CollisionResolutionMethod: Symbol.for(\"CollisionResolutionMethod\"),\n CollisionAABBResolver: Symbol.for(\"CollisionAABBResolver\"),\n CollisionCircumferenceAABBResolver: Symbol.for(\"CollisionCircumferenceAABBResolver\"),\n CollisionCircumferenceResolver: Symbol.for(\"CollisionCircumferenceResolver\"),\n CollisionSatResolver: Symbol.for(\"CollisionSatResolver\"),\n CollisionMatrix: Symbol.for(\"CollisionMatrix\"),\n};\n//# sourceMappingURL=symbols.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar QuadTree_1;\nimport { Rectangle, Vector2 } from \"@angry-pixel/math\";\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nconst MAX_DEPTH = 8;\nconst MAX_RECTS = 16;\nlet QuadTree = QuadTree_1 = class QuadTree {\n constructor(bounds = new Rectangle(), depth = 0) {\n this.rects = new Map();\n this.children = null;\n /** Root-only: dedupe ids across leaves (same scheme as SpartialGrid) */\n this.seenGen = [];\n this.retrieveSerial = 0;\n // cache\n this.minArea = new Vector2();\n this.maxArea = new Vector2();\n this.bounds = bounds;\n this.depth = depth;\n }\n update(shapes) {\n this.clear();\n if (shapes.length === 0)\n return;\n this.resize(shapes);\n this.ensureSeenCapacity(shapes.length);\n shapes.forEach(({ id, boundingBox }) => this.insert(id, boundingBox));\n }\n ensureSeenCapacity(shapeCount) {\n if (this.seenGen.length < shapeCount) {\n const start = this.seenGen.length;\n this.seenGen.length = shapeCount;\n this.seenGen.fill(0, start, shapeCount);\n }\n }\n clear() {\n this.rects.clear();\n if (this.children) {\n this.children.forEach((child) => child.clear());\n this.children = null;\n }\n }\n resize(shapes) {\n this.minArea.set(Infinity, Infinity);\n this.maxArea.set(-Infinity, -Infinity);\n shapes.forEach(({ boundingBox: box }) => {\n this.minArea.set(Math.min(box.x, this.minArea.x), Math.min(box.y, this.minArea.y));\n this.maxArea.set(Math.max(box.x1, this.maxArea.x), Math.max(box.y1, this.maxArea.y));\n });\n this.bounds.set(this.minArea.x, this.minArea.y, this.maxArea.x - this.minArea.x, this.maxArea.y - this.minArea.y);\n }\n insert(id, rect) {\n if (!this.children && this.rects.size >= MAX_RECTS && this.depth < MAX_DEPTH) {\n this.subdivide();\n this.rects.forEach((value, key) => this.children.forEach((child) => {\n if (child.bounds.intersects(value)) {\n child.insert(key, value);\n }\n }));\n this.rects.clear();\n }\n if (this.children) {\n this.children.forEach((child) => {\n if (child.bounds.intersects(rect)) {\n child.insert(id, rect);\n }\n });\n }\n else {\n this.rects.set(id, rect);\n }\n }\n subdivide() {\n const x = this.bounds.x;\n const y = this.bounds.y;\n const width = this.bounds.width;\n const height = this.bounds.height;\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n this.children = [\n new QuadTree_1(new Rectangle(x, y, halfWidth, halfHeight), this.depth + 1),\n new QuadTree_1(new Rectangle(x + halfWidth, y, halfWidth, halfHeight), this.depth + 1),\n new QuadTree_1(new Rectangle(x, y + halfHeight, halfWidth, halfHeight), this.depth + 1),\n new QuadTree_1(new Rectangle(x + halfWidth, y + halfHeight, halfWidth, halfHeight), this.depth + 1),\n ];\n }\n retrieve(rect) {\n if (++this.retrieveSerial === 0x7fffffff) {\n this.retrieveSerial = 1;\n this.seenGen.fill(0);\n }\n const neighbors = [];\n this.retrieveFromNode(rect, neighbors, this.retrieveSerial, this.seenGen);\n return neighbors;\n }\n retrieveFromNode(rect, result, serial, seenGen) {\n if (this.children) {\n this.children.forEach((child) => {\n if (child.bounds.intersects(rect)) {\n child.retrieveFromNode(rect, result, serial, seenGen);\n }\n });\n }\n else {\n this.rects.forEach((value, key) => {\n if (value.intersects(rect) && seenGen[key] !== serial) {\n seenGen[key] = serial;\n result.push(key);\n }\n });\n }\n }\n};\nQuadTree = QuadTree_1 = __decorate([\n injectable(SYMBOLS.CollisionBroadphaseResolver)\n], QuadTree);\nexport { QuadTree };\n//# sourceMappingURL=QuadTree.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Rectangle, Vector2 } from \"@angry-pixel/math\";\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nconst MAX_COLLIDERS_PER_CELL = 16;\nconst cell = (value, min, width, subdivisions) => Math.min(((value - min) / width) | 0, subdivisions - 1);\nlet SpartialGrid = class SpartialGrid {\n constructor() {\n this.area = new Rectangle();\n this.grid = [];\n this.rects = new Map();\n this.subdivisions = 0;\n this.lastAreaX = NaN;\n this.lastAreaY = NaN;\n this.lastAreaW = NaN;\n this.lastAreaH = NaN;\n this.lastSubdivisions = -1;\n /** Dedupe in retrieve: generation stamp per id index */\n this.seenGen = [];\n this.retrieveSerial = 0;\n this.retrieveResult = [];\n // cache\n this.minArea = new Vector2();\n this.maxArea = new Vector2();\n this.coordinates = { x0: 0, x1: 0, y0: 0, y1: 0 };\n }\n update(shapes) {\n if (shapes.length === 0) {\n this.rects.clear();\n if (this.grid.length > 0) {\n this.clearGridCells();\n }\n return;\n }\n this.resize(shapes);\n this.ensureSeenCapacity(shapes.length);\n shapes.forEach(({ id, boundingBox }) => this.insert(id, boundingBox));\n }\n ensureSeenCapacity(shapeCount) {\n if (this.seenGen.length < shapeCount) {\n const start = this.seenGen.length;\n this.seenGen.length = shapeCount;\n this.seenGen.fill(0, start, shapeCount);\n }\n }\n clearGridCells() {\n for (let x = 0; x < this.subdivisions; x++) {\n for (let y = 0; y < this.subdivisions; y++) {\n this.grid[x][y].length = 0;\n }\n }\n }\n resize(shapes) {\n this.minArea.set(Infinity, Infinity);\n this.maxArea.set(-Infinity, -Infinity);\n shapes.forEach(({ boundingBox: box }) => {\n this.minArea.set(Math.min(box.x, this.minArea.x), Math.min(box.y, this.minArea.y));\n this.maxArea.set(Math.max(box.x1, this.maxArea.x), Math.max(box.y1, this.maxArea.y));\n });\n const ax = this.minArea.x;\n const ay = this.minArea.y;\n const aw = this.maxArea.x - this.minArea.x;\n const ah = this.maxArea.y - this.minArea.y;\n this.area.set(ax, ay, aw, ah);\n const newSubdivisions = ((shapes.length / MAX_COLLIDERS_PER_CELL) | 0) + 1;\n this.cellWidth = Math.ceil(this.area.width / newSubdivisions);\n this.cellHeight = Math.ceil(this.area.height / newSubdivisions);\n const reuse = this.grid.length > 0 &&\n newSubdivisions === this.lastSubdivisions &&\n ax === this.lastAreaX &&\n ay === this.lastAreaY &&\n aw === this.lastAreaW &&\n ah === this.lastAreaH;\n if (reuse) {\n this.clearGridCells();\n }\n else {\n this.subdivisions = newSubdivisions;\n this.buildGrid();\n this.lastSubdivisions = newSubdivisions;\n this.lastAreaX = ax;\n this.lastAreaY = ay;\n this.lastAreaW = aw;\n this.lastAreaH = ah;\n }\n this.subdivisions = newSubdivisions;\n this.rects.clear();\n }\n buildGrid() {\n this.grid = [];\n for (let x = 0; x < this.subdivisions; x++) {\n this.grid[x] = [];\n for (let y = 0; y < this.subdivisions; y++) {\n this.grid[x][y] = [];\n }\n }\n }\n insert(id, box) {\n this.updateCoordinates(box);\n for (let x = this.coordinates.x0; x <= this.coordinates.x1; x++) {\n for (let y = this.coordinates.y0; y <= this.coordinates.y1; y++) {\n this.grid[x][y].push(id);\n }\n }\n this.rects.set(id, box);\n }\n retrieve(box) {\n this.retrieveResult.length = 0;\n if (++this.retrieveSerial === 0x7fffffff) {\n this.retrieveSerial = 1;\n this.seenGen.fill(0);\n }\n this.updateCoordinates(box);\n for (let x = this.coordinates.x0; x <= this.coordinates.x1; x++) {\n for (let y = this.coordinates.y0; y <= this.coordinates.y1; y++) {\n const cellIds = this.grid[x][y];\n for (let i = 0, len = cellIds.length; i < len; i++) {\n const id = cellIds[i];\n if (this.rects.get(id).intersects(box)) {\n if (this.seenGen[id] !== this.retrieveSerial) {\n this.seenGen[id] = this.retrieveSerial;\n this.retrieveResult.push(id);\n }\n }\n }\n }\n }\n return this.retrieveResult;\n }\n updateCoordinates(area) {\n this.coordinates.x0 = cell(area.x, this.area.x, this.cellWidth, this.subdivisions);\n this.coordinates.x1 = cell(area.x1, this.area.x, this.cellWidth, this.subdivisions);\n this.coordinates.y0 = cell(area.y, this.area.y, this.cellHeight, this.subdivisions);\n this.coordinates.y1 = cell(area.y1, this.area.y, this.cellHeight, this.subdivisions);\n }\n};\nSpartialGrid = __decorate([\n injectable(SYMBOLS.CollisionBroadphaseResolver)\n], SpartialGrid);\nexport { SpartialGrid };\n//# sourceMappingURL=SpartialGrid.js.map","import { Rectangle, Vector2 } from \"@angry-pixel/math\";\n/** @internal */\nexport class Polygon {\n get vertexModel() {\n return this._vertexModel;\n }\n set vertexModel(vertexModel) {\n this._vertexModel = vertexModel;\n if (vertexModel.length === 2) {\n this.vertices = [new Vector2(), new Vector2()];\n this.projectionAxes = [new Vector2()];\n return;\n }\n this.vertices = [];\n this.projectionAxes = [];\n this._vertexModel.forEach(() => {\n this.vertices.push(new Vector2());\n this.projectionAxes.push(new Vector2());\n });\n }\n constructor(vertexModel, rotation = 0) {\n this.rotation = rotation;\n this.boundingBox = new Rectangle();\n this.collider = undefined;\n this.entity = undefined;\n this.id = undefined;\n this.ignoreCollisionsWithLayers = undefined;\n this.layer = undefined;\n this.position = new Vector2();\n this.projectionAxes = [];\n this.radius = 0;\n this.vertices = [];\n this.updateCollisions = true;\n this._vertexModel = [];\n this.vertexModel = vertexModel;\n }\n}\n/** @internal */\nexport class Circumference {\n constructor(radius) {\n this.radius = radius;\n this.boundingBox = new Rectangle();\n this.collider = undefined;\n this.entity = undefined;\n this.id = undefined;\n this.ignoreCollisionsWithLayers = undefined;\n this.layer = undefined;\n this.position = new Vector2();\n this.projectionAxes = [new Vector2()];\n this.rotation = 0;\n this.vertexModel = [];\n this.vertices = [new Vector2(), new Vector2()];\n this.updateCollisions = true;\n }\n}\n//# sourceMappingURL=Shape.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { inject, injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Circumference, Polygon } from \"../Shape\";\nlet AABBMethod = class AABBMethod {\n constructor(AABBResolver, circumferenceAABBResolver, circumferenceResolver) {\n this.AABBResolver = AABBResolver;\n this.circumferenceAABBResolver = circumferenceAABBResolver;\n this.circumferenceResolver = circumferenceResolver;\n }\n findCollision(shapeA, shapeB) {\n if (shapeA instanceof Polygon && shapeB instanceof Polygon) {\n return this.AABBResolver.resolve(shapeA, shapeB);\n }\n else if (shapeA instanceof Circumference && shapeB instanceof Polygon) {\n return this.circumferenceAABBResolver.resolve(shapeA, shapeB);\n }\n else if (shapeA instanceof Polygon && shapeB instanceof Circumference) {\n return this.circumferenceAABBResolver.resolve(shapeB, shapeA, true);\n }\n else if (shapeA instanceof Circumference && shapeB instanceof Circumference) {\n return this.circumferenceResolver.resolve(shapeA, shapeB);\n }\n }\n};\nAABBMethod = __decorate([\n injectable(SYMBOLS.CollisionResolutionMethod),\n __param(0, inject(SYMBOLS.CollisionAABBResolver)),\n __param(1, inject(SYMBOLS.CollisionCircumferenceAABBResolver)),\n __param(2, inject(SYMBOLS.CollisionCircumferenceResolver))\n], AABBMethod);\nexport { AABBMethod };\n//# sourceMappingURL=AABBMethod.js.map","/**\n * Resolution phase collision methods\n * - AABB (axis-aligned bounding box): It only works with axis-aligned rectangles and lines and cimcurferences.\n * - SAT (Separation axis theorem): It works with every type of shape.\n * @category Config\n * @public\n */\nexport var CollisionMethods;\n(function (CollisionMethods) {\n CollisionMethods[CollisionMethods[\"AABB\"] = 0] = \"AABB\";\n CollisionMethods[CollisionMethods[\"SAT\"] = 1] = \"SAT\";\n})(CollisionMethods || (CollisionMethods = {}));\n//# sourceMappingURL=CollisionMethod.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { inject, injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Circumference } from \"../Shape\";\nlet SatMethod = class SatMethod {\n constructor(circumferenceResolver, satResolver) {\n this.circumferenceResolver = circumferenceResolver;\n this.satResolver = satResolver;\n }\n findCollision(shapeA, shapeB) {\n if (shapeA instanceof Circumference && shapeB instanceof Circumference) {\n return this.circumferenceResolver.resolve(shapeA, shapeB);\n }\n else {\n return this.satResolver.resolve(shapeA, shapeB);\n }\n }\n};\nSatMethod = __decorate([\n injectable(SYMBOLS.CollisionResolutionMethod),\n __param(0, inject(SYMBOLS.CollisionCircumferenceResolver)),\n __param(1, inject(SYMBOLS.CollisionSatResolver))\n], SatMethod);\nexport { SatMethod };\n//# sourceMappingURL=SatMethod.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Vector2 } from \"@angry-pixel/math\";\nlet AABBResolver = class AABBResolver {\n constructor() {\n this.direction = new Vector2();\n this.resolutionDirection = new Vector2();\n /** Reused return direction; callers that store CollisionResolution must copy `direction`. */\n this.outDirection = new Vector2();\n }\n resolve({ boundingBox: boxA }, { boundingBox: boxB }) {\n this.overlapX = Math.min(boxA.x1, boxB.x1) - Math.max(boxA.x, boxB.x);\n this.overlapY = Math.min(boxA.y1, boxB.y1) - Math.max(boxA.y, boxB.y);\n if (this.overlapX < 0 || this.overlapY < 0)\n return undefined;\n this.checkOverlapForLines(boxA, boxB);\n this.direction.set(Math.sign(boxB.center.x - boxA.center.x), Math.sign(boxB.center.y - boxA.center.y));\n this.preventContainment(boxA, boxB);\n if (this.overlapY < this.overlapX) {\n this.minOverlap = this.overlapY;\n this.resolutionDirection.set(0, this.direction.y);\n }\n else {\n this.minOverlap = this.overlapX;\n this.resolutionDirection.set(this.direction.x, this.overlapY === this.overlapX ? this.direction.y : 0);\n }\n return {\n direction: Vector2.unit(this.outDirection, this.resolutionDirection),\n penetration: this.minOverlap,\n };\n }\n checkOverlapForLines(boxA, boxB) {\n if ((boxA.width === 0 || boxB.width === 0) && this.overlapX === 0) {\n this.overlapX = Math.min(Math.abs(boxA.x - boxB.x), Math.abs(boxA.x1 - boxB.x1));\n }\n if ((boxA.height === 0 || boxB.height === 0) && this.overlapY === 0) {\n this.overlapY = Math.min(Math.abs(boxA.y - boxB.y), Math.abs(boxA.y1 - boxB.y1));\n }\n }\n preventContainment(boxA, boxB) {\n if (this.overlapY > 0) {\n if ((boxA.y1 > boxB.y1 && boxA.y < boxB.y) || (boxA.y1 < boxB.y1 && boxA.y > boxB.y)) {\n const minSep = Math.abs(boxA.y - boxB.y);\n const maxSep = Math.abs(boxA.y1 - boxB.y1);\n this.overlapY += minSep < maxSep ? minSep : maxSep;\n }\n }\n if (this.overlapX > 0) {\n if ((boxA.x1 > boxB.x1 && boxA.x < boxB.x) || (boxA.x1 < boxB.x1 && boxA.x > boxB.x)) {\n const minSep = Math.abs(boxA.x - boxB.x);\n const maxSep = Math.abs(boxA.x1 - boxB.x1);\n this.overlapX += minSep < maxSep ? minSep : maxSep;\n }\n }\n }\n};\nAABBResolver = __decorate([\n injectable(SYMBOLS.CollisionAABBResolver)\n], AABBResolver);\nexport { AABBResolver };\n//# sourceMappingURL=AABBResolver.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { clamp, Vector2 } from \"@angry-pixel/math\";\nlet CircumferenceAABBResolver = class CircumferenceAABBResolver {\n constructor() {\n this.closestPoint = new Vector2();\n this.distance = new Vector2();\n this.direction = new Vector2();\n /** Reused return direction; callers that store CollisionResolution must copy `direction`. */\n this.outDirection = new Vector2();\n }\n resolve(shapeA, shapeB, invert = false) {\n this.closestPoint.set(clamp(shapeA.position.x, shapeB.boundingBox.x, shapeB.boundingBox.x1), clamp(shapeA.position.y, shapeB.boundingBox.y, shapeB.boundingBox.y1));\n Vector2.subtract(this.distance, this.closestPoint, shapeA.position);\n const len = this.distance.magnitude;\n if (len > shapeA.radius)\n return undefined;\n Vector2.unit(this.direction, this.distance);\n if (invert)\n Vector2.scale(this.outDirection, this.direction, -1);\n else\n this.outDirection.copy(this.direction);\n return {\n direction: this.outDirection,\n penetration: shapeA.radius - len,\n };\n }\n};\nCircumferenceAABBResolver = __decorate([\n injectable(SYMBOLS.CollisionCircumferenceAABBResolver)\n], CircumferenceAABBResolver);\nexport { CircumferenceAABBResolver };\n//# sourceMappingURL=CircumferenceAABBResolver.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Vector2 } from \"@angry-pixel/math\";\nlet CircumferenceResolver = class CircumferenceResolver {\n constructor() {\n this.distance = new Vector2();\n /** Reused return direction; callers that store CollisionResolution must copy `direction`. */\n this.outDirection = new Vector2();\n }\n resolve(shapeA, shapeB) {\n Vector2.subtract(this.distance, shapeB.position, shapeA.position);\n const len = this.distance.magnitude;\n const rSum = shapeA.radius + shapeB.radius;\n if (len > rSum)\n return undefined;\n Vector2.unit(this.outDirection, this.distance);\n return {\n direction: this.outDirection,\n penetration: rSum - len,\n };\n }\n};\nCircumferenceResolver = __decorate([\n injectable(SYMBOLS.CollisionCircumferenceResolver)\n], CircumferenceResolver);\nexport { CircumferenceResolver };\n//# sourceMappingURL=CircumferenceResolver.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Vector2 } from \"@angry-pixel/math\";\nimport { Circumference } from \"../Shape\";\nlet SatResolver = class SatResolver {\n constructor() {\n this.mergedAxes = [];\n this.projA = { min: 0, max: 0 };\n this.projB = { min: 0, max: 0 };\n this.smallestAxis = new Vector2();\n this.distance = new Vector2(Infinity, Infinity);\n this.cache = new Vector2();\n /** Reused return direction; callers that store CollisionResolution must copy `direction`. */\n this.outDirection = new Vector2();\n }\n resolve(shapeA, shapeB) {\n this.minOverlap = Infinity;\n if (shapeA instanceof Circumference)\n this.setCircumferenceAxis(shapeA, shapeB);\n else if (shapeB instanceof Circumference)\n this.setCircumferenceAxis(shapeB, shapeA);\n this.mergeProjectionAxes(shapeA, shapeB);\n for (let i = 0; i < this.mergedAxes.length; i++) {\n const axis = this.mergedAxes[i];\n if (shapeA instanceof Circumference)\n this.setCircumferenceVertices(shapeA, axis);\n else if (shapeB instanceof Circumference)\n this.setCircumferenceVertices(shapeB, axis);\n this.projectShapeOntoAxis(this.projA, shapeA, axis);\n this.projectShapeOntoAxis(this.projB, shapeB, axis);\n this.currentOverlap = Math.min(this.projA.max, this.projB.max) - Math.max(this.projA.min, this.projB.min);\n if (this.currentOverlap < 0)\n return undefined;\n this.invertAxis = true;\n // prevent containment\n if ((this.projA.max > this.projB.max && this.projA.min < this.projB.min) ||\n (this.projA.max < this.projB.max && this.projA.min > this.projB.min)) {\n const mins = Math.abs(this.projA.min - this.projB.min);\n const maxs = Math.abs(this.projA.max - this.projB.max);\n if (mins < maxs) {\n this.currentOverlap += mins;\n }\n else {\n this.currentOverlap += maxs;\n Vector2.scale(axis, axis, -1);\n this.invertAxis = false;\n }\n }\n if (this.currentOverlap < this.minOverlap) {\n this.minOverlap = this.currentOverlap;\n this.smallestAxis.copy(axis);\n if (this.invertAxis && this.projA.max < this.projB.max) {\n Vector2.scale(this.smallestAxis, axis, -1);\n }\n }\n }\n Vector2.scale(this.outDirection, this.smallestAxis, -1);\n return {\n direction: this.outDirection,\n penetration: this.minOverlap,\n };\n }\n mergeProjectionAxes(shapeA, shapeB) {\n const ax = shapeA.projectionAxes;\n const bx = shapeB.projectionAxes;\n this.mergedAxes.length = 0;\n for (let i = 0; i < ax.length; i++) {\n this.mergedAxes.push(ax[i]);\n }\n for (let j = 0; j < bx.length; j++) {\n const pb = bx[j];\n let duplicate = false;\n for (let k = 0; k < this.mergedAxes.length; k++) {\n if (this.mergedAxes[k].equals(pb)) {\n duplicate = true;\n break;\n }\n }\n if (!duplicate) {\n this.mergedAxes.push(pb);\n }\n }\n }\n projectShapeOntoAxis(projection, shape, axis) {\n projection.min = Infinity;\n projection.max = -Infinity;\n const verts = shape.vertices;\n for (let i = 0; i < verts.length; i++) {\n const d = Vector2.dot(axis, verts[i]);\n if (d < projection.min)\n projection.min = d;\n if (d > projection.max)\n projection.max = d;\n }\n return projection;\n }\n setCircumferenceAxis(c, s) {\n this.distance.set(Infinity, Infinity);\n let bestLenSq = Infinity;\n const verts = s.vertices;\n for (let i = 0; i < verts.length; i++) {\n Vector2.subtract(this.cache, verts[i], c.position);\n const lenSq = this.cache.x * this.cache.x + this.cache.y * this.cache.y;\n if (lenSq < bestLenSq) {\n bestLenSq = lenSq;\n this.distance.copy(this.cache);\n }\n }\n Vector2.unit(c.projectionAxes[0], this.distance);\n }\n setCircumferenceVertices(c, axis) {\n Vector2.add(c.vertices[0], c.position, Vector2.scale(this.cache, Vector2.unit(this.cache, axis), -c.radius));\n Vector2.add(c.vertices[1], c.position, Vector2.scale(this.cache, Vector2.unit(this.cache, axis), c.radius));\n }\n};\nSatResolver = __decorate([\n injectable(SYMBOLS.CollisionSatResolver)\n], SatResolver);\nexport { SatResolver };\n//# sourceMappingURL=SatResolver.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"./symbols\";\n/**\n * The CollisionRepository stores and manages collision data between colliders.\n * It provides methods for querying collisions by collider and layer,\n * and handles persisting/removing collision records.\n * @public\n * @category Collisions\n * @example\n * ```typescript\n * // Get all collisions for a collider\n * const collisions = collisionRepository.findCollisionsForCollider(playerCollider);\n *\n * // Get collisions between player and enemies\n * const enemyCollisions = collisionRepository.findCollisionsForColliderAndLayer(\n * playerCollider,\n * \"enemy\"\n * );\n *\n * // Get all current collisions\n * const allCollisions = collisionRepository.findAll();\n * ```\n */\nlet CollisionRepository = class CollisionRepository {\n constructor() {\n this.collisions = [];\n }\n /**\n * Searches for and returns a collection of collisions for the given collider\n * @param collider The local collider\n * @returns A collection of collisions\n */\n findCollisionsForCollider(collider) {\n return this.collisions.filter((c) => c.localCollider === collider);\n }\n /**\n * Searches for and returns a collection of collisions for the given collider and layer\n * @param collider The local collider\n * @param layer The collision layer\n * @returns A collection of collisions\n */\n findCollisionsForColliderAndLayer(collider, layer) {\n return this.collisions.filter((c) => c.localCollider === collider && c.remoteCollider.layer === layer);\n }\n /**\n * Returns all the collisions\n * @public\n * @returns A collection of collisions\n */\n findAll() {\n return this.collisions;\n }\n /** @internal */\n persist(collision) {\n this.collisions.push(collision);\n }\n /** @internal */\n removeAll() {\n this.collisions = [];\n }\n};\nCollisionRepository = __decorate([\n injectable(SYMBOLS.CollisionRepository)\n], CollisionRepository);\nexport { CollisionRepository };\n//# sourceMappingURL=CollisionRepository.js.map","export const deepClone = (value) => {\n if (value === null || typeof value !== \"object\") {\n return value; // primitives\n }\n // avoid cloning DOM elements\n if (typeof Node !== \"undefined\" && value instanceof Node) {\n return value;\n }\n // avoid cloning FontFace instances\n if (typeof FontFace !== \"undefined\" && value instanceof FontFace) {\n return value;\n }\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n if (value instanceof Array) {\n return value.map((item) => deepClone(item));\n }\n if (value instanceof Map) {\n const result = new Map();\n for (const [k, v] of value) {\n result.set(deepClone(k), deepClone(v));\n }\n return result;\n }\n if (value instanceof Set) {\n const result = new Set();\n for (const item of value) {\n result.add(deepClone(item));\n }\n return result;\n }\n // creates an empty object with the same prototype as the original value\n const proto = Object.getPrototypeOf(value);\n const clone = Object.create(proto);\n // clone all properties of the original value\n for (const key of Object.keys(value)) {\n clone[key] = deepClone(value[key]);\n }\n return clone;\n};\n/**\n * Creates a disabled component\n * @param component The component to disable\n * @returns The disabled component\n * @category Entity-Component-System\n * @public\n * @example\n * ```js\n * const disabledTransform = disableComponent(Transform);\n * ```\n */\nexport const disableComponent = (component) => ({\n enabled: false,\n component,\n});\n//# sourceMappingURL=utils.js.map","export const SYMBOLS = {\n EntityManager: Symbol.for(\"EntityManager\"),\n SystemManager: Symbol.for(\"SystemManager\"),\n};\n//# sourceMappingURL=symbols.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { deepClone } from \"./utils\";\nimport { SYMBOLS } from \"./symbols\";\n/**\n * The EntityManager is responsible for managing the lifecycle and relationships of entities and components.\\\n * It provides methods for creating, reading, updating and deleting entities and their associated components.\\\n * Handles parent-child relationships between entities and enables/disables entities and components.\\\n * Acts as the central registry for all game objects and their behaviors.\n * @public\n * @category Entity-Component-System\n * @example\n * ```js\n * // Create an entity with components\n * const entity = entityManager.createEntity([\n * new Transform({position: new Vector2(100, 100)}),\n * new SpriteRenderer({sprite: \"player.png\"})\n * ]);\n *\n * // Get a component from an entity\n * const transform = entityManager.getComponent(entity, Transform);\n *\n * // Get all components from an entity\n * const components = entityManager.getComponents(entity);\n *\n * // Find entity by component\n * const entityWithSprite = entityManager.getEntityForComponent(spriteRenderer);\n *\n * // Update component data\n * entityManager.updateComponentData(entity, Transform, (component) => {\n * component.position = new Vector2(200, 200);\n * });\n *\n * // Create parent-child relationship\n * const child = entityManager.createEntity([Transform], parent);\n * // or if you already have the child entity\n * entityManager.setParent(child, parent);\n *\n * // Enable/disable entities\n * entityManager.disableEntity(entity);\n * entityManager.enableEntity(entity);\n *\n * // Remove components\n * entityManager.removeComponent(entity, SpriteRenderer);\n * entityManager.removeComponent(spriteRenderer);\n *\n * // Search for entities with specific components\n * const searchResult = entityManager.search(SpriteRenderer);\n * searchResult.forEach(({component, entity}) => {\n * // do something with the component and entity\n * })\n *\n * const searchResult = entityManager.search(Enemy, (component) => component.status === \"alive\");\n * searchResult.forEach(({component, entity}) => {\n * // do something with the component and entity\n * })\n * ```\n */\nlet EntityManager = class EntityManager {\n constructor() {\n this.lastEntityId = 0;\n this.lastComponentTypeId = 0;\n this.entities = new Set();\n this.components = new Map(); // componen type id -> entity id -> component\n this.disabledEntities = new Set();\n this.manuallyDisabledEntities = new Set();\n this.disabledComponents = new Map(); // entity -> set of component type id\n this.parentEntities = new Map(); // child entity -> parent entity\n this.childEntities = new Map(); // parent entity -> set of child entities\n }\n createEntity(components, parent) {\n const entity = this.lastEntityId++;\n if (components) {\n this.entities.add(entity);\n components.forEach((component) => this.addComponent(entity, component));\n if (parent)\n this.setParent(entity, parent);\n }\n return entity;\n }\n /**\n * Creates an Entity based on an Archetype.\\\n * Since the components are cloned, the archetype can be reused to create multiple entities.\n * @param archetype The archetype to create the entity from\n * @param parent The parent entity (optional)\n * @returns The created Entity\n * @public\n * @example\n * ```js\n * const archetype = {\n * components: [\n * new Transform({position: new Vector2(100, 100)}),\n * SpriteRenderer\n * ],\n * children: [childArchetype],\n * enabled: true\n * }\n * const entity = entityManager.createEntityFromArchetype(archetype);\n * ```\n */\n createEntityFromArchetype({ components, children, enabled }, parent) {\n const entity = this.lastEntityId++;\n this.entities.add(entity);\n this.createComponentsFromArchetype(components, entity);\n if (parent)\n this.setParent(entity, parent);\n if (children)\n children.forEach((child) => this.createEntityFromArchetype(child, entity));\n if (enabled === false)\n this.disableEntity(entity);\n return entity;\n }\n /**\n * Creates components from an archetype\n * @param components The components to create\n * @param entity The entity to create the components for\n * @private\n */\n createComponentsFromArchetype(components, entity) {\n components.forEach((component) => {\n let enabled = true;\n let instance;\n if (typeof component === \"object\" &&\n \"component\" in component &&\n \"enabled\" in component &&\n component.enabled === false) {\n enabled = false;\n component = component.component;\n }\n if (typeof component === \"object\") {\n instance = this.addComponent(entity, deepClone(component));\n }\n else if (typeof component === \"function\") {\n instance = this.addComponent(entity, component);\n }\n else {\n throw new Error(\"Invalid component type\");\n }\n if (!enabled)\n this.disableComponent(instance);\n });\n }\n /**\n * Removes an Entity and all its Components\n * @param entity The entity to remove\n * @public\n * @example\n * ```js\n * entityManager.removeEntity(entity);\n * ```\n */\n removeEntity(entity) {\n var _a;\n this.getChildren(entity).forEach((child) => this.removeEntity(child));\n this.components.forEach((row) => {\n if (row.has(entity))\n row.delete(entity);\n });\n this.disabledComponents.delete(entity);\n this.disabledEntities.delete(entity);\n this.manuallyDisabledEntities.delete(entity);\n const parent = this.getParent(entity);\n if (parent) {\n (_a = this.childEntities.get(parent)) === null || _a === void 0 ? void 0 : _a.delete(entity);\n }\n this.parentEntities.delete(entity);\n this.childEntities.delete(entity);\n this.entities.delete(entity);\n }\n /**\n * Removes all Entities and all their Components\n * @param preserveComponentType Optional component type to preserve entities that have this component\n * @public\n * @example\n * ```js\n * // Remove all entities\n * entityManager.removeAllEntities();\n *\n * // Remove all entities except those that have a SpriteRenderer component\n * entityManager.removeAllEntities(SpriteRenderer);\n * ```\n */\n removeAllEntities(preserveComponentType) {\n const result = preserveComponentType ? this.search(preserveComponentType) : [];\n if (result.length > 0) {\n const entitiesToPreserve = new Set(result.map(({ entity }) => entity));\n for (const entity of this.entities) {\n if (!entitiesToPreserve.has(entity))\n this.removeEntity(entity);\n }\n }\n else {\n this.components.clear();\n this.disabledComponents.clear();\n this.disabledEntities.clear();\n this.manuallyDisabledEntities.clear();\n this.lastEntityId = 0;\n this.entities.clear();\n this.parentEntities.clear();\n this.childEntities.clear();\n }\n }\n /**\n * If the Entity exists, returns TRUE, otherwise it returns FALSE\n * @param entity\n * @returns boolean\n * @example\n * ```js\n * const isEntity = entityManager.isEntity(entity);\n * ```\n */\n isEntity(entity) {\n return this.entities.has(entity);\n }\n /**\n * If the Entity is enabled, returns TRUE, otherwise it returns FALSE\n * @param entity The entity to verify\n * @returns boolean\n * @public\n * @example\n * ```js\n * const entityEnabled = entityManager.isEntityEnabled(entity);\n * ```\n */\n isEntityEnabled(entity) {\n return this.isEntity(entity) && !this.disabledEntities.has(entity);\n }\n /**\n * Enables an Entity.\\\n * The entity's components will be included in the `search` results\\\n * and therefore will be processed by their respective systems\\\n * (the engine built-in systems use the `search` method to retrieve the entities).\n * If the entity has children, they will also be enabled, except for those that have been manually disabled.\n * @param entity The entity to be enabled\n * @public\n * @example\n * ```js\n * entityManager.enableEntity(entity);\n * ```\n */\n enableEntity(entity) {\n if (this.disabledEntities.has(entity)) {\n this.disabledEntities.delete(entity);\n this.getChildren(entity).forEach((child) => {\n if (!this.manuallyDisabledEntities.has(child)) {\n this.enableEntity(child);\n }\n });\n }\n }\n /**\n * Disables an entity.\\\n * The entity's components will not be included in the `search` results\\\n * and therefore will not be processed by their respective systems\\\n * (the engine built-in systems use the `search` method to retrieve the entities).\n * If the entity has children, they will also be disabled.\n * @param entity The entity to be disabled\n * @public\n * @example\n * ```js\n * entityManager.disableEntity(entity);\n * ```\n */\n disableEntity(entity) {\n if (!this.disabledEntities.has(entity)) {\n this.disabledEntities.add(entity);\n this.getChildren(entity).forEach((child) => {\n if (this.disabledEntities.has(child)) {\n this.manuallyDisabledEntities.add(child);\n }\n else {\n this.disableEntity(child);\n }\n });\n }\n }\n /**\n * Disable all Entities that have a component of the given type\n * @param componentType The class of the component\n * @public\n * @example\n * ```js\n * entityManager.disableEntitiesByComponent(SpriteRenderer);\n * ```\n */\n disableEntitiesByComponent(componentType) {\n var _a, _b;\n for (const entity of (_b = (_a = this.components.get(this.getComponentTypeId(componentType))) === null || _a === void 0 ? void 0 : _a.keys()) !== null && _b !== void 0 ? _b : []) {\n this.disableEntity(entity);\n }\n }\n /**\n * Enable all Entities that have a component of the given type\n * @param componentType The class of the component\n * @public\n * @example\n * ```js\n * entityManager.enableEntitiesByComponent(SpriteRenderer);\n * ```\n */\n enableEntitiesByComponent(componentType) {\n var _a, _b;\n for (const entity of (_b = (_a = this.components.get(this.getComponentTypeId(componentType))) === null || _a === void 0 ? void 0 : _a.keys()) !== null && _b !== void 0 ? _b : []) {\n this.enableEntity(entity);\n }\n }\n /**\n * Sets a parent-child relationship between two entities\n * @param child The child entity\n * @param parent The parent entity\n * @public\n * @example\n * ```js\n * entityManager.setParent(child, parent);\n * ```\n */\n setParent(child, parent) {\n if (!this.isEntity(child) || !this.isEntity(parent)) {\n throw new Error(\"Both entities must exist to set a parent-child relationship.\");\n }\n if (this.parentEntities.has(child)) {\n const oldParent = this.parentEntities.get(child);\n if (oldParent === parent)\n return;\n this.childEntities.get(oldParent).delete(child);\n }\n this.parentEntities.set(child, parent);\n if (!this.childEntities.has(parent))\n this.childEntities.set(parent, new Set());\n this.childEntities.get(parent).add(child);\n }\n /**\n * Returns the parent entity of the child entity\n * @param child\n * @returns The parent entity\n * @public\n * @example\n * ```js\n * const parent = entityManager.getParent(child);\n * ```\n */\n getParent(child) {\n return this.parentEntities.get(child);\n }\n /**\n * Returns all child entities of the parent entity\n * @param parent\n * @returns A collection of child entities\n * @public\n * @example\n * ```js\n * const children = entityManager.getChildren(parent);\n * ```\n */\n getChildren(parent) {\n return Array.from(this.childEntities.get(parent) || []);\n }\n /**\n * Removes the parent-child relationship between two entities\n * @param child The child entity\n * @public\n * @example\n * ```js\n * entityManager.removeParent(child);\n * ```\n */\n removeParent(child) {\n const parent = this.parentEntities.get(child);\n if (parent) {\n this.parentEntities.delete(child);\n this.childEntities.get(parent).delete(child);\n }\n }\n /**\n * Removes a child entity from the parent entity\n * @param parent The parent entity\n * @param child The child entity\n * @public\n * @example\n * ```js\n * entityManager.removeChild(parent, child);\n * ```\n */\n removeChild(parent, child) {\n if (this.parentEntities.get(child) === parent) {\n this.parentEntities.delete(child);\n this.childEntities.get(parent).delete(child);\n }\n }\n addComponent(entity, component) {\n var _a;\n const id = this.getComponentTypeId(component);\n const instance = typeof component === \"object\" ? component : new component();\n if (!this.components.has(id))\n this.components.set(id, new Map());\n if (this.components.get(id).has(entity)) {\n const componentName = (_a = instance.constructor.componentName) !== null && _a !== void 0 ? _a : instance.constructor.name;\n throw new Error(`Entity ${entity} already has a component of type ${componentName}`);\n }\n this.components.get(id).set(entity, instance);\n return instance;\n }\n /**\n * Returns TRUE if the Entity has a component of the given type, otherwise it returns FALSE.\n * @param entity The entity to verify\n * @param componentType The class of the component\n * @returns boolean\n * @public\n * @example\n * ```js\n * const hasSpriteRenderer = entityManager.hasComponent(entity, SpriteRenderer);\n * ```\n */\n hasComponent(entity, componentType) {\n return this.getComponent(entity, componentType) !== undefined;\n }\n /**\n * Returns the component of the given type belonging to the entity\n * @param entity The entity\n * @param componentType The class of the component\n * @returns The instance of the component\n * @public\n * @example\n * ```js\n * const spriteRenderer = entityManager.getComponent(entity, SpriteRenderer);\n * ```\n */\n getComponent(entity, componentType) {\n var _a;\n return (_a = this.components.get(this.getComponentTypeId(componentType))) === null || _a === void 0 ? void 0 : _a.get(entity);\n }\n /**\n * Returns all the component belonging to the entity\n * @param entity The entity\n * @returns A collection of component instances\n * @public\n * @example\n * ```js\n * const components = entityManager.getComponents(entity);\n * ```\n */\n getComponents(entity) {\n const components = [];\n this.components.forEach((entityComponent) => entityComponent.forEach((c, e) => {\n if (entity === e)\n components.push(c);\n }));\n return components;\n }\n /**\n * Updates the data of a component instance\n * @param entity The entity\n * @param componentType The component type\n * @param updateCallback The callback to update the component\n * @public\n * @example\n * ```js\n * entityManager.updateComponentData(entity, Transform, (component) => {\n * component.position = new Vector2(100, 100);\n * });\n * ```\n */\n updateComponentData(entity, componentType, updateCallback) {\n const component = this.getComponent(entity, componentType);\n if (component)\n updateCallback(component);\n }\n /**\n * Searches for and returns an entity for the component instance\n * @param component The component instance\n * @returns The found Entity\n * @public\n * @example\n * ```js\n * const entity = entityManager.getEntityForComponent(spriteRenderer);\n * ```\n */\n getEntityForComponent(component) {\n const id = this.getComponentTypeId(component);\n if (this.components.has(id)) {\n for (const [e, c] of this.components.get(id)) {\n if (c === component)\n return e;\n }\n }\n return undefined;\n }\n removeComponent(arg1, arg2) {\n var _a;\n const id = this.getComponentTypeId(typeof arg1 === \"object\" ? arg1 : arg2);\n const entity = typeof arg1 === \"number\" ? arg1 : this.getEntityForComponent(arg1);\n if (entity !== undefined && ((_a = this.components.get(id)) === null || _a === void 0 ? void 0 : _a.has(entity)))\n this.components.get(id).delete(entity);\n }\n isComponentEnabled(arg1, arg2) {\n var _a, _b;\n const id = this.getComponentTypeId(typeof arg1 === \"object\" ? arg1 : arg2);\n // entity does not have the component\n if (typeof arg1 === \"number\" && !((_a = this.components.get(id)) === null || _a === void 0 ? void 0 : _a.has(arg1)))\n return false;\n const entity = typeof arg1 === \"number\" ? arg1 : this.getEntityForComponent(arg1);\n return !((_b = this.disabledComponents.get(entity)) === null || _b === void 0 ? void 0 : _b.has(id));\n }\n disableComponent(arg1, arg2) {\n const entity = typeof arg1 === \"number\" ? arg1 : this.getEntityForComponent(arg1);\n const id = this.getComponentTypeId(typeof arg1 === \"object\" ? arg1 : arg2);\n if (entity == undefined)\n return;\n if (!this.disabledComponents.has(entity)) {\n this.disabledComponents.set(entity, new Set([id]));\n }\n else if (!this.disabledComponents.get(entity).has(id)) {\n this.disabledComponents.get(entity).add(id);\n }\n }\n enableComponent(arg1, arg2) {\n var _a;\n const entity = typeof arg1 === \"number\" ? arg1 : this.getEntityForComponent(arg1);\n const id = this.getComponentTypeId(typeof arg1 === \"object\" ? arg1 : arg2);\n if (entity !== undefined && ((_a = this.disabledComponents.get(entity)) === null || _a === void 0 ? void 0 : _a.has(id))) {\n this.disabledComponents.get(entity).delete(id);\n }\n }\n /**\n * Returns the component of a parent entity, if it exists.\n * @param parent The parent entity\n * @param componentType The component class to search\n * @returns The instance of the component\n * @public\n * @example\n * ```js\n * const spriteRenderer = entityManager.getComponentFromParent(parent, SpriteRenderer);\n * ```\n */\n getComponentFromParent(parent, componentType) {\n let current = parent;\n while (current) {\n const component = this.getComponent(current, componentType);\n if (component)\n return component;\n current = this.getParent(current);\n }\n return undefined;\n }\n search(componentType, arg1, arg2 = false) {\n const result = [];\n const id = this.getComponentTypeId(componentType);\n const includeDisabled = typeof arg1 === \"boolean\" ? arg1 : arg2;\n const filter = typeof arg1 === \"function\" ? arg1 : undefined;\n if (this.components.has(id)) {\n this.components.get(id).forEach((component, entity) => {\n if ((!filter || filter(component, entity)) &&\n (includeDisabled ||\n (this.isEntityEnabled(entity) && this.isComponentEnabled(entity, componentType))))\n result.push({ entity, component: component });\n });\n }\n return result;\n }\n /**\n * Performs an entity search given a collection of component types.\\\n * The entities found must have an instance of all the given component types.\\\n * This method returns a collection of Entities.\n * @param componentTypes A collection of component classes\n * @returns A collection of entities\n * @public\n * @example\n * ```js\n * const entities = entityManager.searchEntitiesByComponents([Transform, SpriteRenderer, Animator]);\n * ```\n */\n searchEntitiesByComponents(componentTypes) {\n const entities = [];\n let first = true;\n for (const componentType of componentTypes) {\n const id = this.getComponentTypeId(componentType);\n if (!id || !this.components.has(id))\n return [];\n if (first) {\n entities.push(...this.components.get(id).keys());\n first = false;\n continue;\n }\n const toCompare = new Set(this.components.get(id).keys());\n entities.forEach((e, i) => {\n if (!toCompare.has(e))\n entities.splice(i, 1);\n });\n }\n return entities;\n }\n /**\n * Performs a search for entities that have a component of the given type and are children of the parent entity.\\\n * This method returns a collection of objects of type SearchResult, which has the entity found, and the instance of the component.\\\n * The third argument determines if disabled entities or components are included in the search result,\\its default value is FALSE.\n * @param parent The parent entity\n * @param componentType The component class\n * @param includeDisabled TRUE to incluide disabled entities and components. Default is FALSE.\n * @returns SearchResult\n * @public\n * @example\n * ```js\n * const searchResult = entityManager.searchInChildren(parent, SpriteRenderer);\n * searchResult.forEach(({component, entity}) => {\n * // do something with the component and entity\n * })\n * ```\n * @example\n * ```js\n * const searchResult = entityManager.searchInChildren(parent, SpriteRenderer, true);\n * searchResult.forEach(({component, entity}) => {\n * // do something with the component and entity\n * })\n * ```\n */\n searchInChildren(parent, componentType, includeDisabled = false) {\n const children = this.getChildren(parent);\n return this.search(componentType, includeDisabled).filter(({ entity }) => children.includes(entity));\n }\n getComponentTypeId(component) {\n const prototype = typeof component === \"object\" ? component.constructor.prototype : component.prototype;\n if (prototype.__ecs_type_id === undefined) {\n prototype.__ecs_type_id = Number(`${++this.lastComponentTypeId}${(performance.now() * 1e5).toFixed(0)}`);\n }\n return prototype.__ecs_type_id;\n }\n};\nEntityManager = __decorate([\n injectable(SYMBOLS.EntityManager)\n], EntityManager);\nexport { EntityManager };\n//# sourceMappingURL=EntityManager.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"./symbols\";\n/**\n * The SystemManager is responsible for managing the lifecycle and execution of game systems.\\\n * It provides methods for adding, enabling, disabling and retrieving systems that operate on entities and components.\\\n * Systems are organized into groups to control their execution order and update frequency.\\\n * Acts as the central orchestrator for all game logic and behavior processing.\n * @public\n * @category Entity-Component-System\n */\nlet SystemManager = class SystemManager {\n constructor() {\n this.systems = []; // [system, group, enabled, created]\n }\n /**\n * @param systemType The system class\n * @returns the systen index\n */\n findSystemIndex(systemType) {\n return this.systems.findIndex((system) => system[0] instanceof systemType);\n }\n /**\n * Adds a new system instance linked to a group\n * @param system The system instance\n * @param group The system group\n * @internal\n */\n addSystem(system, group) {\n if (this.systems.some((system) => system[0] instanceof system.constructor)) {\n throw new Error(`SystemManager already has an instance of ${system.constructor.name}.`);\n }\n this.systems.push([system, group, false, false]);\n }\n /**\n * Returns TRUE if it has a system of the given type, otherwise it returns FALSE\n * @param systemType The system class\n * @returns boolean\n * @public\n * @example\n * ```js\n * const hasPlayerSystem = systemManager.hasSystem(PlayerSystem);\n * ```\n */\n hasSystem(systemType) {\n return this.systems.some((system) => system[0] instanceof systemType);\n }\n /**\n * Returns a system instance for the given type\n * @param systemType The system class\n * @returns The system instance\n * @internal\n */\n getSystem(systemType) {\n const index = this.findSystemIndex(systemType);\n return index !== -1 ? this.systems[index][0] : undefined;\n }\n /**\n * Returns TRUE wether the given group has systems\n * @param group The system group\n * @returns boolean\n * @internal\n */\n groupHasSystems(group) {\n return this.systems.filter((system) => system[1] === group).length > 0;\n }\n /**\n * Enables a system by its type.\\\n * The method `onEnabled` of the system will be called. If the system is enabled for the first time, the method `onCreate` will also be called.\n * @param systemType The system class\n * @public\n * @example\n * ```js\n * systemManager.enableSystem(PlayerSystem);\n * ```\n */\n enableSystem(systemType) {\n const index = this.findSystemIndex(systemType);\n if (index === -1 || this.systems[index][2] === true)\n return;\n const system = this.systems[index];\n if (system[3] === false) {\n system[3] = true;\n if (system[0].onCreate)\n system[0].onCreate();\n }\n system[2] = true;\n if (system[0].onEnabled)\n system[0].onEnabled();\n }\n /**\n * Disables a system by its type.\\\n * The method `onDisabled` of the system will be called.\n * @param systemType The system class\n * @public\n * @example\n * ```js\n * systemManager.disableSystem(PlayerSystem);\n * ```\n */\n disableSystem(systemType) {\n const index = this.findSystemIndex(systemType);\n if (index === -1 || this.systems[index][2] === false)\n return;\n const system = this.systems[index];\n system[2] = false;\n if (system[0].onDisabled)\n system[0].onDisabled();\n }\n /**\n * Set the execution priority of a system.\n * @param systemType The system class\n * @param position the priority number\n * @internal\n */\n setExecutionOrder(systemType, position) {\n const index = this.findSystemIndex(systemType);\n if (index === -1)\n throw new Error(`Cannot set execution order because ${systemType.name} is not a system.`);\n this.systems.splice(position, 0, this.systems.splice(index, 1)[0]);\n }\n /**\n * Removes a system by its type.\n * The method `onDestroy` of the system will be called.\n * @param systemType The system class\n * @internal\n */\n removeSystem(systemType) {\n const index = this.findSystemIndex(systemType);\n if (index === -1)\n return;\n const system = this.systems.splice(index, 1)[0][0];\n if (system.onDestroy)\n system.onDestroy();\n }\n /**\n * Disables all systems\n * @internal\n */\n disableAllSystems() {\n this.systems.forEach((system) => {\n if (system[2])\n this.disableSystem(system[0].constructor);\n });\n }\n /**\n * Call the method onUpdate for systems belonging to the given group\n * @param group The system group\n * @internal\n */\n update(group) {\n this.systems\n .filter((system) => system[1] === group && system[2] === true)\n .forEach((system) => system[0].onUpdate());\n }\n};\nSystemManager = __decorate([\n injectable(SYMBOLS.SystemManager)\n], SystemManager);\nexport { SystemManager };\n//# sourceMappingURL=SystemManager.js.map","export var WebGLContextVersion;\n(function (WebGLContextVersion) {\n WebGLContextVersion[\"LegacyWebGL\"] = \"webgl\";\n WebGLContextVersion[\"WebGL2\"] = \"webgl2\";\n})(WebGLContextVersion || (WebGLContextVersion = {}));\nexport class ContextManager {\n constructor(canvas) {\n this.canvas = canvas;\n this.contextVersion = this.getContextVersion();\n if (!this.contextVersion) {\n throw new Error(\"Your browser does not support WebGL.\");\n }\n this.gl = this.canvas.getContext(this.contextVersion);\n }\n getContextVersion() {\n return this.canvas.getContext(WebGLContextVersion.WebGL2) !== null\n ? WebGLContextVersion.WebGL2\n : this.canvas.getContext(WebGLContextVersion.LegacyWebGL) !== null\n ? WebGLContextVersion.LegacyWebGL\n : undefined;\n }\n}\n//# sourceMappingURL=ContextManager.js.map","export class FontAtlasFactory {\n constructor() {\n this.fontAtlas = new Map();\n }\n hasFontAtlas(options) {\n return this.fontAtlas.has(this.getId(options));\n }\n getFontAtlas(options) {\n return this.fontAtlas.get(this.getId(options));\n }\n getOrCreate(options) {\n var _a;\n return (_a = this.getFontAtlas(options)) !== null && _a !== void 0 ? _a : this.create(options);\n }\n create(options) {\n const { font, charRanges, fontSize, spacing } = options;\n this.chars = [];\n for (let i = 0; i < charRanges.length; i = i + 2) {\n for (let j = charRanges[i]; j <= charRanges[i + 1]; j++) {\n this.chars.push(String.fromCharCode(j));\n }\n }\n this.font = font instanceof FontFace ? font.family : font;\n this.fontSize = fontSize;\n this.spacing = spacing;\n this.id = this.getId(options);\n const fontAtlas = this.renderAtlas();\n this.fontAtlas.set(this.id, fontAtlas);\n return fontAtlas;\n }\n getId({ font, charRanges, fontSize, spacing }) {\n return JSON.stringify({\n font: font instanceof FontFace ? font.family : font,\n charRanges,\n fontSize,\n spacing,\n });\n }\n renderAtlas() {\n const fontAtlas = new FontAtlas(this.id, this.fontSize, Math.ceil(Math.sqrt(this.chars.length)), this.spacing);\n const ctx = fontAtlas.canvas.getContext(\"2d\");\n ctx.clearRect(0, 0, fontAtlas.canvas.width, fontAtlas.canvas.height);\n ctx.textBaseline = \"top\";\n ctx.fillStyle = \"#FFFFFF\";\n ctx.font = `${this.fontSize}px ${this.font}`;\n let x = 0;\n let y = 0;\n for (let i = 0; i < this.chars.length; i++) {\n ctx.fillText(this.chars[i], x, y);\n fontAtlas.glyphs.set(this.chars[i], {\n id: i,\n width: ctx.measureText(this.chars[i]).width,\n });\n if ((x += this.fontSize + this.spacing) > fontAtlas.canvas.width - this.fontSize) {\n x = 0;\n y += this.fontSize + this.spacing;\n }\n }\n return fontAtlas;\n }\n}\nexport class FontAtlas {\n constructor(id, fontSize, gridSize, spacing) {\n this.id = id;\n this.fontSize = fontSize;\n this.gridSize = gridSize;\n this.spacing = spacing;\n this.canvas = document.createElement(\"canvas\");\n this.glyphs = new Map();\n this.canvas.width = this.gridSize * (this.fontSize + this.spacing);\n this.canvas.height = this.canvas.width;\n }\n}\n//# sourceMappingURL=FontAtlasFactory.js.map","export class ProgramFactory {\n constructor(gl, shaderLoader) {\n this.gl = gl;\n this.shaderLoader = shaderLoader;\n }\n create(vertexShaderSource, fragmentShaderSource) {\n const program = this.gl.createProgram();\n const vertexShader = this.shaderLoader.load(this.gl.VERTEX_SHADER, vertexShaderSource);\n const fragmentShader = this.shaderLoader.load(this.gl.FRAGMENT_SHADER, fragmentShaderSource);\n this.gl.attachShader(program, vertexShader);\n this.gl.attachShader(program, fragmentShader);\n this.gl.linkProgram(program);\n const status = this.gl.LINK_STATUS;\n if (!this.gl.getProgramParameter(program, status)) {\n const error = this.gl.getProgramInfoLog(program);\n this.gl.deleteProgram(program);\n throw new Error(`Unable to initialize the Program: ${error}`);\n }\n return program;\n }\n}\n//# sourceMappingURL=ProgramFactory.js.map","import { WebGLContextVersion } from \"../ContextManager\";\nimport { fragmentShader } from \"../shader/fragmentShader\";\nimport { legacyFragmentShader } from \"../shader/legacy/fragmentShader\";\nimport { legacyVertexShader } from \"../shader/legacy/vertexShader\";\nimport { vertexShader } from \"../shader/vertexShader\";\nexport class ProgramManager {\n constructor(gl, contextVersion, programFactory) {\n this.gl = gl;\n this.contextVersion = contextVersion;\n this.programFactory = programFactory;\n }\n loadProgram() {\n this.program =\n this.contextVersion === WebGLContextVersion.WebGL2\n ? this.programFactory.create(vertexShader, fragmentShader)\n : this.programFactory.create(legacyVertexShader, legacyFragmentShader);\n this.positionCoordsAttr = this.gl.getAttribLocation(this.program, \"positionCoords\");\n this.texCoordsAttr = this.gl.getAttribLocation(this.program, \"textureCoords\");\n this.modelMatrixUniform = this.gl.getUniformLocation(this.program, \"modelMatrix\");\n this.projectionMatrixUniform = this.gl.getUniformLocation(this.program, \"projectionMatrix\");\n this.textureMatrixUniform = this.gl.getUniformLocation(this.program, \"textureMatrix\");\n this.renderTextureUniform = this.gl.getUniformLocation(this.program, \"u_renderTexture\");\n this.textureUniform = this.gl.getUniformLocation(this.program, \"u_texImage\");\n this.solidColorUniform = this.gl.getUniformLocation(this.program, \"u_solidColor\");\n this.useTintColorUniform = this.gl.getUniformLocation(this.program, \"u_useTintColor\");\n this.tintColorUniform = this.gl.getUniformLocation(this.program, \"u_tintColor\");\n this.useMaskColorUniform = this.gl.getUniformLocation(this.program, \"u_useMaskColor\");\n this.maskColorUniform = this.gl.getUniformLocation(this.program, \"u_maskColor\");\n this.maskColorMixUniform = this.gl.getUniformLocation(this.program, \"u_maskColorMix\");\n this.alphaUniform = this.gl.getUniformLocation(this.program, \"u_alpha\");\n this.renderLightUniform = this.gl.getUniformLocation(this.program, \"u_renderLight\");\n this.numLightsUniform = this.gl.getUniformLocation(this.program, \"u_numLights\");\n this.gl.useProgram(this.program);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n }\n}\n//# sourceMappingURL=ProgramManager.js.map","export const vertexShader = `#version 300 es\n\nin vec4 positionCoords;\nin vec2 textureCoords;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelMatrix;\nuniform mat4 textureMatrix;\n\nout vec2 texCoords;\n\nvoid main()\n{\n gl_Position = projectionMatrix * modelMatrix * positionCoords;\n texCoords = (textureMatrix * vec4(textureCoords, 0, 1)).xy;\n}`;\n//# sourceMappingURL=vertexShader.js.map","export const fragmentShader = `#version 300 es\nprecision highp float;\n\nin vec2 texCoords;\n\n// texture, mask and darkness\nuniform int u_renderTexture;\nuniform sampler2D u_texImage;\nuniform vec4 u_solidColor;\nuniform int u_useTintColor;\nuniform vec4 u_tintColor;\nuniform int u_useMaskColor;\nuniform vec4 u_maskColor;\nuniform float u_maskColorMix;\nuniform float u_alpha;\n\n// light\nstruct Light {\n vec2 position;\n float radius;\n float smoothMode;\n float intensity;\n};\n\nuniform int u_renderLight;\nuniform Light u_lights[64];\nuniform int u_numLights;\n\nout vec4 fragColor;\n\nvoid main()\n{\n if (u_renderTexture == 1) {\n vec4 texColor = texture(u_texImage, texCoords);\n\n if (texColor.a < 0.0001) {\n discard;\n }\n\n if (u_useTintColor == 1) {\n texColor = u_tintColor * texColor;\n }\n\n if (u_useMaskColor == 1) {\n texColor = mix(texColor, u_maskColor, clamp(u_maskColorMix, 0.0, 1.0));\n }\n\n fragColor = vec4(texColor.rgb, u_alpha * texColor.a); \n } else if (u_renderLight == 1) {\n vec2 fragCoord = gl_FragCoord.xy;\n float alpha = u_alpha;\n\n for (int i = 0; i < u_numLights; i++) {\n Light light = u_lights[i];\n float dist = distance(fragCoord, light.position);\n \n if (dist < light.radius) {\n alpha -= (light.smoothMode > 0.0 ? smoothstep(light.radius, 0.0, dist) : 1.0) * light.intensity;\n }\n }\n\n alpha = clamp(alpha, 0.0, u_alpha);\n\n fragColor = vec4(u_solidColor.rgb, alpha);\n } else {\n fragColor = vec4(u_solidColor.rgb, u_alpha);\n }\n}`;\n//# sourceMappingURL=fragmentShader.js.map","export const legacyVertexShader = `precision mediump float;\n\nattribute vec2 positionCoords;\nattribute vec2 textureCoords;\n\nvarying vec2 texCoords;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelMatrix;\nuniform mat4 textureMatrix;\n\nvoid main()\n{\n gl_Position = projectionMatrix * modelMatrix * vec4(positionCoords, 0, 1);\n texCoords = (textureMatrix * vec4(textureCoords, 0, 1)).xy;\n}`;\n//# sourceMappingURL=vertexShader.js.map","export const legacyFragmentShader = `precision mediump float;\n\nvarying vec2 texCoords;\n\n// texture, mask and darkness\nuniform int u_renderTexture;\nuniform sampler2D u_texImage;\nuniform vec4 u_solidColor;\nuniform int u_useTintColor;\nuniform vec4 u_tintColor;\nuniform int u_useMaskColor;\nuniform vec4 u_maskColor;\nuniform float u_maskColorMix;\nuniform float u_alpha;\n\n// light\nstruct Light {\n vec2 position;\n float radius;\n float smoothMode;\n float intensity;\n};\n\nuniform int u_renderLight;\nuniform Light u_lights[64];\nuniform int u_numLights;\n\nvoid main()\n{\n if (u_renderTexture == 1) {\n vec4 texColor = texture2D(u_texImage, texCoords);\n\n if (texColor.a < 0.0001) {\n discard;\n }\n\n if (u_useTintColor == 1) {\n texColor = u_tintColor * texColor;\n }\n\n if (u_useMaskColor == 1) {\n texColor = mix(texColor, u_maskColor, clamp(u_maskColorMix, 0.0, 1.0));\n }\n\n gl_FragColor = vec4(texColor.rgb, u_alpha * texColor.a);\n } else if (u_renderLight == 1) {\n vec2 fragCoord = gl_FragCoord.xy;\n float alpha = u_alpha;\n\n for (int i = 0; i < 64; i++) {\n if (u_lights[i].intensity == 0.0) continue; \n \n Light light = u_lights[i];\n float dist = distance(fragCoord, light.position);\n \n if (dist < light.radius) {\n alpha -= (light.smoothMode > 0.0 ? smoothstep(light.radius, 0.0, dist) : 1.0) * light.intensity;\n }\n }\n\n alpha = clamp(alpha, 0.0, u_alpha);\n\n gl_FragColor = vec4(u_solidColor.rgb, alpha);\n } else {\n gl_FragColor = vec4(u_solidColor.rgb, u_alpha);\n }\n}`;\n//# sourceMappingURL=fragmentShader.js.map","export class ShaderLoader {\n constructor(gl) {\n this.gl = gl;\n }\n load(type, source) {\n const shader = this.gl.createShader(type);\n this.gl.shaderSource(shader, source);\n this.gl.compileShader(shader);\n const status = this.gl.COMPILE_STATUS;\n if (!this.gl.getShaderParameter(shader, status)) {\n const error = this.gl.getShaderInfoLog(shader);\n this.gl.deleteShader(shader);\n throw new Error(`Unable to initialize the shader program: ${error}`);\n }\n return shader;\n }\n}\n//# sourceMappingURL=ShaderLoader.js.map","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import { mat4 } from \"gl-matrix\";\nexport const setProjectionMatrix = (projectionMatrix, gl, cameraZoom, cameraPosition) => {\n projectionMatrix = mat4.identity(projectionMatrix);\n mat4.ortho(projectionMatrix, -gl.canvas.width / 2, gl.canvas.width / 2, -gl.canvas.height / 2, gl.canvas.height / 2, -1, 1);\n mat4.scale(projectionMatrix, projectionMatrix, [cameraZoom !== null && cameraZoom !== void 0 ? cameraZoom : 1, cameraZoom !== null && cameraZoom !== void 0 ? cameraZoom : 1, 1]);\n mat4.translate(projectionMatrix, projectionMatrix, [-cameraPosition.x, -cameraPosition.y, 0]);\n};\nexport const hexToRgba = (hex) => {\n const result = /^#?([a-f\\d]{2})?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[2], 16) / 256,\n g: parseInt(result[3], 16) / 256,\n b: parseInt(result[4], 16) / 256,\n a: result[1] !== undefined ? parseInt(result[1], 16) / 256 : 1,\n }\n : null;\n};\n//# sourceMappingURL=utils.js.map","import { hexToRgba } from \"./utils\";\nexport class CanvasColorRenderer {\n constructor(gl) {\n this.gl = gl;\n }\n render(hexColor) {\n const rgb = hexToRgba(hexColor);\n this.gl.clearColor(rgb.r, rgb.g, rgb.b, rgb.a);\n this.gl.clear(this.gl.COLOR_BUFFER_BIT);\n }\n}\n//# sourceMappingURL=CanvasColorRenderer.js.map","export var RenderDataType;\n(function (RenderDataType) {\n RenderDataType[RenderDataType[\"Sprite\"] = 0] = \"Sprite\";\n RenderDataType[RenderDataType[\"Text\"] = 1] = \"Text\";\n RenderDataType[RenderDataType[\"Tilemap\"] = 2] = \"Tilemap\";\n RenderDataType[RenderDataType[\"Mask\"] = 3] = \"Mask\";\n RenderDataType[RenderDataType[\"Geometric\"] = 4] = \"Geometric\";\n RenderDataType[RenderDataType[\"Video\"] = 5] = \"Video\";\n RenderDataType[RenderDataType[\"Darkness\"] = 6] = \"Darkness\";\n})(RenderDataType || (RenderDataType = {}));\n//# sourceMappingURL=Renderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { RenderDataType } from \"./Renderer\";\nimport { range } from \"@angry-pixel/math\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nconst CIRCUMFERENCE_VERTICES = 60;\nexport var GeometricShape;\n(function (GeometricShape) {\n GeometricShape[GeometricShape[\"Polygon\"] = 0] = \"Polygon\";\n GeometricShape[GeometricShape[\"Circumference\"] = 1] = \"Circumference\";\n GeometricShape[GeometricShape[\"Line\"] = 2] = \"Line\";\n})(GeometricShape || (GeometricShape = {}));\nexport class GeometricRenderer {\n constructor(gl, programManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.circumferencePositionBuffer = this.gl.createBuffer();\n this.linesPositionBuffer = this.gl.createBuffer();\n // circumference position buffer\n const angle = (2 * Math.PI) / CIRCUMFERENCE_VERTICES;\n const vertices = new Float32Array(range(1, CIRCUMFERENCE_VERTICES, 1).reduce((v, i) => [...v, Math.cos(i * angle), Math.sin(i * angle)], []));\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.circumferencePositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, vertices, this.gl.STATIC_DRAW);\n }\n render(renderData, cameraData, lastRender) {\n this.gl.disableVertexAttribArray(this.programManager.texCoordsAttr);\n switch (renderData.shape) {\n case GeometricShape.Polygon:\n this.renderLines(renderData, cameraData, this.gl.LINE_LOOP);\n break;\n case GeometricShape.Line:\n this.renderLines(renderData, cameraData, this.gl.LINES);\n break;\n case GeometricShape.Circumference:\n this.renderCircumference(renderData, cameraData, lastRender);\n break;\n default:\n return false;\n }\n return true;\n }\n renderLines(renderData, cameraData, mode) {\n var _a;\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.linesPositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(renderData.vertexModel.reduce((a, v) => [...a, v.x, v.y], [])), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, 1);\n this.gl.drawArrays(mode, 0, renderData.vertexModel.length);\n this.lastShape = \"polygon\";\n }\n renderCircumference(renderData, cameraData, lastRender) {\n if (lastRender !== RenderDataType.Geometric || this.lastShape !== \"circumference\") {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.circumferencePositionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.scale(this.modelMatrix, this.modelMatrix, [renderData.radius, renderData.radius, 1]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, 1);\n this.gl.drawArrays(this.gl.LINE_LOOP, 0, CIRCUMFERENCE_VERTICES);\n this.lastShape = \"circumference\";\n }\n}\n//# sourceMappingURL=GeometricRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nimport { RenderDataType } from \"./Renderer\";\n/**\n * Mask shape: Rectangle or Circumference.\n * @category Components Configuration\n * @public\n */\nexport var MaskShape;\n(function (MaskShape) {\n MaskShape[MaskShape[\"Rectangle\"] = 0] = \"Rectangle\";\n MaskShape[MaskShape[\"Circumference\"] = 1] = \"Circumference\";\n MaskShape[MaskShape[\"Polygon\"] = 2] = \"Polygon\";\n})(MaskShape || (MaskShape = {}));\nconst CIRCUMFERENCE_VERTICES = 60;\nexport class MaskRenderer {\n constructor(gl, programManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.type = RenderDataType.Mask;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.circumferencePositionBuffer = this.gl.createBuffer();\n this.rectanglePositionBuffer = this.gl.createBuffer();\n this.polygonPositionBuffer = this.gl.createBuffer();\n // circumference position buffer\n const angle = (2 * Math.PI) / CIRCUMFERENCE_VERTICES;\n const vertices = [0, 0];\n for (let i = 0; i <= CIRCUMFERENCE_VERTICES; i++) {\n vertices.push(Math.cos(i * angle), Math.sin(i * angle));\n }\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.circumferencePositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(vertices), this.gl.STATIC_DRAW);\n // rectangle position buffer\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.rectanglePositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([-0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]), this.gl.STATIC_DRAW);\n }\n render(renderData, cameraData, lastRender) {\n this.gl.disableVertexAttribArray(this.programManager.texCoordsAttr);\n if (renderData.shape === MaskShape.Rectangle) {\n this.renderRectangle(renderData, cameraData, lastRender);\n }\n else if (renderData.shape === MaskShape.Circumference) {\n this.renderCircumference(renderData, cameraData, lastRender);\n }\n else if (renderData.shape === MaskShape.Polygon) {\n this.renderPolygon(renderData, cameraData, lastRender);\n }\n this.lastShape = renderData.shape;\n return true;\n }\n renderRectangle(renderData, cameraData, lastRender) {\n var _a, _b;\n if (lastRender !== RenderDataType.Mask || this.lastShape !== MaskShape.Rectangle) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.rectanglePositionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [renderData.width, renderData.height, 1]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n if (renderData.opacity >= 0 && renderData.opacity < 1) {\n this.gl.enable(this.gl.BLEND);\n }\n else {\n this.gl.disable(this.gl.BLEND);\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);\n }\n renderCircumference(renderData, cameraData, lastRender) {\n var _a, _b;\n if (lastRender !== RenderDataType.Mask || this.lastShape !== MaskShape.Circumference) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.circumferencePositionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [renderData.radius, renderData.radius, 1]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n if (renderData.opacity >= 0 && renderData.opacity < 1) {\n this.gl.enable(this.gl.BLEND);\n }\n else {\n this.gl.disable(this.gl.BLEND);\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.drawArrays(this.gl.TRIANGLE_FAN, 0, CIRCUMFERENCE_VERTICES + 2);\n }\n renderPolygon(renderData, cameraData, lastRender) {\n var _a, _b;\n if (lastRender !== RenderDataType.Mask || this.lastShape !== MaskShape.Polygon) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.polygonPositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(renderData.vertices.reduce((a, v) => [...a, v.x, v.y], [0, 0])), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n if (renderData.opacity >= 0 && renderData.opacity < 1) {\n this.gl.enable(this.gl.BLEND);\n }\n else {\n this.gl.disable(this.gl.BLEND);\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.drawArrays(this.gl.TRIANGLE_FAN, 0, renderData.vertices.length + 1);\n }\n}\n//# sourceMappingURL=MaskRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { RenderDataType } from \"./Renderer\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nexport class DarknessRenderer {\n constructor(gl, programManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([-0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]), this.gl.STATIC_DRAW);\n }\n render(renderData, cameraData, lastRender) {\n var _a, _b;\n if (lastRender !== RenderDataType.Darkness) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.disableVertexAttribArray(this.programManager.texCoordsAttr);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [renderData.width, renderData.height, 1]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n this.gl.uniform1i(this.programManager.renderLightUniform, 1);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.uniform1i(this.programManager.numLightsUniform, renderData.lights.length);\n for (const [i, light] of renderData.lights.entries()) {\n if (i >= 64)\n break; // 64 is the max lights allowed\n this.gl.uniform2f(this.gl.getUniformLocation(this.programManager.program, `u_lights[${i}].position`), this.gl.canvas.width / 2 + (light.position.x - cameraData.position.x) * cameraData.zoom, this.gl.canvas.height / 2 + (light.position.y - cameraData.position.y) * cameraData.zoom);\n this.gl.uniform1f(this.gl.getUniformLocation(this.programManager.program, `u_lights[${i}].radius`), light.radius * cameraData.zoom);\n this.gl.uniform1f(this.gl.getUniformLocation(this.programManager.program, `u_lights[${i}].smoothMode`), light.smooth ? 1 : 0);\n this.gl.uniform1f(this.gl.getUniformLocation(this.programManager.program, `u_lights[${i}].intensity`), Math.max(0, Math.min(1, light.intensity)));\n }\n this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);\n this.gl.uniform1i(this.programManager.renderLightUniform, 0);\n return true;\n }\n}\n//# sourceMappingURL=DarknessRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nimport { RenderDataType } from \"./Renderer\";\nexport class SpriteRenderer {\n constructor(gl, programManager, textureManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.textureManager = textureManager;\n this.tiledPosVertices = new Map();\n this.tiledTexVertices = new Map();\n this.lastTexture = null;\n this.isTiled = false;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.textureBuffer = this.gl.createBuffer();\n this.tiledPositionBuffer = this.gl.createBuffer();\n this.tiledTextureBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([-0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]), this.gl.STATIC_DRAW);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0]), this.gl.STATIC_DRAW);\n this.lastDrawMode = \"sprite\";\n }\n render(renderData, cameraData, lastRender) {\n var _a, _b, _c, _d;\n this.isTiled = renderData.tiled && (renderData.tiled.x > 1 || renderData.tiled.y > 1);\n if (!this.isTiled && (lastRender !== RenderDataType.Sprite || this.lastDrawMode !== \"sprite\")) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n else if (this.isTiled) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.tiledPositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, this.getTiledPositionVertices(renderData.tiled), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.tiledTextureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, this.getTiledTextureVertices(renderData.tiled), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.lastDrawMode = this.isTiled ? \"tiled\" : \"sprite\";\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [\n renderData.width * (renderData.flipHorizontally ? -1 : 1),\n renderData.height * (renderData.flipVertically ? -1 : 1),\n 1,\n ]);\n this.textureMatrix = mat4.identity(this.textureMatrix);\n if (renderData.slice) {\n mat4.translate(this.textureMatrix, this.textureMatrix, [\n renderData.slice.x / renderData.image.naturalWidth,\n renderData.slice.y / renderData.image.naturalHeight,\n 0,\n ]);\n mat4.scale(this.textureMatrix, this.textureMatrix, [\n renderData.slice.width / renderData.image.naturalWidth,\n renderData.slice.height / renderData.image.naturalHeight,\n 1,\n ]);\n }\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n const texture = this.textureManager.getOrCreateTextureFromImage(renderData.image, renderData.smooth);\n if (this.lastTexture !== texture || lastRender !== renderData.type) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.uniform1i(this.programManager.textureUniform, 0);\n this.lastTexture = texture;\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 1);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.uniform1i(this.programManager.useTintColorUniform, renderData.tintColor ? 1 : 0);\n if (renderData.tintColor) {\n const { r, g, b, a } = hexToRgba(renderData.tintColor);\n this.gl.uniform4f(this.programManager.tintColorUniform, r, g, b, a);\n }\n this.gl.uniform1i(this.programManager.useMaskColorUniform, renderData.maskColor ? 1 : 0);\n if (renderData.maskColor) {\n const { r, g, b } = hexToRgba(renderData.maskColor);\n this.gl.uniform4f(this.programManager.maskColorUniform, r, g, b, (_c = renderData.opacity) !== null && _c !== void 0 ? _c : 1);\n this.gl.uniform1f(this.programManager.maskColorMixUniform, (_d = renderData.maskColorMix) !== null && _d !== void 0 ? _d : 1);\n }\n if (this.isTiled) {\n this.gl.drawArrays(this.gl.TRIANGLES, 0, renderData.tiled.x * renderData.tiled.y * 6);\n }\n else {\n this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);\n }\n return true;\n }\n getTiledPositionVertices(tiled) {\n const key = tiled.toString();\n if (!this.tiledPosVertices.has(key)) {\n const vertices = [];\n for (let x = -tiled.x / 2; x < tiled.x / 2; x++) {\n for (let y = -tiled.y / 2; y < tiled.y / 2; y++) {\n vertices.push(x, y, x, y + 1, x + 1, y, x + 1, y, x, y + 1, x + 1, y + 1);\n }\n }\n this.tiledPosVertices.set(key, new Float32Array(vertices));\n }\n return this.tiledPosVertices.get(key);\n }\n getTiledTextureVertices(tiled) {\n const key = tiled.toString();\n if (!this.tiledTexVertices.has(key)) {\n const vertices = [];\n for (let i = 0; i < tiled.x * tiled.y; i++) {\n vertices.push(0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0);\n }\n this.tiledTexVertices.set(key, new Float32Array(vertices));\n }\n return this.tiledTexVertices.get(key);\n }\n}\n//# sourceMappingURL=SpriteRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { Vector2 } from \"@angry-pixel/math\";\nimport { RenderDataType } from \"./Renderer\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\n/**\n * Alignment of the text.\n * @category Components Configuration\n * @public\n */\nexport var TextAlignment;\n(function (TextAlignment) {\n TextAlignment[TextAlignment[\"Center\"] = 0] = \"Center\";\n TextAlignment[TextAlignment[\"Right\"] = 1] = \"Right\";\n TextAlignment[TextAlignment[\"Left\"] = 2] = \"Left\";\n})(TextAlignment || (TextAlignment = {}));\nexport class TextRenderer {\n constructor(gl, programManager, textureManager, fontAtlasFactory) {\n this.gl = gl;\n this.programManager = programManager;\n this.textureManager = textureManager;\n this.fontAtlasFactory = fontAtlasFactory;\n this.type = RenderDataType.Text;\n this.posVertices = [];\n this.texVertices = [];\n // cache\n this.lastTexture = null;\n this.shadowPosition = new Vector2();\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.textureBuffer = this.gl.createBuffer();\n }\n render(renderData, cameraData, lastRender, shadow = false) {\n var _a;\n if (!renderData.text)\n return false;\n const fontAtlas = this.fontAtlasFactory.getOrCreate(Object.assign({ font: renderData.font }, renderData.textureAtlas));\n // If we are render the shadow text, we dont need to recalculate the vertices or re-enable buffers\n if (!shadow) {\n this.generateTextVertices(fontAtlas, renderData);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.posVertices), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.texVertices), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n if (renderData.shadow) {\n const { color, offset, opacity } = renderData.shadow;\n const shadowRenderData = Object.assign(Object.assign({}, renderData), { color,\n opacity, position: Vector2.add(this.shadowPosition, renderData.position, offset) });\n shadowRenderData.shadow = undefined;\n this.render(shadowRenderData, cameraData, lastRender, true);\n lastRender = RenderDataType.Text;\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [\n renderData.fontSize * (renderData.flipHorizontally ? -1 : 1),\n renderData.fontSize * (renderData.flipVertically ? -1 : 1),\n 1,\n ]);\n this.textureMatrix = mat4.identity(this.textureMatrix);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n const texture = this.textureManager.getOrCreateTextureFromCanvas(fontAtlas.id, fontAtlas.canvas, renderData.smooth);\n if (this.lastTexture !== texture || lastRender !== RenderDataType.Text) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.uniform1i(this.programManager.textureUniform, 0);\n this.lastTexture = texture;\n }\n this.gl.uniform1i(this.programManager.useMaskColorUniform, 0);\n this.gl.uniform1i(this.programManager.renderTextureUniform, 1);\n this.gl.uniform1f(this.programManager.alphaUniform, renderData.opacity);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform1i(this.programManager.useTintColorUniform, 1);\n this.gl.uniform4f(this.programManager.tintColorUniform, r, g, b, a);\n this.gl.drawArrays(this.gl.TRIANGLES, 0, this.posVertices.length / 2);\n return true;\n }\n generateTextVertices(fontAtlas, renderData) {\n this.posVertices = [];\n this.texVertices = [];\n // TODO: cache this\n const processedText = this.preProcessText(fontAtlas, renderData);\n const letterSpacing = renderData.letterSpacing / renderData.fontSize;\n const lineHeight = renderData.lineHeight / renderData.fontSize;\n const height = renderData.boundingBox.height / renderData.fontSize;\n const width = renderData.boundingBox.width / renderData.fontSize;\n let y = height / 2;\n for (const line of processedText) {\n const { text, width: lineWidth } = line;\n let x = renderData.alignment === TextAlignment.Center\n ? -lineWidth / 2\n : renderData.alignment === TextAlignment.Left\n ? -width / 2\n : width / 2 - lineWidth;\n for (const letter of text) {\n const glyph = fontAtlas.glyphs.get(letter);\n if (glyph) {\n const letterWidth = glyph.width / fontAtlas.fontSize;\n // prettier-ignore\n this.posVertices.push(x, y - 1, x + letterWidth, y - 1, x, y, x, y, x + letterWidth, y - 1, x + letterWidth, y);\n const gx = (glyph.id % fontAtlas.gridSize) * (fontAtlas.fontSize + fontAtlas.spacing);\n const gy = ((glyph.id / fontAtlas.gridSize) | 0) * (fontAtlas.fontSize + fontAtlas.spacing);\n const u1 = gx / fontAtlas.canvas.width;\n const v1 = gy / fontAtlas.canvas.height;\n const u2 = (gx + glyph.width) / fontAtlas.canvas.width;\n const v2 = (gy + fontAtlas.fontSize) / fontAtlas.canvas.height;\n // prettier-ignore\n this.texVertices.push(u1, v2, u2, v2, u1, v1, u1, v1, u2, v2, u2, v1);\n x += letterWidth + letterSpacing;\n }\n }\n x = -width / 2;\n y -= lineHeight;\n }\n }\n preProcessText(fontAtlas, { text, fontSize, letterSpacing, lineHeight, boundingBox: { width, height } }) {\n const result = [];\n // Normalize\n letterSpacing /= fontSize;\n lineHeight /= fontSize;\n width /= fontSize;\n height /= fontSize;\n const spaceWidth = fontAtlas.glyphs.get(\" \").width / fontAtlas.fontSize + letterSpacing;\n let currentHeight = 0;\n const lines = text.split(\"\\n\");\n for (const line of lines) {\n let newLine = [];\n let lineWidth = 0;\n currentHeight += lineHeight;\n const words = line.split(\" \");\n for (const word of words) {\n if (currentHeight > height)\n return result;\n const firstWord = newLine.length === 0;\n let wordWidth = 0;\n for (const letter of word) {\n const glyph = fontAtlas.glyphs.get(letter);\n if (glyph)\n wordWidth += glyph.width / fontAtlas.fontSize + letterSpacing;\n }\n wordWidth -= letterSpacing;\n if (!firstWord)\n wordWidth += spaceWidth;\n if (firstWord && wordWidth >= width) {\n result.push({ width: wordWidth, text: word });\n currentHeight += lineHeight;\n }\n else if (lineWidth + wordWidth === width) {\n newLine.push(word);\n result.push({ width: lineWidth + wordWidth, text: newLine.join(\" \") });\n newLine = [];\n lineWidth = 0;\n currentHeight += lineHeight;\n }\n else if (lineWidth + wordWidth > width) {\n result.push({ width: lineWidth, text: newLine.join(\" \") });\n newLine = [word];\n lineWidth = wordWidth - spaceWidth;\n currentHeight += lineHeight;\n }\n else {\n lineWidth += wordWidth;\n newLine.push(word);\n }\n }\n if (newLine.length > 0) {\n result.push({ width: lineWidth, text: newLine.join(\" \") });\n }\n }\n return result;\n }\n}\n//# sourceMappingURL=TextRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { Vector2 } from \"@angry-pixel/math\";\nimport { RenderDataType } from \"./Renderer\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\n/**\n * Direction in which the tilemap will be rendered.\n * @internal\n */\nexport var TilemapOrientation;\n(function (TilemapOrientation) {\n TilemapOrientation[TilemapOrientation[\"Center\"] = 0] = \"Center\";\n TilemapOrientation[TilemapOrientation[\"RightUp\"] = 1] = \"RightUp\";\n TilemapOrientation[TilemapOrientation[\"RightDown\"] = 2] = \"RightDown\";\n TilemapOrientation[TilemapOrientation[\"RightCenter\"] = 3] = \"RightCenter\";\n})(TilemapOrientation || (TilemapOrientation = {}));\nexport class TilemapRenderer {\n constructor(gl, programManager, textureManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.textureManager = textureManager;\n this.posVertices = [];\n this.texVertices = [];\n // cache\n this.lastTexture = null;\n this.tileset = {\n width: 0,\n tileWidth: 0,\n tileHeight: 0,\n texMargin: new Vector2(),\n texSpacing: new Vector2(),\n texWidth: 0,\n texHeight: 0,\n texCorrection: new Vector2(),\n };\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.textureBuffer = this.gl.createBuffer();\n }\n render(renderData, cameraData, lastRender) {\n var _a, _b, _c, _d;\n if (renderData.tiles.reduce((acc, tile) => acc + tile, 0) === 0)\n return false;\n this.processTileset(renderData);\n this.generateVertices(renderData);\n if (this.posVertices.length === 0)\n return false;\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.posVertices), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.texVertices), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [\n renderData.tilemap.tileWidth * (renderData.flipHorizontal ? -1 : 1),\n renderData.tilemap.tileHeight * (renderData.flipVertical ? -1 : 1),\n 1,\n ]);\n this.textureMatrix = mat4.identity(this.textureMatrix);\n mat4.scale(this.textureMatrix, this.textureMatrix, [\n this.tileset.tileWidth / renderData.tileset.image.naturalWidth,\n this.tileset.tileHeight / renderData.tileset.image.naturalHeight,\n 1,\n ]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n const texture = this.textureManager.getOrCreateTextureFromImage(renderData.tileset.image, renderData.smooth);\n if (this.lastTexture !== texture || lastRender !== RenderDataType.Tilemap) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.uniform1i(this.programManager.textureUniform, 0);\n this.lastTexture = texture;\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 1);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.uniform1i(this.programManager.useTintColorUniform, renderData.tintColor ? 1 : 0);\n if (renderData.tintColor) {\n const { r, g, b, a } = hexToRgba(renderData.tintColor);\n this.gl.uniform4f(this.programManager.tintColorUniform, r, g, b, a);\n }\n this.gl.uniform1i(this.programManager.useMaskColorUniform, renderData.maskColor ? 1 : 0);\n if (renderData.maskColor) {\n const { r, g, b } = hexToRgba(renderData.maskColor);\n this.gl.uniform4f(this.programManager.maskColorUniform, r, g, b, (_c = renderData.opacity) !== null && _c !== void 0 ? _c : 1);\n this.gl.uniform1f(this.programManager.maskColorMixUniform, (_d = renderData.maskColorMix) !== null && _d !== void 0 ? _d : 1);\n }\n this.gl.drawArrays(this.gl.TRIANGLES, 0, this.posVertices.length / 2);\n return true;\n }\n processTileset({ tileset }) {\n var _a, _b, _c, _d, _e, _f, _g;\n tileset.margin = (_a = tileset.margin) !== null && _a !== void 0 ? _a : new Vector2();\n tileset.spacing = (_b = tileset.spacing) !== null && _b !== void 0 ? _b : new Vector2();\n tileset.correction = (_c = tileset.correction) !== null && _c !== void 0 ? _c : new Vector2();\n this.tileset.width = tileset.width;\n this.tileset.tileWidth = tileset.tileWidth + ((_d = tileset.margin.x) !== null && _d !== void 0 ? _d : 0) + ((_e = tileset.spacing.x) !== null && _e !== void 0 ? _e : 0);\n this.tileset.tileHeight = tileset.tileHeight + ((_f = tileset.margin.y) !== null && _f !== void 0 ? _f : 0) + ((_g = tileset.spacing.y) !== null && _g !== void 0 ? _g : 0);\n this.tileset.texMargin.set(tileset.margin.x / this.tileset.tileWidth, tileset.margin.y / this.tileset.tileHeight);\n this.tileset.texSpacing.set(tileset.spacing.x / this.tileset.tileWidth, tileset.spacing.y / this.tileset.tileHeight);\n this.tileset.texCorrection.set(tileset.correction.x / this.tileset.tileWidth, tileset.correction.y / this.tileset.tileHeight);\n this.tileset.texWidth =\n 1 - this.tileset.texMargin.x - this.tileset.texSpacing.x - 2 * this.tileset.texCorrection.x;\n this.tileset.texHeight =\n 1 - this.tileset.texMargin.y - this.tileset.texSpacing.y - 2 * this.tileset.texCorrection.y;\n }\n generateVertices({ tiles, tilemap }) {\n this.posVertices = [];\n this.texVertices = [];\n const height = Math.floor(tiles.length / tilemap.width);\n tiles.forEach((tilesetTile, tilemapTile) => {\n if (tilesetTile === 0)\n return;\n const px = (tilemapTile % tilemap.width) - tilemap.width / 2;\n const py = height / 2 - Math.floor(tilemapTile / tilemap.width);\n // prettier-ignore\n this.posVertices.push(px, py - 1, px + 1, py - 1, px, py, px, py, px + 1, py - 1, px + 1, py);\n const tx = ((tilesetTile - 1) % this.tileset.width) + this.tileset.texMargin.x + this.tileset.texCorrection.x;\n const ty = Math.floor((tilesetTile - 1) / this.tileset.width) +\n this.tileset.texMargin.y +\n this.tileset.texCorrection.y;\n // prettier-ignore\n this.texVertices.push(tx, ty + this.tileset.texHeight, tx + this.tileset.texWidth, ty + this.tileset.texHeight, tx, ty, tx, ty, tx + this.tileset.texWidth, ty + this.tileset.texHeight, tx + this.tileset.texWidth, ty);\n });\n }\n}\n//# sourceMappingURL=TilemapRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { RenderDataType } from \"./Renderer\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nexport class VideoRenderer {\n constructor(gl, programManager, textureManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.textureManager = textureManager;\n this.lastTexture = null;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.textureBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([-0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]), this.gl.STATIC_DRAW);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0]), this.gl.STATIC_DRAW);\n }\n render(renderData, cameraData, lastRender) {\n var _a, _b, _c, _d;\n if (lastRender !== RenderDataType.Video) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [\n renderData.width * (renderData.flipHorizontal ? -1 : 1),\n renderData.height * (renderData.flipVertical ? -1 : 1),\n 1,\n ]);\n this.textureMatrix = mat4.identity(this.textureMatrix);\n if (renderData.slice) {\n mat4.translate(this.textureMatrix, this.textureMatrix, [\n renderData.slice.x / renderData.video.videoWidth,\n renderData.slice.y / renderData.video.videoHeight,\n 0,\n ]);\n mat4.scale(this.textureMatrix, this.textureMatrix, [\n renderData.slice.width / renderData.video.videoWidth,\n renderData.slice.height / renderData.video.videoHeight,\n 1,\n ]);\n }\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n const texture = this.textureManager.getOrCreateTextureFromVideo(renderData.video);\n if (this.lastTexture !== texture || lastRender !== RenderDataType.Video) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.uniform1i(this.programManager.textureUniform, 0);\n this.lastTexture = texture;\n }\n if (renderData.video.readyState >= HTMLMediaElement.HAVE_CURRENT_DATA) {\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, renderData.video);\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 1);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.uniform1i(this.programManager.useTintColorUniform, renderData.tintColor ? 1 : 0);\n if (renderData.tintColor) {\n const { r, g, b, a } = hexToRgba(renderData.tintColor);\n this.gl.uniform4f(this.programManager.tintColorUniform, r, g, b, a);\n }\n this.gl.uniform1i(this.programManager.useMaskColorUniform, renderData.maskColor ? 1 : 0);\n if (renderData.maskColor) {\n const { r, g, b } = hexToRgba(renderData.maskColor);\n this.gl.uniform4f(this.programManager.maskColorUniform, r, g, b, (_c = renderData.opacity) !== null && _c !== void 0 ? _c : 1);\n this.gl.uniform1f(this.programManager.maskColorMixUniform, (_d = renderData.maskColorMix) !== null && _d !== void 0 ? _d : 1);\n }\n this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);\n return true;\n }\n}\n//# sourceMappingURL=VideoRenderer.js.map","export class TextureFactory {\n constructor(gl) {\n this.gl = gl;\n }\n createFromImage(image, smooth = false, texture = null) {\n texture = texture !== null && texture !== void 0 ? texture : this.gl.createTexture();\n if (image.naturalWidth) {\n this.createFromSource(image, texture, smooth);\n }\n else {\n image.addEventListener(\"load\", () => this.createFromSource(image, texture, smooth));\n }\n return texture;\n }\n createFromCanvas(canvas, smooth = false, texture = null) {\n texture = texture !== null && texture !== void 0 ? texture : this.gl.createTexture();\n this.createFromSource(canvas, texture, smooth);\n return texture;\n }\n createPixelTexture() {\n const texture = this.gl.createTexture();\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, 1, 1, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, new Uint8Array([0, 0, 0, 255]));\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.bindTexture(this.gl.TEXTURE_2D, null);\n return texture;\n }\n createFromSource(source, texture, smooth = false) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, source);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);\n // LINEAR === smooth pixels, NEAREST === crisp pixels,\n if (smooth) {\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n }\n else {\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);\n }\n this.gl.bindTexture(this.gl.TEXTURE_2D, null);\n }\n}\n//# sourceMappingURL=TextureFactory.js.map","const textureId = (name, smooth) => `${smooth ? \"_smooth_\" : \"\"}${name}`;\nexport class TextureManager {\n constructor(textureFactory) {\n this.textureFactory = textureFactory;\n this.textures = new Map();\n }\n getOrCreateTextureFromImage(image, smooth = false) {\n var _a;\n return (_a = this.textures.get(textureId(image.src, smooth))) !== null && _a !== void 0 ? _a : this.createTextureFromImage(image, smooth);\n }\n createTextureFromImage(image, smooth = false) {\n const texture = this.textureFactory.createFromImage(image, smooth);\n this.textures.set(textureId(image.src, smooth), texture);\n return texture;\n }\n getOrCreateTextureFromCanvas(name, canvas, smooth = false) {\n var _a;\n return (_a = this.textures.get(textureId(name, smooth))) !== null && _a !== void 0 ? _a : this.createTextureFromCanvas(name, canvas, smooth);\n }\n createTextureFromCanvas(name, canvas, smooth = false) {\n const texture = this.textureFactory.createFromCanvas(canvas, smooth);\n this.textures.set(textureId(name, smooth), texture);\n return texture;\n }\n getOrCreateTextureFromVideo(video) {\n var _a;\n return (_a = this.textures.get(video.src)) !== null && _a !== void 0 ? _a : this.createTextureFromVideo(video);\n }\n createTextureFromVideo(video) {\n const texture = this.textureFactory.createPixelTexture();\n this.textures.set(video.src, texture);\n return texture;\n }\n}\n//# sourceMappingURL=TextureManager.js.map","export const SYMBOLS = {\n CanvasElement: Symbol.for(\"CanvasElement\"),\n WebGLManager: Symbol.for(\"WebGLManager\"),\n};\n//# sourceMappingURL=symbols.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { inject, injectable } from \"@angry-pixel/ioc\";\nimport { ContextManager } from \"./ContextManager\";\nimport { FontAtlasFactory } from \"./FontAtlasFactory\";\nimport { ProgramFactory } from \"./program/ProgramFactory\";\nimport { ProgramManager } from \"./program/ProgramManager\";\nimport { ShaderLoader } from \"./program/ShaderLoader\";\nimport { CanvasColorRenderer } from \"./renderer/CanvasColorRenderer\";\nimport { GeometricRenderer } from \"./renderer/GeometricRenderer\";\nimport { MaskRenderer } from \"./renderer/MaskRenderer\";\nimport { RenderDataType } from \"./renderer/Renderer\";\nimport { DarknessRenderer } from \"./renderer/DarknessRenderer\";\nimport { SpriteRenderer } from \"./renderer/SpriteRenderer\";\nimport { TextRenderer } from \"./renderer/TextRenderer\";\nimport { TilemapRenderer } from \"./renderer/TilemapRenderer\";\nimport { VideoRenderer } from \"./renderer/VideoRenderer\";\nimport { TextureFactory } from \"./texture/TextureFactory\";\nimport { TextureManager } from \"./texture/TextureManager\";\nimport { SYMBOLS } from \"./symbols\";\nlet WebGLManager = class WebGLManager {\n constructor(canvas) {\n this.renderers = new Map();\n const contextManager = new ContextManager(canvas);\n const gl = contextManager.gl;\n const contextVersion = contextManager.contextVersion;\n const programManager = new ProgramManager(gl, contextVersion, new ProgramFactory(gl, new ShaderLoader(gl)));\n const textureManager = new TextureManager(new TextureFactory(gl));\n const fontFactoryAtlas = new FontAtlasFactory();\n this.renderers.set(RenderDataType.Sprite, new SpriteRenderer(gl, programManager, textureManager));\n this.renderers.set(RenderDataType.Text, new TextRenderer(gl, programManager, textureManager, fontFactoryAtlas));\n this.renderers.set(RenderDataType.Tilemap, new TilemapRenderer(gl, programManager, textureManager));\n this.renderers.set(RenderDataType.Geometric, new GeometricRenderer(gl, programManager));\n this.renderers.set(RenderDataType.Mask, new MaskRenderer(gl, programManager));\n this.renderers.set(RenderDataType.Video, new VideoRenderer(gl, programManager, textureManager));\n this.renderers.set(RenderDataType.Darkness, new DarknessRenderer(gl, programManager));\n this.canvasColorRenderer = new CanvasColorRenderer(gl);\n programManager.loadProgram();\n }\n render(renderData, cameraData) {\n if (this.renderers.get(renderData.type).render(renderData, cameraData, this.lastRender)) {\n this.lastRender = renderData.type;\n }\n }\n renderCanvasColor(hexColor) {\n this.canvasColorRenderer.render(hexColor);\n }\n};\nWebGLManager = __decorate([\n injectable(SYMBOLS.WebGLManager),\n __param(0, inject(SYMBOLS.CanvasElement))\n], WebGLManager);\nexport { WebGLManager };\n//# sourceMappingURL=WebGLManager.js.map",null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["BroadPhaseMethods","Vector2","constructor","x","y","this","_x","_y","magnitude","Math","sqrt","pow","direction","_direction","unit","set","copy","vector","equals","clone","distance","add","out","a","b","subtract","lenSq","inv","normal","scale","scalar","dot","cross","round","floor","ceil","toString","Rectangle","width","height","_position","_center","value","x1","y1","position","center","rectangle","rect","intersects","contains","object","clamp","min","max","fixedRound","decimals","range","start","end","steps","i","push","between","Container","instances","Map","types","type","name","prototype","__ioc_injectable","Error","dependency","get","_a","_b","has","instance","__ioc_inject_constructor","map","inject","__ioc_inject_prop","forEach","prop","injectable","target","propertyKey","parameterIndex","undefined","SYMBOLS","CollisionRepository","Symbol","for","CollisionBroadphaseResolver","CollisionResolutionMethod","CollisionAABBResolver","CollisionCircumferenceAABBResolver","CollisionCircumferenceResolver","CollisionSatResolver","CollisionMatrix","QuadTree_1","__decorate","decorators","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","QuadTree","bounds","depth","rects","children","seenGen","retrieveSerial","minArea","maxArea","update","shapes","clear","resize","ensureSeenCapacity","id","boundingBox","insert","shapeCount","fill","child","Infinity","box","size","subdivide","halfWidth","halfHeight","retrieve","neighbors","retrieveFromNode","result","serial","cell","subdivisions","SpartialGrid","area","grid","lastAreaX","NaN","lastAreaY","lastAreaW","lastAreaH","lastSubdivisions","retrieveResult","coordinates","x0","y0","clearGridCells","ax","ay","aw","ah","newSubdivisions","cellWidth","cellHeight","buildGrid","updateCoordinates","cellIds","len","Polygon","vertexModel","_vertexModel","vertices","projectionAxes","rotation","collider","entity","ignoreCollisionsWithLayers","layer","radius","updateCollisions","Circumference","__param","paramIndex","decorator","AABBMethod","AABBResolver","circumferenceAABBResolver","circumferenceResolver","findCollision","shapeA","shapeB","resolve","CollisionMethods","SatMethod","satResolver","resolutionDirection","outDirection","boxA","boxB","overlapX","overlapY","checkOverlapForLines","sign","preventContainment","minOverlap","penetration","abs","minSep","maxSep","CircumferenceAABBResolver","closestPoint","invert","CircumferenceResolver","rSum","SatResolver","mergedAxes","projA","projB","smallestAxis","cache","setCircumferenceAxis","mergeProjectionAxes","axis","setCircumferenceVertices","projectShapeOntoAxis","currentOverlap","invertAxis","mins","maxs","bx","j","pb","duplicate","k","projection","shape","verts","s","bestLenSq","collisions","findCollisionsForCollider","filter","localCollider","findCollisionsForColliderAndLayer","remoteCollider","findAll","persist","collision","removeAll","deepClone","Node","FontFace","Date","getTime","Array","item","v","Set","proto","getPrototypeOf","create","keys","EntityManager","SystemManager","lastEntityId","lastComponentTypeId","entities","components","disabledEntities","manuallyDisabledEntities","disabledComponents","parentEntities","childEntities","createEntity","parent","component","addComponent","setParent","createEntityFromArchetype","enabled","createComponentsFromArchetype","disableEntity","disableComponent","removeEntity","getChildren","row","delete","getParent","removeAllEntities","preserveComponentType","search","entitiesToPreserve","isEntity","isEntityEnabled","enableEntity","disableEntitiesByComponent","componentType","getComponentTypeId","enableEntitiesByComponent","oldParent","from","removeParent","removeChild","componentName","hasComponent","getComponent","getComponents","entityComponent","e","updateComponentData","updateCallback","getEntityForComponent","removeComponent","arg1","arg2","isComponentEnabled","enableComponent","getComponentFromParent","current","includeDisabled","searchEntitiesByComponents","componentTypes","first","toCompare","splice","searchInChildren","includes","__ecs_type_id","Number","performance","now","toFixed","WebGLContextVersion","systems","findSystemIndex","systemType","findIndex","system","addSystem","group","some","hasSystem","getSystem","index","groupHasSystems","enableSystem","onCreate","onEnabled","disableSystem","onDisabled","setExecutionOrder","removeSystem","onDestroy","disableAllSystems","onUpdate","ContextManager","canvas","contextVersion","getContextVersion","gl","getContext","WebGL2","LegacyWebGL","FontAtlasFactory","fontAtlas","hasFontAtlas","options","getId","getFontAtlas","getOrCreate","font","charRanges","fontSize","spacing","chars","String","fromCharCode","family","renderAtlas","JSON","stringify","FontAtlas","ctx","clearRect","textBaseline","fillStyle","fillText","glyphs","measureText","gridSize","document","createElement","ProgramFactory","shaderLoader","vertexShaderSource","fragmentShaderSource","program","createProgram","vertexShader","load","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","attachShader","linkProgram","status","LINK_STATUS","getProgramParameter","error","getProgramInfoLog","deleteProgram","ProgramManager","programFactory","loadProgram","positionCoordsAttr","getAttribLocation","texCoordsAttr","modelMatrixUniform","getUniformLocation","projectionMatrixUniform","textureMatrixUniform","renderTextureUniform","textureUniform","solidColorUniform","useTintColorUniform","tintColorUniform","useMaskColorUniform","maskColorUniform","maskColorMixUniform","alphaUniform","renderLightUniform","numLightsUniform","useProgram","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","ShaderLoader","source","shader","createShader","shaderSource","compileShader","COMPILE_STATUS","getShaderParameter","getShaderInfoLog","deleteShader","ARRAY_TYPE","Float32Array","glMatrix.ARRAY_TYPE","identity","translate","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","z","rotateZ","rad","sin","cos","hypot","ortho","left","right","bottom","top","near","far","lr","bt","nf","setProjectionMatrix","projectionMatrix","cameraZoom","cameraPosition","mat4.identity","mat4.ortho","mat4.scale","mat4.translate","hexToRgba","hex","exec","parseInt","g","CanvasColorRenderer","render","hexColor","rgb","clearColor","COLOR_BUFFER_BIT","RenderDataType","GeometricShape","GeometricRenderer$1","programManager","mat4.create","modelMatrix","textureMatrix","circumferencePositionBuffer","createBuffer","linesPositionBuffer","angle","PI","reduce","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","renderData","cameraData","lastRender","disableVertexAttribArray","renderLines","LINE_LOOP","Line","LINES","renderCircumference","mode","DYNAMIC_DRAW","enableVertexAttribArray","vertexAttribPointer","FLOAT","mat4.rotateZ","zoom","uniformMatrix4fv","uniform1i","color","uniform4f","uniform1f","drawArrays","lastShape","Geometric","MaskShape","MaskRenderer$1","Mask","rectanglePositionBuffer","polygonPositionBuffer","renderRectangle","renderPolygon","opacity","enable","BLEND","disable","TRIANGLES","TRIANGLE_FAN","CIRCUMFERENCE_VERTICES","DarknessRenderer$1","positionBuffer","Darkness","lights","light","entries","uniform2f","smooth","intensity","SpriteRenderer$1","textureManager","tiledPosVertices","tiledTexVertices","lastTexture","isTiled","textureBuffer","tiledPositionBuffer","tiledTextureBuffer","lastDrawMode","_c","_d","tiled","Sprite","getTiledPositionVertices","getTiledTextureVertices","flipHorizontally","flipVertically","slice","image","naturalWidth","naturalHeight","texture","getOrCreateTextureFromImage","bindTexture","TEXTURE_2D","tintColor","maskColor","maskColorMix","TextAlignment","TextRenderer$1","fontAtlasFactory","Text","posVertices","texVertices","shadowPosition","shadow","text","assign","textureAtlas","generateTextVertices","offset","shadowRenderData","getOrCreateTextureFromCanvas","processedText","preProcessText","letterSpacing","lineHeight","line","lineWidth","alignment","Center","Left","letter","glyph","letterWidth","gx","gy","u1","v1","u2","v2","spaceWidth","currentHeight","lines","split","newLine","words","word","firstWord","wordWidth","join","TilemapOrientation","TilemapRenderer$1","tileset","tileWidth","tileHeight","texMargin","texSpacing","texWidth","texHeight","texCorrection","tiles","acc","tile","processTileset","generateVertices","tilemap","flipHorizontal","flipVertical","Tilemap","_e","_f","_g","margin","correction","tilesetTile","tilemapTile","px","py","tx","ty","VideoRenderer$1","Video","video","videoWidth","videoHeight","getOrCreateTextureFromVideo","readyState","HTMLMediaElement","HAVE_CURRENT_DATA","texImage2D","RGBA","UNSIGNED_BYTE","TextureFactory","createFromImage","createTexture","createFromSource","addEventListener","createFromCanvas","createPixelTexture","Uint8Array","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_MAG_FILTER","NEAREST","textureId","TextureManager","textureFactory","textures","src","createTextureFromImage","createTextureFromCanvas","createTextureFromVideo","CanvasElement","WebGLManager","renderers","contextManager","fontFactoryAtlas","SpriteRenderer","TextRenderer","TilemapRenderer","GeometricRenderer","MaskRenderer","VideoRenderer","DarknessRenderer","canvasColorRenderer","renderCanvasColor","AssetManager","CreateSystemService","GameConfig","InputManager","LoopManager","RenderManager","SceneManager","TimeManager","COLLISION_SYMBOLS","ECS_SYMBOLS","WEBGL_SYMBOLS","__awaiter","thisArg","_arguments","P","generator","Promise","reject","fulfilled","step","next","rejected","done","then","apply","SuppressedError","GamepadController","buttons","axes","_dpadAxes","_leftStickAxes","_rightStickAxes","dpadAxes","dpadRight","dpadLeft","dpadUp","dpadDown","leftStickAxes","leftStickHorizontal","leftStickVertical","rightStickAxes","rightStickHorizontal","rightStickVertical","bottomFace","rightFace","leftFace","topFace","leftShoulder","rightShoulder","leftTrigger","rightTrigger","back","leftStickButton","rightStickButton","anyButtonPressed","values","find","vibrate","duration","weakMagnitude","strongMagnitude","startDelay","vibrationInput","Keyboard","pressedKeys","isPressed","keyCode","orPressed","keyCodes","andPressed","isPressedReturn","returnTrue","returnFalse","orPressedReturn","andPressedReturn","Mouse","leftButtonPressed","scrollButtonPressed","rightButtonPressed","positionInViewport","hasMoved","wheelScroll","TouchScreen","touching","interactions","keyboard","mouse","touchScreen","gamepads","allowedPhysicsFramerates","AssetType","deltaTime","unscaledDeltaTime","timeScale","physicsDeltaTime","unscaledPhysicsDeltaTime","renderDeltaTime","browserDeltaTime","unscaledRenderDeltaTime","physicsFramerate","entityManager","maxDeltaTime","thenForGame","thenForPhysics","thenForRender","lastIntervalId","intervals","fixedGameFramerate","fixedGameDeltaTime","parseFloat","fixedPhysicsFramerate","fixedPhysicsDeltaTime","updateForRender","time","updateForGame","updateForPhysics","updateIntervals","intervalId","interval","intervalHealthCheck","executeImmediately","timer","delay","useTimeScale","callback","times","clearInterval","entityRef","componentRef","setInterval","clearAllIntervals","assets","getAssetsLoaded","prev","asset","loaded","loadImage","url","getImage","Image","crossOrigin","createAsset","complete","loadAudio","getAudio","audio","Audio","loadFont","getFont","Font","fonts","loadVideo","getVideo","playsInline","loadJson","getJson","Json","response","fetch","json","element","disc","deleteAssetIfExists","AudioPlayer","playing","state","paused","stopped","action","stopOnSceneTransition","fixedToTimeScale","loop","volume","_currentAudioSource","_playPromisePendind","_playAfterUserInput","play","audioSource","pause","stop","SYSTEM_SYMBOLS","AudioPlayerSystem","ButtonSystem","TiledWrapperSystem","TilemapPreProcessingSystem","TransformSystem","GamepadSystem","KeyboardSystem","MouseSystem","TouchScreenSystem","UpdateBallColliderShapeSystem","UpdateBoxColliderShapeSystem","UpdateEdgeColliderShapeSystem","UpdatePolygonColliderShapeSystem","UpdateTilemapColliderShapeSystem","UpdateCollidersAfterRepositionSystem","ApplyRepositionSystem","ApplyVelocitySystem","ResolveCollisionSystem","AnimatorSystem","CameraSystem","ClearScreenSystem","CullingSystem","MaskRendererSystem","RenderSystem","DarknessLightRendererSystem","SpriteRendererSystem","GeometricRendererSystem","TextRendererSystem","TilemapRendererSystem","VideoRendererSystem","DebugColliderRenderSystem","DebugMousePositionSystem","DebugTextRendererSystem","userInputEventNames","inputManager","timeManager","canPlay","userInputErrorCatched","userInputEventHandler","eventName","window","removeEventListener","hidden","catchUserInput","checkGamepad","gp","audioPlayer","currentTime","playbackRate","catch","SystemGroup","addSystemGroup","__system_group","Transform","ignoreParentPosition","ignoreParentScale","ignoreParentRotation","localPosition","localScale","localRotation","_awake","_parent","defaultRenderLayer","debugRenderLayer","Camera","layers","debug","_renderData","_currentVideoSrc","videoSource","renderManager","assetManager","scaledOffset","videoRenderer","transform","checkVideoState","translateRenderPosition","addRenderData","translatedAngle","atan2","ended","systemManager","systemFactory","scenes","_loadingScene","_sceneLoadedThisFrame","preserveEntitiesWithComponent","addScene","sceneType","openingScene","scene","openingSceneName","loadScene","sceneNameToBeLoaded","loadOpeningScene","loadingScene","sceneLoadedThisFrame","currentSceneName","destroyCurrentScene","loadAssets","registerSystems","createEntities","PreGameLogic","createSystemIfNotExists","Button","touchEnabled","pressed","mouseOver","ButtonShape","scaled","pressedLastFrame","button","isMouseOverButton","resolveTouchAndRectangle","resolveTouchAndCircumference","onClick","onPressed","isMouseOverRectangleButton","isMouseOverCircumferenceButton","TiledWrapper","data","chunks","_processed","tiledWrapper","tilemapRenderer","l","layerToRender","infinite","chunkSize","chunksToData","dataToChunks","cx","cy","chunk","tix","tiy","t","sort","getBranchLength","parentEntity","translateChild","updateTransform","eventHandler","gamepadConnected","gamepad","gamepadDisconected","connected","getGamepadsFromBrowser","gpc","vibrationActuator","playEffect","vibrating","finally","navigator","getGamepads","webkitGetGamepads","event","code","indexOf","lastPositionInViewport","updatePosition","updateButtonDown","updateButtonUp","handleWheelEvent","onFocusOut","focus","preventDefault","stopPropagation","offsetX","clientWidth","offsetY","clientHeight","wheelEvent","deltaX","deltaY","targetTouches","clientX","offsetLeft","clientY","offsetTop","radiusX","radiusY","Animator","animations","speed","reset","currentFrame","ignoreTimeScale","_currentAnimation","_assetsReady","animator","processAssets","animation","spriteRenderer","renderSprite","isArray","fps","frames","frame","padding","camera","addCameraData","webGLManager","gameConfig","canvasColor","BallCollider","physics","BoxCollider","EdgeCollider","PolygonCollider","TilemapCollider","composite","colliders","collidersColor","collisionMethod","SAT","AABB","viewport","culledRenderData","getCameraData","setViewport","getRenderData","isInViewPort","applyCullingInTiles","setRenderData","setObjectForResizeable","setObjectForMask","setObjectForGeometric","setObjectForText","setObjectForTilemap","rotatedWidth","rotatedHeight","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","vertex","maskRenderer","removeCameraData","removeRenderData","LightRenderer","_boundingBox","lightRenderers","updateLightRendererBoundingBox","darknessRenderer","updatDarknessRendererBoundingBox","lightRenderer","scaledRadius","scaledWidth","scaledHeight","geometric","isValidGeometry","sx","sy","ensureVertexModelLength","vm","defaultTextureAtlasOptions","textRenderer","renderDataFactory","orientation","realWidth","realHeight","RigidBodyType","RigidBody","Dynamic","velocity","gravity","acceleration","transformSystem","Kinematic","displacement","totalAcceleration","scaledAcceleration","scaledVelocity","BaseUpdateColliderShapeSystem","auxMin","auxMax","auxScaledOffset","updatePositionAndVertices","translatePosition","auxAngle","updateBoundingBox","updateCircumferenceBoundingBox","updatePolygonBoundingBox","updateProjectionAxes","super","ballCollider","boxCollider","edgeCollider","polygonCollider","tilemapCollider","useEdges","useBoxes","needsCollider","generateRectangleVertices","getNeighbors","neighbor","hVertices","vVertices","hasTile","createEdge","broadPhaseResolver","collisionMatrix","collisionResolutionMethod","collisionRepository","colliderTypes","layerNeighbors","narrowPhase","broadPhase","ids","n","allowed","remote","local","isResolved","resolution","dirA","localEntity","remoteEntity","dirB","maxCorrection","rigidBody","defaultFontSize","positionInCameraViewport","positionInWorldspace","renderDataPerCamera","mousePosition","createRenderData","textColor","updateRenderDataPosition","textPosition","Right","textRendererBoundingBoxes","textBoxColor","systemsByGroup","Physics","Render","sceneManager","running","gameLoopAccumulator","enableSystems","requestAnimationLoop","asyncPhysicsLoop","gameLogicIteration","renderIteration","requestAnimationFrame","GameLogic","GamePreRender","physicsIntervalId","physicsIteration","GamePhysics","container","lastSystemTypeId","setDefaultValues","containerNode","HTMLElement","headless","_h","_j","collisionBroadPhaseMethod","_k","_l","_m","createCanvas","tabIndex","appendChild","setupManagers","setupEngineSystems","headlessFilter","setupPhysicsDependencies","setupExternalDependencies","config","dependencies","GameSystem","ENGINE_SYMBOLS","bootstrap","addDependencyType","dependencyType","addDependencyInstance","dependencyInstance","addSystems","degrees","console","warn","radians","random","prefix","padStart"],"mappings":"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","x_google_ignoreList":[30,31,47]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../packages/collisions/dist/broadPhase/IBroadPhaseResolver.js","../../../packages/math/dist/Vector2.js","../../../packages/math/dist/Rectangle.js","../../../packages/math/dist/utils.js","../../../packages/ioc/dist/container.js","../../../packages/collisions/dist/symbols.js","../../../packages/collisions/dist/broadPhase/QuadTree.js","../../../packages/collisions/dist/broadPhase/SpatialGrid.js","../../../packages/collisions/dist/Shape.js","../../../packages/collisions/dist/method/AABBMethod.js","../../../packages/collisions/dist/method/CollisionMethod.js","../../../packages/collisions/dist/method/SatMethod.js","../../../packages/collisions/dist/resolver/AABBResolver.js","../../../packages/collisions/dist/resolver/CircumferenceAABBResolver.js","../../../packages/collisions/dist/resolver/CircumferenceResolver.js","../../../packages/collisions/dist/resolver/SatResolver.js","../../../packages/collisions/dist/CollisionRepository.js","../../../packages/ecs/dist/utils.js","../../../packages/ecs/dist/symbols.js","../../../packages/ecs/dist/EntityManager.js","../../../packages/ecs/dist/SystemManager.js","../../../packages/webgl/dist/ContextManager.js","../../../packages/webgl/dist/FontAtlasFactory.js","../../../packages/webgl/dist/program/ProgramFactory.js","../../../packages/webgl/dist/program/ProgramManager.js","../../../packages/webgl/dist/shader/vertexShader.js","../../../packages/webgl/dist/shader/fragmentShader.js","../../../packages/webgl/dist/shader/legacy/vertexShader.js","../../../packages/webgl/dist/shader/legacy/fragmentShader.js","../../../packages/webgl/dist/program/ShaderLoader.js","../../../node_modules/gl-matrix/esm/common.js","../../../node_modules/gl-matrix/esm/mat4.js","../../../packages/webgl/dist/renderer/utils.js","../../../packages/webgl/dist/renderer/CanvasColorRenderer.js","../../../packages/webgl/dist/renderer/Renderer.js","../../../packages/webgl/dist/renderer/GeometricRenderer.js","../../../packages/webgl/dist/renderer/MaskRenderer.js","../../../packages/webgl/dist/renderer/DarknessRenderer.js","../../../packages/webgl/dist/renderer/SpriteRenderer.js","../../../packages/webgl/dist/renderer/TextRenderer.js","../../../packages/webgl/dist/renderer/TilemapRenderer.js","../../../packages/webgl/dist/renderer/VideoRenderer.js","../../../packages/webgl/dist/texture/TextureFactory.js","../../../packages/webgl/dist/texture/TextureManager.js","../../../packages/webgl/dist/symbols.js","../../../packages/webgl/dist/WebGLManager.js","../../../packages/engine/src/config/dependencySymbols.ts","../../../node_modules/tslib/tslib.es6.js","../../../packages/engine/src/utils/input/GamepadController.ts","../../../packages/engine/src/utils/input/Keyboard.ts","../../../packages/engine/src/utils/input/Mouse.ts","../../../packages/engine/src/utils/input/TouchScreen.ts","../../../packages/engine/src/manager/InputManager.ts","../../../packages/engine/src/manager/TimeManager.ts","../../../packages/engine/src/manager/AssetManager.ts","../../../packages/engine/src/component/gameLogic/AudioPlayer.ts","../../../packages/engine/src/config/systemSymbols.ts","../../../packages/engine/src/system/gameLogic/AudioPlayerSystem.ts","../../../packages/engine/src/system/SystemGroup.ts","../../../packages/engine/src/component/gameLogic/Transform.ts","../../../packages/engine/src/component/render2d/Camera.ts","../../../packages/engine/src/component/render2d/VideoRenderer.ts","../../../packages/engine/src/system/render2d/VideoRendererSystem.ts","../../../packages/engine/src/manager/SceneManager.ts","../../../packages/engine/src/component/gameLogic/Button.ts","../../../packages/engine/src/system/gameLogic/ButtonSystem.ts","../../../packages/engine/src/component/gameLogic/TiledWrapper.ts","../../../packages/engine/src/component/render2d/TilemapRenderer.ts","../../../packages/engine/src/system/gameLogic/TiledWrapperSystem.ts","../../../packages/engine/src/system/gameLogic/TilemapPreProcessingSystem.ts","../../../packages/engine/src/system/gameLogic/TransformSystem.ts","../../../packages/engine/src/system/input/GamepadSystem.ts","../../../packages/engine/src/system/input/KeyboardSystem.ts","../../../packages/engine/src/system/input/MouseSystem.ts","../../../packages/engine/src/system/input/TouchScreenSystem.ts","../../../packages/engine/src/component/gameLogic/Animator.ts","../../../packages/engine/src/component/render2d/SpriteRenderer.ts","../../../packages/engine/src/system/render2d/AnimatorSystem.ts","../../../packages/engine/src/system/render2d/CameraSystem.ts","../../../packages/engine/src/system/render2d/ClearScreenSystem.ts","../../../packages/engine/src/component/physics2d/BallCollider.ts","../../../packages/engine/src/component/physics2d/BoxCollider.ts","../../../packages/engine/src/component/physics2d/EdgeCollider.ts","../../../packages/engine/src/component/physics2d/PolygonCollider.ts","../../../packages/engine/src/component/physics2d/TilemapCollider.ts","../../../packages/engine/src/system/debug/DebugColliderRenderSystem.ts","../../../packages/engine/src/system/render2d/CullingSystem.ts","../../../packages/engine/src/component/render2d/MaskRenderer.ts","../../../packages/engine/src/system/render2d/MaskRendererSystem.ts","../../../packages/engine/src/system/render2d/RenderSystem.ts","../../../packages/engine/src/component/render2d/LightRenderer.ts","../../../packages/engine/src/component/render2d/DarknessRenderer.ts","../../../packages/engine/src/system/render2d/DarknessLightRendererSystem.ts","../../../packages/engine/src/component/render2d/GeometricRenderer.ts","../../../packages/engine/src/system/render2d/GeometricRendererSystem.ts","../../../packages/engine/src/system/render2d/SpriteRendererSystem.ts","../../../packages/engine/src/component/render2d/TextRenderer.ts","../../../packages/engine/src/system/render2d/TextRendererSystem.ts","../../../packages/engine/src/system/render2d/TilemapRendererSystem.ts","../../../packages/engine/src/component/physics2d/RigidBody.ts","../../../packages/engine/src/system/physics2d/ApplyVelocitySystem.ts","../../../packages/engine/src/system/physics2d/collider/BaseUpdateColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateBallColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateBoxColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateEdgeColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdatePolygonColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateTilemapColliderShapeSystem.ts","../../../packages/engine/src/system/physics2d/ResolveCollisionSystem.ts","../../../packages/engine/src/system/physics2d/ApplyRepositionSystem.ts","../../../packages/engine/src/system/physics2d/collider/UpdateCollidersAfterRepositionSystem.ts","../../../packages/engine/src/system/debug/DebugMousePositionSystem.ts","../../../packages/engine/src/system/debug/DebugTextRendererSystem.ts","../../../packages/engine/src/config/systemsByGroup.ts","../../../packages/engine/src/manager/LoopManager.ts","../../../packages/engine/src/system/CreateSystemService.ts","../../../packages/engine/src/manager/RenderManager.ts","../../../packages/engine/src/config/bootstrap.ts","../../../packages/engine/src/system/GameSystem.ts","../../../packages/engine/src/utils/misc/audio.ts","../../../packages/engine/src/index.ts","../../../packages/engine/src/Game.ts","../../../packages/engine/src/utils/misc/decorator.ts"],"sourcesContent":["/**\n * Broad phase collision methods\n * - QuadTree: Stores the shapes in an incremental quad tree.\n * - SpatialGrid: Stores the shapes in an incremental spatial grid.\n * @category Config\n * @public\n */\nexport var BroadPhaseMethods;\n(function (BroadPhaseMethods) {\n BroadPhaseMethods[BroadPhaseMethods[\"QuadTree\"] = 0] = \"QuadTree\";\n BroadPhaseMethods[BroadPhaseMethods[\"SpatialGrid\"] = 1] = \"SpatialGrid\";\n})(BroadPhaseMethods || (BroadPhaseMethods = {}));\n//# sourceMappingURL=IBroadPhaseResolver.js.map","/**\n * Represents a two-dimensional vector with x and y components.\\\n * Provides static methods for common vector operations\n * like addition, subtraction, scaling, dot product, cross product, normalization and more.\\\n * Used throughout the engine for storing 2D positions, directions, velocities and other vector quantities.\n * @category Math\n * @public\n * @example\n * ```js\n * const v1 = new Vector2(2, 1);\n * const v2 = new Vector2(3, 2);\n * const v3 = new Vector2(); // zero vector\n *\n * Vector2.add(v3, v1, v2);\n * v3.x // 5\n * v3.y // 3\n * ```\n */\nexport class Vector2 {\n constructor(x = 0, y = 0) {\n this._x = x;\n this._y = y;\n }\n get x() {\n return this._x;\n }\n set x(x) {\n this._x = x;\n }\n get y() {\n return this._y;\n }\n set y(y) {\n this._y = y;\n }\n /**\n * Get the magnitude of the vector\n *\n * @returns The magnitude of the vector\n */\n get magnitude() {\n return Math.sqrt(Math.pow(this._x, 2) + Math.pow(this._y, 2));\n }\n /**\n * Get the direction as an unit vector\n *\n * @returns The direction vector\n */\n get direction() {\n if (!this._direction)\n this._direction = new Vector2();\n return Vector2.unit(this._direction, this);\n }\n /**\n * Set the vector\n *\n * @param x The x value\n * @param y The y value\n */\n set(x, y) {\n this._x = x;\n this._y = y;\n }\n /**\n * Copy the target vector properties\n *\n * @param vector The vector to copy from\n */\n copy(vector) {\n this.set(vector.x, vector.y);\n }\n /**\n * Compare if two vector are equals\n *\n * @param vector The vector to compare\n * @returns True if the vectors are equals, false if not\n */\n equals(vector) {\n return this._x === vector.x && this._y === vector.y;\n }\n /**\n * Colne a vector into a new instace\n *\n * @returns The cloned vector\n */\n clone() {\n return new Vector2(this._x, this._y);\n }\n /**\n * Get the distance with another vector\n *\n * @param vector The vector to compare\n * @returns The magnitude of the distance\n */\n distance(vector) {\n return Math.sqrt(Math.pow((this._x - vector.x), 2) + Math.pow((this._y - vector.y), 2));\n }\n /**\n * Calculates a + b\n * @param out The output vector\n * @param a The first operand\n * @param b The second operand\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(2, 1);\n * const v2 = new Vector2(3, 2);\n * const v3 = Vector2.add(new Vector2(), v1, v2);\n * v3.x // 5\n * v3.y // 3\n * ```\n */\n static add(out, a, b) {\n out.set(a.x + b.x, a.y + b.y);\n return out;\n }\n /**\n * Calculates a - b\n *\n * @param out The output vector\n * @param a The first operand\n * @param b The second operand\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3, 2);\n * const v2 = new Vector2(2, 1);\n * const v3 = Vector2.subtract(new Vector2(), v1, v2);\n * v3.x // 1\n * v3.y // 1\n * ```\n */\n static subtract(out, a, b) {\n out.set(a.x - b.x, a.y - b.y);\n return out;\n }\n /**\n * Returns the unit vector\n *\n * @param out The output vector\n * @param a The vector to get the unit\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3, 0);\n * const v2 = Vector2.unit(new Vector2(), v1);\n * v2.x // 1\n * v2.y // 0\n * ```\n */\n static unit(out, a) {\n const lenSq = a.x * a.x + a.y * a.y;\n if (lenSq === 0) {\n out.set(0, 0);\n }\n else {\n const inv = 1 / Math.sqrt(lenSq);\n out.set(a.x * inv, a.y * inv);\n }\n return out;\n }\n /**\n * Normalize a vector\n *\n * @param out The output vector\n * @param a The vector to normalize\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(0, 2);\n * const v2 = Vector2.normal(new Vector2(), v1);\n * v2.x // -2\n * v2.y // 0\n * ```\n */\n static normal(out, a) {\n out.set(-a.y, a.x);\n return this.unit(out, out);\n }\n /**\n * Scale a vector\n *\n * @param out The output vector\n * @param a The vector to scale\n * @param scalar The scalar value\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3, 2);\n * const v2 = Vector2.scale(new Vector2(), v1, 2);\n * v2.x // 6\n * v2.y // 4\n * ```\n */\n static scale(out, a, scalar) {\n out.set(a.x * scalar, a.y * scalar);\n return out;\n }\n /**\n * Calculates the dot product of two vectors and returns a scalar value\n *\n * @param a The first operand\n * @param b The second operand\n * @returns The dot product result\n * @example\n * ```js\n * const v1 = new Vector2(3, 2);\n * const v2 = new Vector2(2, 1);\n * Vector2.dot(v1, v2); // 8\n * ```\n */\n static dot(a, b) {\n return a.x * b.x + a.y * b.y;\n }\n /**\n * Calculates the cross product of two vectors and returns a scalar value\n *\n * @param a The first operand\n * @param b The second operand\n * @returns The cross produc result\n * @example\n * ```js\n * const v1 = new Vector2(3, 2);\n * const v2 = new Vector2(2, 1);\n * Vector2.cross(v1, v2); // -1\n * ```\n */\n static cross(a, b) {\n return a.x * b.y - a.y * b.x;\n }\n /**\n * Rounds a vector\n *\n * @param a The vector to round\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * const v2 = Vector2.round(new Vector2(), v1);\n * v2.x // 4\n * v2.y // 2\n * ```\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * Vector2.round(v1, v1);\n * v1.x // 4\n * v1.y // 2\n * ```\n */\n static round(out, a) {\n out.set(Math.round(a.x), Math.round(a.y));\n return out;\n }\n /**\n * Floors a vector\n *\n * @param a The vector to floor\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * const v2 = Vector2.floor(new Vector2(), v1);\n * v2.x // 3\n * v2.y // 2\n * ```\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * Vector2.floor(v1, v1);\n * v1.x // 3\n * v1.y // 2\n * ```\n */\n static floor(out, a) {\n out.set(Math.floor(a.x), Math.floor(a.y));\n return out;\n }\n /**\n * Ceils a vector\n *\n * @param a The vector to ceil\n * @returns The output vector\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * const v2 = Vector2.ceil(new Vector2(), v1);\n * v2.x // 4\n * v2.y // 3\n * ```\n * @example\n * ```js\n * const v1 = new Vector2(3.9, 2.2);\n * Vector2.ceil(v1, v1);\n * v1.x // 4\n * v1.y // 3\n * ```\n */\n static ceil(out, a) {\n out.set(Math.ceil(a.x), Math.ceil(a.y));\n return out;\n }\n toString() {\n return `(${this._x}, ${this._y})`;\n }\n}\n//# sourceMappingURL=Vector2.js.map","import { Vector2 } from \"./Vector2\";\n/**\n * Represents an axis-aligned bounding rectangle (AABR) defined by position, width and height.\n * The position represents the bottom-left corner of the rectangle.\\\n * Provides methods and properties for manipulating and querying the rectangle's geometry.\n * @category Math\n * @public\n * @example\n * ```js\n * const rect = new Rectangle(0, 0, 100, 100);\n * rect.width // 100\n * rect.height // 100\n *\n * rect.x // 0\n * rect.y // 0\n *\n * rect.x1 // 100\n * rect.y1 // 100\n *\n * rect.center // { x: 50, y: 50 }\n *\n * rect.intersects(new Rectangle(50, 50, 100, 100)) // true\n *\n * rect.contains(new Vector2(50, 50)) // true\n *\n * rect.contains(new Rectangle(100, 100, 100, 100)) // false\n *\n * rect.toString() // \"(0, 0, 100, 100)\"\n * ```\n */\nexport class Rectangle {\n constructor(x = 0, y = 0, width = 0, height = 0) {\n this.width = 0;\n this.height = 0;\n this._position = new Vector2();\n this._center = new Vector2();\n this.set(x, y, width, height);\n }\n get x() {\n return this._position.x;\n }\n set x(value) {\n this._position.set(value, this._position.y);\n }\n get y() {\n return this._position.y;\n }\n set y(value) {\n this._position.set(this._position.x, value);\n }\n get x1() {\n return this._position.x + this.width;\n }\n get y1() {\n return this._position.y + this.height;\n }\n get position() {\n return this._position;\n }\n set position(position) {\n this._position.set(position.x, position.y);\n }\n get center() {\n this._center.set(this.x + this.width / 2, this.y + this.height / 2);\n return this._center;\n }\n /**\n * Set the rectangle\n *\n * @param x\n * @param y\n * @param width\n * @param height\n */\n set(x, y, width, height) {\n this._position.set(x, y);\n this.width = width;\n this.height = height;\n }\n /**\n * Compare if two rectangles are equals\n *\n * @param rectangle The rectangle to compare\n * @returns TRUE if the rectangles are equals, FALSE if not\n */\n equals(rectangle) {\n return (this.position.equals(rectangle.position) &&\n this.width === rectangle.width &&\n this.height === rectangle.height);\n }\n /**\n * Copy the target rectangle properties\n *\n * @param rect The rectangle to copy from\n */\n copy(rect) {\n this.set(rect.x, rect.y, rect.width, rect.height);\n }\n /**\n * Check if the target rectangle is overlapping\n *\n * @param rect The target rectangle\n * @returns TRUE or FALSE\n */\n intersects(rect) {\n return !(this.x1 < rect.x || this.x > rect.x1 || this.y1 < rect.y || this.y > rect.y1);\n }\n contains(object) {\n if (object instanceof Rectangle) {\n return object.x1 <= this.x1 && object.x >= this.x && object.y1 <= this.y1 && object.y >= this.y;\n }\n else if (object instanceof Vector2) {\n return !(object.x < this.x || object.y < this.y || object.x >= this.x1 || object.y >= this.y1);\n }\n return false;\n }\n toString() {\n return `(${this.position.x}, ${this.position.y}, ${this.width}, ${this.height})`;\n }\n}\n//# sourceMappingURL=Rectangle.js.map","/**\n * Constrains a number to be within a specified range by clamping it between a minimum and maximum value.\\\n * If the value is less than the minimum, returns the minimum. If greater than the maximum, returns the maximum.\\\n * Otherwise returns the original value unchanged.\n * @category Math\n * @public\n * @param value number to clamp\n * @param min min value\n * @param max max value\n * @returns clamped value\n * @example\n * ```js\n * clamp(10, 0, 5); // 5\n * clamp(10, 0, 15); // 10\n * ```\n */\nexport const clamp = (value, min, max) => Math.min(max, Math.max(min, value));\n/**\n * Returns a random integer number between the given minimum (inclusive) and maximum (inclusive) values.\\\n * Uses Math.random() internally to generate the random number, then rounds and scales it to fit the desired range.\n * @category Math\n * @public\n * @param min min value\n * @param max max value\n * @returns the random int value\n * @example\n * ```js\n * randomInt(0, 10); // 5\n * ```\n */\nexport const randomInt = (min, max) => Math.round(Math.random() * (max - min)) + min;\n/**\n * Returns a random floating point number between the given minimum (inclusive) and maximum (inclusive) values.\\\n * Uses Math.random() internally to generate the random number and can be rounded to a specified number of decimal places.\n * @category Math\n * @public\n * @param min min value\n * @param max max value\n * @returns the random float value\n * @example\n * ```js\n * randomFloat(0, 10); // 5.23\n * randomFloat(0, 10, 4); // 5.2345\n * ```\n */\nexport const randomFloat = (min, max, decimals = 2) => fixedRound(Math.random() * (max - min) + min, decimals);\n/**\n * Rounds a floating point number to a specified number of decimal places.\\\n * Uses Math.round() internally to avoid floating point precision errors that can occur with direct decimal arithmetic.\\\n * For example, 5.2345 rounded to 2 decimal places becomes 5.23.\n * @category Math\n * @public\n * @param value the value to round\n * @param decimals the number of decimals\n * @returns the rounded value\n * @example\n * ```js\n * fixedRound(5.2345, 2); // 5.23\n * ```\n */\nexport const fixedRound = (value, decimals) => Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);\n/**\n * Generates an array containing a sequence of numbers from start to end (inclusive) with optional step size.\\\n * For example, range(0,5) produces [0,1,2,3,4,5] and range(0,10,2) produces [0,2,4,6,8,10].\\\n * Useful for creating numeric sequences and iteration ranges.\n * @category Math\n * @public\n * @param start the starting value\n * @param end the end value\n * @param steps the steps to move\n * @returns number range\n * @example\n * ```js\n * range(0, 5); // [0, 1, 2, 3, 4, 5]\n * range(0, 10, 2); // [0, 2, 4, 6, 8, 10]\n * ```\n */\nexport const range = (start, end, steps = 1) => {\n const range = [];\n for (let i = start; i <= end; i += steps) {\n range.push(i);\n }\n return range;\n};\n/**\n * Checks if a number falls within a specified range (inclusive of both minimum and maximum bounds).\\\n * Returns true if the value is greater than or equal to the minimum and less than or equal to the maximum.\\\n * Useful for range checking, input validation, and boundary testing.\n * @category Math\n * @public\n * @param value number to compare\n * @param min min value\n * @param max max value\n * @returns true if the number is between the min and the max, false instead\n * @example\n * ```js\n * between(5, 0, 10); // true\n * between(5, 0, 4); // false\n * ```\n */\nexport const between = (value, min, max) => {\n return value >= min && value <= max;\n};\n/**\n * Converts an angle from radians to degrees by multiplying by (180/π).\\\n * Useful for converting between angular measurement systems and displaying angles in a more human-readable format.\n * @param radians\n * @returns degrees\n * @category Math\n * @public\n * @example\n * ```js\n * radiansToDegrees(Math.PI); // 180\n * ```\n */\nexport const radiansToDegrees = (radians) => radians * (180 / Math.PI);\n/**\n * Converts an angle from degrees to radians by multiplying by (π/180).\\\n * Useful for converting between angular measurement systems and performing trigonometric calculations.\n * @param degrees\n * @returns radians\n * @category Math\n * @public\n * @example\n * ```js\n * degreesToRadians(180); // 3.141592653589793\n * ```\n */\nexport const degreesToRadians = (degrees) => degrees * (Math.PI / 180);\n/**\n * Converts RGB color values to a hexadecimal color string.\\\n * Takes red, green and blue color components (0-255) and returns a hex color code.\\\n * Useful for converting between color formats and generating color strings for CSS/HTML.\n * @param rgb\n * @param prefix default is \"#\"\n * @returns string\n * @public\n * @category Math\n * @example\n * ```js\n * // default prefix \"#\"\n * rgbToHex({ r: 255, g: 255, b: 255 }); // #ffffff\n * ```\n * @example\n * ```js\n * // no prefix\n * rgbToHex({ r: 0, g: 255, b: 0 }, \"\"); // 00ff00\n * ```\n */\nexport const rgbToHex = ({ r, g, b }, prefix = \"#\") => {\n const hex = (x) => x.toString(16).padStart(2, \"0\");\n return `${prefix}${hex(r)}${hex(g)}${hex(b)}`;\n};\n//# sourceMappingURL=utils.js.map","export class Container {\n constructor() {\n this.instances = new Map();\n this.types = new Map();\n }\n add(type, name) {\n if (!name && !type.prototype.__ioc_injectable) {\n throw new Error(`Type ${type.name} is not injectable`);\n }\n this.types.set(name !== null && name !== void 0 ? name : type.prototype.__ioc_injectable, type);\n return this;\n }\n set(name, dependency) {\n this.instances.set(name, dependency);\n return this;\n }\n get(name) {\n var _a, _b;\n if (!this.instances.has(name)) {\n const type = this.types.get(name);\n if (!type)\n throw new Error(`${name.toString()} is not a valid type`);\n // constructor params\n const instance = new type(...((_a = type.prototype.__ioc_inject_constructor) !== null && _a !== void 0 ? _a : []).map((inject) => this.get(inject)));\n // class props\n ((_b = type.prototype.__ioc_inject_prop) !== null && _b !== void 0 ? _b : []).forEach(([prop, dependency]) => (instance[prop] = this.get(dependency)));\n this.instances.set(name, instance);\n }\n return this.instances.get(name);\n }\n has(name) {\n return this.types.has(name) || this.instances.has(name);\n }\n}\n/**\n * Decorator to mark a class as an injectable dependency that can be managed by the IoC container.\\\n * Injectable classes can be automatically instantiated and have their dependencies resolved when requested through the container.\\\n * This enables dependency injection and inversion of control.\n * @param name the name to identify the dependency\n * @public\n * @category Decorators\n * @example\n * ```typescript\n * @injectable(\"SomeDependency\")\n * class SomeDependency {}\n * ```\n */\nexport function injectable(name) {\n return function (target) {\n if (!target.prototype.__ioc_injectable || target.prototype.__ioc_injectable !== name) {\n target.prototype.__ioc_injectable = name;\n }\n };\n}\n/**\n * Decorator to mark a property or constructor parameter as a dependency that should be automatically injected by the IoC container.\\\n * When applied to a property or constructor parameter, the container will resolve and inject the specified dependency at runtime.\n * @param name the name to identify the dependency\n * @public\n * @category Decorators\n * @example\n * ```typescript\n * class SomeClass {\n * private anotherDependency: DependencyType;\n *\n * constructor(@inject(\"AnotherDependency\") anotherDependency: DependencyType) {\n * this.anotherDependency = anotherDependency;\n * }\n * }\n * ```\n * @example\n * ```typescript\n * class SomeClass {\n * @inject(\"AnotherDependency\") private anotherDependency: DependencyType;\n * }\n * ```\n */\nexport function inject(name) {\n return function (target, propertyKey, parameterIndex) {\n if (parameterIndex !== undefined) {\n // constructor param\n if (!target.prototype.__ioc_inject_constructor)\n target.prototype.__ioc_inject_constructor = [];\n target.prototype.__ioc_inject_constructor[parameterIndex] = name;\n }\n else if (propertyKey !== undefined) {\n // class prop\n if (!target.constructor.prototype.__ioc_inject_prop)\n target.constructor.prototype.__ioc_inject_prop = [];\n target.constructor.prototype.__ioc_inject_prop.push([propertyKey, name]);\n }\n };\n}\n//# sourceMappingURL=container.js.map","export const SYMBOLS = {\n CollisionRepository: Symbol.for(\"CollisionRepository\"),\n CollisionBroadphaseResolver: Symbol.for(\"CollisionBroadphaseResolver\"),\n CollisionResolutionMethod: Symbol.for(\"CollisionResolutionMethod\"),\n CollisionAABBResolver: Symbol.for(\"CollisionAABBResolver\"),\n CollisionCircumferenceAABBResolver: Symbol.for(\"CollisionCircumferenceAABBResolver\"),\n CollisionCircumferenceResolver: Symbol.for(\"CollisionCircumferenceResolver\"),\n CollisionSatResolver: Symbol.for(\"CollisionSatResolver\"),\n CollisionMatrix: Symbol.for(\"CollisionMatrix\"),\n};\n//# sourceMappingURL=symbols.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar QuadTree_1;\nimport { Rectangle, Vector2 } from \"@angry-pixel/math\";\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nconst MAX_DEPTH = 8;\nconst MAX_RECTS = 16;\nlet QuadTree = QuadTree_1 = class QuadTree {\n constructor(bounds = new Rectangle(), depth = 0) {\n this.rects = new Map();\n this.children = null;\n /** Root-only: dedupe ids across leaves (same scheme as SpatialGrid) */\n this.seenGen = [];\n this.retrieveSerial = 0;\n // cache\n this.minArea = new Vector2();\n this.maxArea = new Vector2();\n this.bounds = bounds;\n this.depth = depth;\n }\n update(shapes) {\n this.clear();\n if (shapes.length === 0)\n return;\n this.resize(shapes);\n this.ensureSeenCapacity(shapes.length);\n shapes.forEach(({ id, boundingBox }) => this.insert(id, boundingBox));\n }\n ensureSeenCapacity(shapeCount) {\n if (this.seenGen.length < shapeCount) {\n const start = this.seenGen.length;\n this.seenGen.length = shapeCount;\n this.seenGen.fill(0, start, shapeCount);\n }\n }\n clear() {\n this.rects.clear();\n if (this.children) {\n this.children.forEach((child) => child.clear());\n this.children = null;\n }\n }\n resize(shapes) {\n this.minArea.set(Infinity, Infinity);\n this.maxArea.set(-Infinity, -Infinity);\n shapes.forEach(({ boundingBox: box }) => {\n this.minArea.set(Math.min(box.x, this.minArea.x), Math.min(box.y, this.minArea.y));\n this.maxArea.set(Math.max(box.x1, this.maxArea.x), Math.max(box.y1, this.maxArea.y));\n });\n this.bounds.set(this.minArea.x, this.minArea.y, this.maxArea.x - this.minArea.x, this.maxArea.y - this.minArea.y);\n }\n insert(id, rect) {\n if (!this.children && this.rects.size >= MAX_RECTS && this.depth < MAX_DEPTH) {\n this.subdivide();\n this.rects.forEach((value, key) => this.children.forEach((child) => {\n if (child.bounds.intersects(value)) {\n child.insert(key, value);\n }\n }));\n this.rects.clear();\n }\n if (this.children) {\n this.children.forEach((child) => {\n if (child.bounds.intersects(rect)) {\n child.insert(id, rect);\n }\n });\n }\n else {\n this.rects.set(id, rect);\n }\n }\n subdivide() {\n const x = this.bounds.x;\n const y = this.bounds.y;\n const width = this.bounds.width;\n const height = this.bounds.height;\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n this.children = [\n new QuadTree_1(new Rectangle(x, y, halfWidth, halfHeight), this.depth + 1),\n new QuadTree_1(new Rectangle(x + halfWidth, y, halfWidth, halfHeight), this.depth + 1),\n new QuadTree_1(new Rectangle(x, y + halfHeight, halfWidth, halfHeight), this.depth + 1),\n new QuadTree_1(new Rectangle(x + halfWidth, y + halfHeight, halfWidth, halfHeight), this.depth + 1),\n ];\n }\n retrieve(rect) {\n if (++this.retrieveSerial === 0x7fffffff) {\n this.retrieveSerial = 1;\n this.seenGen.fill(0);\n }\n const neighbors = [];\n this.retrieveFromNode(rect, neighbors, this.retrieveSerial, this.seenGen);\n return neighbors;\n }\n retrieveFromNode(rect, result, serial, seenGen) {\n if (this.children) {\n this.children.forEach((child) => {\n if (child.bounds.intersects(rect)) {\n child.retrieveFromNode(rect, result, serial, seenGen);\n }\n });\n }\n else {\n this.rects.forEach((value, key) => {\n if (value.intersects(rect) && seenGen[key] !== serial) {\n seenGen[key] = serial;\n result.push(key);\n }\n });\n }\n }\n};\nQuadTree = QuadTree_1 = __decorate([\n injectable(SYMBOLS.CollisionBroadphaseResolver)\n], QuadTree);\nexport { QuadTree };\n//# sourceMappingURL=QuadTree.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Rectangle, Vector2 } from \"@angry-pixel/math\";\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nconst MAX_COLLIDERS_PER_CELL = 16;\nconst cell = (value, min, width, subdivisions) => Math.min(((value - min) / width) | 0, subdivisions - 1);\nlet SpatialGrid = class SpatialGrid {\n constructor() {\n this.area = new Rectangle();\n this.grid = [];\n this.rects = new Map();\n this.subdivisions = 0;\n this.lastAreaX = NaN;\n this.lastAreaY = NaN;\n this.lastAreaW = NaN;\n this.lastAreaH = NaN;\n this.lastSubdivisions = -1;\n /** Dedupe in retrieve: generation stamp per id index */\n this.seenGen = [];\n this.retrieveSerial = 0;\n this.retrieveResult = [];\n // cache\n this.minArea = new Vector2();\n this.maxArea = new Vector2();\n this.coordinates = { x0: 0, x1: 0, y0: 0, y1: 0 };\n }\n update(shapes) {\n if (shapes.length === 0) {\n this.rects.clear();\n if (this.grid.length > 0) {\n this.clearGridCells();\n }\n return;\n }\n this.resize(shapes);\n this.ensureSeenCapacity(shapes.length);\n shapes.forEach(({ id, boundingBox }) => this.insert(id, boundingBox));\n }\n ensureSeenCapacity(shapeCount) {\n if (this.seenGen.length < shapeCount) {\n const start = this.seenGen.length;\n this.seenGen.length = shapeCount;\n this.seenGen.fill(0, start, shapeCount);\n }\n }\n clearGridCells() {\n for (let x = 0; x < this.subdivisions; x++) {\n for (let y = 0; y < this.subdivisions; y++) {\n this.grid[x][y].length = 0;\n }\n }\n }\n resize(shapes) {\n this.minArea.set(Infinity, Infinity);\n this.maxArea.set(-Infinity, -Infinity);\n shapes.forEach(({ boundingBox: box }) => {\n this.minArea.set(Math.min(box.x, this.minArea.x), Math.min(box.y, this.minArea.y));\n this.maxArea.set(Math.max(box.x1, this.maxArea.x), Math.max(box.y1, this.maxArea.y));\n });\n const ax = this.minArea.x;\n const ay = this.minArea.y;\n const aw = this.maxArea.x - this.minArea.x;\n const ah = this.maxArea.y - this.minArea.y;\n this.area.set(ax, ay, aw, ah);\n const newSubdivisions = ((shapes.length / MAX_COLLIDERS_PER_CELL) | 0) + 1;\n this.cellWidth = Math.ceil(this.area.width / newSubdivisions);\n this.cellHeight = Math.ceil(this.area.height / newSubdivisions);\n const reuse = this.grid.length > 0 &&\n newSubdivisions === this.lastSubdivisions &&\n ax === this.lastAreaX &&\n ay === this.lastAreaY &&\n aw === this.lastAreaW &&\n ah === this.lastAreaH;\n if (reuse) {\n this.clearGridCells();\n }\n else {\n this.subdivisions = newSubdivisions;\n this.buildGrid();\n this.lastSubdivisions = newSubdivisions;\n this.lastAreaX = ax;\n this.lastAreaY = ay;\n this.lastAreaW = aw;\n this.lastAreaH = ah;\n }\n this.subdivisions = newSubdivisions;\n this.rects.clear();\n }\n buildGrid() {\n this.grid = [];\n for (let x = 0; x < this.subdivisions; x++) {\n this.grid[x] = [];\n for (let y = 0; y < this.subdivisions; y++) {\n this.grid[x][y] = [];\n }\n }\n }\n insert(id, box) {\n this.updateCoordinates(box);\n for (let x = this.coordinates.x0; x <= this.coordinates.x1; x++) {\n for (let y = this.coordinates.y0; y <= this.coordinates.y1; y++) {\n this.grid[x][y].push(id);\n }\n }\n this.rects.set(id, box);\n }\n retrieve(box) {\n this.retrieveResult.length = 0;\n if (++this.retrieveSerial === 0x7fffffff) {\n this.retrieveSerial = 1;\n this.seenGen.fill(0);\n }\n this.updateCoordinates(box);\n for (let x = this.coordinates.x0; x <= this.coordinates.x1; x++) {\n for (let y = this.coordinates.y0; y <= this.coordinates.y1; y++) {\n const cellIds = this.grid[x][y];\n for (let i = 0, len = cellIds.length; i < len; i++) {\n const id = cellIds[i];\n if (this.rects.get(id).intersects(box)) {\n if (this.seenGen[id] !== this.retrieveSerial) {\n this.seenGen[id] = this.retrieveSerial;\n this.retrieveResult.push(id);\n }\n }\n }\n }\n }\n return this.retrieveResult;\n }\n updateCoordinates(area) {\n this.coordinates.x0 = cell(area.x, this.area.x, this.cellWidth, this.subdivisions);\n this.coordinates.x1 = cell(area.x1, this.area.x, this.cellWidth, this.subdivisions);\n this.coordinates.y0 = cell(area.y, this.area.y, this.cellHeight, this.subdivisions);\n this.coordinates.y1 = cell(area.y1, this.area.y, this.cellHeight, this.subdivisions);\n }\n};\nSpatialGrid = __decorate([\n injectable(SYMBOLS.CollisionBroadphaseResolver)\n], SpatialGrid);\nexport { SpatialGrid };\n//# sourceMappingURL=SpatialGrid.js.map","import { Rectangle, Vector2 } from \"@angry-pixel/math\";\n/** @internal */\nexport class Polygon {\n get vertexModel() {\n return this._vertexModel;\n }\n set vertexModel(vertexModel) {\n this._vertexModel = vertexModel;\n if (vertexModel.length === 2) {\n this.vertices = [new Vector2(), new Vector2()];\n this.projectionAxes = [new Vector2()];\n return;\n }\n this.vertices = [];\n this.projectionAxes = [];\n this._vertexModel.forEach(() => {\n this.vertices.push(new Vector2());\n this.projectionAxes.push(new Vector2());\n });\n }\n constructor(vertexModel, rotation = 0) {\n this.rotation = rotation;\n this.boundingBox = new Rectangle();\n this.collider = undefined;\n this.entity = undefined;\n this.id = undefined;\n this.ignoreCollisionsWithLayers = undefined;\n this.layer = undefined;\n this.position = new Vector2();\n this.projectionAxes = [];\n this.radius = 0;\n this.vertices = [];\n this.updateCollisions = true;\n this._vertexModel = [];\n this.vertexModel = vertexModel;\n }\n}\n/** @internal */\nexport class Circumference {\n constructor(radius) {\n this.radius = radius;\n this.boundingBox = new Rectangle();\n this.collider = undefined;\n this.entity = undefined;\n this.id = undefined;\n this.ignoreCollisionsWithLayers = undefined;\n this.layer = undefined;\n this.position = new Vector2();\n this.projectionAxes = [new Vector2()];\n this.rotation = 0;\n this.vertexModel = [];\n this.vertices = [new Vector2(), new Vector2()];\n this.updateCollisions = true;\n }\n}\n//# sourceMappingURL=Shape.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { inject, injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Circumference, Polygon } from \"../Shape\";\nlet AABBMethod = class AABBMethod {\n constructor(AABBResolver, circumferenceAABBResolver, circumferenceResolver) {\n this.AABBResolver = AABBResolver;\n this.circumferenceAABBResolver = circumferenceAABBResolver;\n this.circumferenceResolver = circumferenceResolver;\n }\n findCollision(shapeA, shapeB) {\n if (shapeA instanceof Polygon && shapeB instanceof Polygon) {\n return this.AABBResolver.resolve(shapeA, shapeB);\n }\n else if (shapeA instanceof Circumference && shapeB instanceof Polygon) {\n return this.circumferenceAABBResolver.resolve(shapeA, shapeB);\n }\n else if (shapeA instanceof Polygon && shapeB instanceof Circumference) {\n return this.circumferenceAABBResolver.resolve(shapeB, shapeA, true);\n }\n else if (shapeA instanceof Circumference && shapeB instanceof Circumference) {\n return this.circumferenceResolver.resolve(shapeA, shapeB);\n }\n }\n};\nAABBMethod = __decorate([\n injectable(SYMBOLS.CollisionResolutionMethod),\n __param(0, inject(SYMBOLS.CollisionAABBResolver)),\n __param(1, inject(SYMBOLS.CollisionCircumferenceAABBResolver)),\n __param(2, inject(SYMBOLS.CollisionCircumferenceResolver))\n], AABBMethod);\nexport { AABBMethod };\n//# sourceMappingURL=AABBMethod.js.map","/**\n * Resolution phase collision methods\n * - AABB (axis-aligned bounding box): It only works with axis-aligned rectangles and lines and cimcurferences.\n * - SAT (Separation axis theorem): It works with every type of shape.\n * @category Config\n * @public\n */\nexport var CollisionMethods;\n(function (CollisionMethods) {\n CollisionMethods[CollisionMethods[\"AABB\"] = 0] = \"AABB\";\n CollisionMethods[CollisionMethods[\"SAT\"] = 1] = \"SAT\";\n})(CollisionMethods || (CollisionMethods = {}));\n//# sourceMappingURL=CollisionMethod.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { inject, injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Circumference } from \"../Shape\";\nlet SatMethod = class SatMethod {\n constructor(circumferenceResolver, satResolver) {\n this.circumferenceResolver = circumferenceResolver;\n this.satResolver = satResolver;\n }\n findCollision(shapeA, shapeB) {\n if (shapeA instanceof Circumference && shapeB instanceof Circumference) {\n return this.circumferenceResolver.resolve(shapeA, shapeB);\n }\n else {\n return this.satResolver.resolve(shapeA, shapeB);\n }\n }\n};\nSatMethod = __decorate([\n injectable(SYMBOLS.CollisionResolutionMethod),\n __param(0, inject(SYMBOLS.CollisionCircumferenceResolver)),\n __param(1, inject(SYMBOLS.CollisionSatResolver))\n], SatMethod);\nexport { SatMethod };\n//# sourceMappingURL=SatMethod.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Vector2 } from \"@angry-pixel/math\";\nlet AABBResolver = class AABBResolver {\n constructor() {\n this.direction = new Vector2();\n this.resolutionDirection = new Vector2();\n /** Reused return direction; callers that store CollisionResolution must copy `direction`. */\n this.outDirection = new Vector2();\n }\n resolve({ boundingBox: boxA }, { boundingBox: boxB }) {\n this.overlapX = Math.min(boxA.x1, boxB.x1) - Math.max(boxA.x, boxB.x);\n this.overlapY = Math.min(boxA.y1, boxB.y1) - Math.max(boxA.y, boxB.y);\n if (this.overlapX < 0 || this.overlapY < 0)\n return undefined;\n this.checkOverlapForLines(boxA, boxB);\n this.direction.set(Math.sign(boxB.center.x - boxA.center.x), Math.sign(boxB.center.y - boxA.center.y));\n this.preventContainment(boxA, boxB);\n if (this.overlapY < this.overlapX) {\n this.minOverlap = this.overlapY;\n this.resolutionDirection.set(0, this.direction.y);\n }\n else {\n this.minOverlap = this.overlapX;\n this.resolutionDirection.set(this.direction.x, this.overlapY === this.overlapX ? this.direction.y : 0);\n }\n return {\n direction: Vector2.unit(this.outDirection, this.resolutionDirection),\n penetration: this.minOverlap,\n };\n }\n checkOverlapForLines(boxA, boxB) {\n if ((boxA.width === 0 || boxB.width === 0) && this.overlapX === 0) {\n this.overlapX = Math.min(Math.abs(boxA.x - boxB.x), Math.abs(boxA.x1 - boxB.x1));\n }\n if ((boxA.height === 0 || boxB.height === 0) && this.overlapY === 0) {\n this.overlapY = Math.min(Math.abs(boxA.y - boxB.y), Math.abs(boxA.y1 - boxB.y1));\n }\n }\n preventContainment(boxA, boxB) {\n if (this.overlapY > 0) {\n if ((boxA.y1 > boxB.y1 && boxA.y < boxB.y) || (boxA.y1 < boxB.y1 && boxA.y > boxB.y)) {\n const minSep = Math.abs(boxA.y - boxB.y);\n const maxSep = Math.abs(boxA.y1 - boxB.y1);\n this.overlapY += minSep < maxSep ? minSep : maxSep;\n }\n }\n if (this.overlapX > 0) {\n if ((boxA.x1 > boxB.x1 && boxA.x < boxB.x) || (boxA.x1 < boxB.x1 && boxA.x > boxB.x)) {\n const minSep = Math.abs(boxA.x - boxB.x);\n const maxSep = Math.abs(boxA.x1 - boxB.x1);\n this.overlapX += minSep < maxSep ? minSep : maxSep;\n }\n }\n }\n};\nAABBResolver = __decorate([\n injectable(SYMBOLS.CollisionAABBResolver)\n], AABBResolver);\nexport { AABBResolver };\n//# sourceMappingURL=AABBResolver.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { clamp, Vector2 } from \"@angry-pixel/math\";\nlet CircumferenceAABBResolver = class CircumferenceAABBResolver {\n constructor() {\n this.closestPoint = new Vector2();\n this.distance = new Vector2();\n this.direction = new Vector2();\n /** Reused return direction; callers that store CollisionResolution must copy `direction`. */\n this.outDirection = new Vector2();\n }\n resolve(shapeA, shapeB, invert = false) {\n this.closestPoint.set(clamp(shapeA.position.x, shapeB.boundingBox.x, shapeB.boundingBox.x1), clamp(shapeA.position.y, shapeB.boundingBox.y, shapeB.boundingBox.y1));\n Vector2.subtract(this.distance, this.closestPoint, shapeA.position);\n const len = this.distance.magnitude;\n if (len > shapeA.radius)\n return undefined;\n Vector2.unit(this.direction, this.distance);\n if (invert)\n Vector2.scale(this.outDirection, this.direction, -1);\n else\n this.outDirection.copy(this.direction);\n return {\n direction: this.outDirection,\n penetration: shapeA.radius - len,\n };\n }\n};\nCircumferenceAABBResolver = __decorate([\n injectable(SYMBOLS.CollisionCircumferenceAABBResolver)\n], CircumferenceAABBResolver);\nexport { CircumferenceAABBResolver };\n//# sourceMappingURL=CircumferenceAABBResolver.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Vector2 } from \"@angry-pixel/math\";\nlet CircumferenceResolver = class CircumferenceResolver {\n constructor() {\n this.distance = new Vector2();\n /** Reused return direction; callers that store CollisionResolution must copy `direction`. */\n this.outDirection = new Vector2();\n }\n resolve(shapeA, shapeB) {\n Vector2.subtract(this.distance, shapeB.position, shapeA.position);\n const len = this.distance.magnitude;\n const rSum = shapeA.radius + shapeB.radius;\n if (len > rSum)\n return undefined;\n Vector2.unit(this.outDirection, this.distance);\n return {\n direction: this.outDirection,\n penetration: rSum - len,\n };\n }\n};\nCircumferenceResolver = __decorate([\n injectable(SYMBOLS.CollisionCircumferenceResolver)\n], CircumferenceResolver);\nexport { CircumferenceResolver };\n//# sourceMappingURL=CircumferenceResolver.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"../symbols\";\nimport { Vector2 } from \"@angry-pixel/math\";\nimport { Circumference } from \"../Shape\";\nlet SatResolver = class SatResolver {\n constructor() {\n this.mergedAxes = [];\n this.projA = { min: 0, max: 0 };\n this.projB = { min: 0, max: 0 };\n this.smallestAxis = new Vector2();\n this.distance = new Vector2(Infinity, Infinity);\n this.cache = new Vector2();\n /** Reused return direction; callers that store CollisionResolution must copy `direction`. */\n this.outDirection = new Vector2();\n }\n resolve(shapeA, shapeB) {\n this.minOverlap = Infinity;\n if (shapeA instanceof Circumference)\n this.setCircumferenceAxis(shapeA, shapeB);\n else if (shapeB instanceof Circumference)\n this.setCircumferenceAxis(shapeB, shapeA);\n this.mergeProjectionAxes(shapeA, shapeB);\n for (let i = 0; i < this.mergedAxes.length; i++) {\n const axis = this.mergedAxes[i];\n if (shapeA instanceof Circumference)\n this.setCircumferenceVertices(shapeA, axis);\n else if (shapeB instanceof Circumference)\n this.setCircumferenceVertices(shapeB, axis);\n this.projectShapeOntoAxis(this.projA, shapeA, axis);\n this.projectShapeOntoAxis(this.projB, shapeB, axis);\n this.currentOverlap = Math.min(this.projA.max, this.projB.max) - Math.max(this.projA.min, this.projB.min);\n if (this.currentOverlap < 0)\n return undefined;\n this.invertAxis = true;\n // prevent containment\n if ((this.projA.max > this.projB.max && this.projA.min < this.projB.min) ||\n (this.projA.max < this.projB.max && this.projA.min > this.projB.min)) {\n const mins = Math.abs(this.projA.min - this.projB.min);\n const maxs = Math.abs(this.projA.max - this.projB.max);\n if (mins < maxs) {\n this.currentOverlap += mins;\n }\n else {\n this.currentOverlap += maxs;\n Vector2.scale(axis, axis, -1);\n this.invertAxis = false;\n }\n }\n if (this.currentOverlap < this.minOverlap) {\n this.minOverlap = this.currentOverlap;\n this.smallestAxis.copy(axis);\n if (this.invertAxis && this.projA.max < this.projB.max) {\n Vector2.scale(this.smallestAxis, axis, -1);\n }\n }\n }\n Vector2.scale(this.outDirection, this.smallestAxis, -1);\n return {\n direction: this.outDirection,\n penetration: this.minOverlap,\n };\n }\n mergeProjectionAxes(shapeA, shapeB) {\n const ax = shapeA.projectionAxes;\n const bx = shapeB.projectionAxes;\n this.mergedAxes.length = 0;\n for (let i = 0; i < ax.length; i++) {\n this.mergedAxes.push(ax[i]);\n }\n for (let j = 0; j < bx.length; j++) {\n const pb = bx[j];\n let duplicate = false;\n for (let k = 0; k < this.mergedAxes.length; k++) {\n if (this.mergedAxes[k].equals(pb)) {\n duplicate = true;\n break;\n }\n }\n if (!duplicate) {\n this.mergedAxes.push(pb);\n }\n }\n }\n projectShapeOntoAxis(projection, shape, axis) {\n projection.min = Infinity;\n projection.max = -Infinity;\n const verts = shape.vertices;\n for (let i = 0; i < verts.length; i++) {\n const d = Vector2.dot(axis, verts[i]);\n if (d < projection.min)\n projection.min = d;\n if (d > projection.max)\n projection.max = d;\n }\n return projection;\n }\n setCircumferenceAxis(c, s) {\n this.distance.set(Infinity, Infinity);\n let bestLenSq = Infinity;\n const verts = s.vertices;\n for (let i = 0; i < verts.length; i++) {\n Vector2.subtract(this.cache, verts[i], c.position);\n const lenSq = this.cache.x * this.cache.x + this.cache.y * this.cache.y;\n if (lenSq < bestLenSq) {\n bestLenSq = lenSq;\n this.distance.copy(this.cache);\n }\n }\n Vector2.unit(c.projectionAxes[0], this.distance);\n }\n setCircumferenceVertices(c, axis) {\n Vector2.add(c.vertices[0], c.position, Vector2.scale(this.cache, Vector2.unit(this.cache, axis), -c.radius));\n Vector2.add(c.vertices[1], c.position, Vector2.scale(this.cache, Vector2.unit(this.cache, axis), c.radius));\n }\n};\nSatResolver = __decorate([\n injectable(SYMBOLS.CollisionSatResolver)\n], SatResolver);\nexport { SatResolver };\n//# sourceMappingURL=SatResolver.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"./symbols\";\n/**\n * The CollisionRepository stores and manages collision data between colliders.\n * It provides methods for querying collisions by collider and layer,\n * and handles persisting/removing collision records.\n * @public\n * @category Collisions\n * @example\n * ```typescript\n * // Get all collisions for a collider\n * const collisions = collisionRepository.findCollisionsForCollider(playerCollider);\n *\n * // Get collisions between player and enemies\n * const enemyCollisions = collisionRepository.findCollisionsForColliderAndLayer(\n * playerCollider,\n * \"enemy\"\n * );\n *\n * // Get all current collisions\n * const allCollisions = collisionRepository.findAll();\n * ```\n */\nlet CollisionRepository = class CollisionRepository {\n constructor() {\n this.collisions = [];\n }\n /**\n * Searches for and returns a collection of collisions for the given collider\n * @param collider The local collider\n * @returns A collection of collisions\n */\n findCollisionsForCollider(collider) {\n return this.collisions.filter((c) => c.localCollider === collider);\n }\n /**\n * Searches for and returns a collection of collisions for the given collider and layer\n * @param collider The local collider\n * @param layer The collision layer\n * @returns A collection of collisions\n */\n findCollisionsForColliderAndLayer(collider, layer) {\n return this.collisions.filter((c) => c.localCollider === collider && c.remoteCollider.layer === layer);\n }\n /**\n * Returns all the collisions\n * @public\n * @returns A collection of collisions\n */\n findAll() {\n return this.collisions;\n }\n /** @internal */\n persist(collision) {\n this.collisions.push(collision);\n }\n /** @internal */\n removeAll() {\n this.collisions = [];\n }\n};\nCollisionRepository = __decorate([\n injectable(SYMBOLS.CollisionRepository)\n], CollisionRepository);\nexport { CollisionRepository };\n//# sourceMappingURL=CollisionRepository.js.map","export const deepClone = (value) => {\n if (value === null || typeof value !== \"object\") {\n return value; // primitives\n }\n // avoid cloning DOM elements\n if (typeof Node !== \"undefined\" && value instanceof Node) {\n return value;\n }\n // avoid cloning FontFace instances\n if (typeof FontFace !== \"undefined\" && value instanceof FontFace) {\n return value;\n }\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n if (value instanceof Array) {\n return value.map((item) => deepClone(item));\n }\n if (value instanceof Map) {\n const result = new Map();\n for (const [k, v] of value) {\n result.set(deepClone(k), deepClone(v));\n }\n return result;\n }\n if (value instanceof Set) {\n const result = new Set();\n for (const item of value) {\n result.add(deepClone(item));\n }\n return result;\n }\n // creates an empty object with the same prototype as the original value\n const proto = Object.getPrototypeOf(value);\n const clone = Object.create(proto);\n // clone all properties of the original value\n for (const key of Object.keys(value)) {\n clone[key] = deepClone(value[key]);\n }\n return clone;\n};\n//# sourceMappingURL=utils.js.map","export const SYMBOLS = {\n EntityManager: Symbol.for(\"EntityManager\"),\n SystemManager: Symbol.for(\"SystemManager\"),\n};\n//# sourceMappingURL=symbols.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { deepClone } from \"./utils\";\nimport { SYMBOLS } from \"./symbols\";\nconst COMPONENT_TYPE_ID = Symbol(\"ecs.componentTypeId\");\nlet nextComponentTypeId = 0;\n/**\n * The EntityManager is responsible for managing the lifecycle and relationships of entities and components.\\\n * It provides methods for creating, reading, updating and deleting entities and their associated components.\\\n * Handles parent-child relationships between entities and enables/disables entities and components.\\\n * Acts as the central registry for all game objects and their behaviors.\n * @public\n * @category Entity-Component-System\n * @example\n * ```js\n * // Create an entity with components\n * const entity = entityManager.createEntity([\n * new Transform({position: new Vector2(100, 100)}),\n * new SpriteRenderer({sprite: \"player.png\"})\n * ]);\n *\n * // Get a component from an entity\n * const transform = entityManager.getComponent(entity, Transform);\n *\n * // Get all components from an entity\n * const components = entityManager.getComponents(entity);\n *\n * // Find entity by component\n * const entityWithSprite = entityManager.getEntityForComponent(spriteRenderer);\n *\n * // Update component data\n * entityManager.updateComponentData(entity, Transform, (component) => {\n * component.position = new Vector2(200, 200);\n * });\n *\n * // Create parent-child relationship\n * const child = entityManager.createEntity([Transform], parent);\n * // or if you already have the child entity\n * entityManager.setParent(child, parent);\n *\n * // Enable/disable entities\n * entityManager.disableEntity(entity);\n * entityManager.enableEntity(entity);\n *\n * // Remove components\n * entityManager.removeComponent(entity, SpriteRenderer);\n * entityManager.removeComponent(spriteRenderer);\n *\n * // Search for entities with specific components\n * entityManager.search(Enemy, (enemy, entity) => {\n * if (enemy.status !== \"alive\") return;\n * // do something\n * });\n *\n * const searchResult = entityManager.search(SpriteRenderer);\n * searchResult.forEach(({component, entity}) => {\n * // do something\n * });\n * ```\n */\nlet EntityManager = class EntityManager {\n constructor() {\n this.lastEntityId = 0;\n this.entities = new Set();\n this.components = new Map(); // componen type id -> entity id -> component\n this.entityComponents = new Map(); // entity -> component type id -> component\n this.componentToEntity = new WeakMap(); // component instance -> entity\n this.disabledEntities = new Set();\n this.manuallyDisabledEntities = new Set();\n this.disabledComponents = new Map(); // entity -> set of component type id\n this.parentEntities = new Map(); // child entity -> parent entity\n this.childEntities = new Map(); // parent entity -> set of child entities\n }\n createEntity(arg1, parent) {\n if (arg1 === undefined) {\n return this.lastEntityId++;\n }\n if (Array.isArray(arg1)) {\n const entity = this.lastEntityId++;\n this.entities.add(entity);\n arg1.forEach((component) => this.addComponent(entity, component));\n if (parent)\n this.setParent(entity, parent);\n return entity;\n }\n return this.createEntityFromArchetype(arg1, parent);\n }\n /**\n * Creates an Entity from an Archetype.\n * @param archetype\n * @param parent\n * @returns The created Entity\n * @private\n */\n createEntityFromArchetype({ components, disabledComponents, children, enabled }, parent) {\n const entity = this.lastEntityId++;\n this.entities.add(entity);\n this.createComponentsFromArchetype(components, entity);\n if (disabledComponents)\n this.createComponentsFromArchetype(disabledComponents, entity, true);\n if (parent)\n this.setParent(entity, parent);\n if (children)\n children.forEach((child) => this.createEntityFromArchetype(child, entity));\n if (enabled === false)\n this.disableEntity(entity);\n return entity;\n }\n /**\n * Creates components from an archetype\n * @param components The components to create\n * @param entity The entity to create the components for\n * @param disabled If TRUE, each created component is disabled. Default is FALSE.\n * @private\n */\n createComponentsFromArchetype(components, entity, disabled = false) {\n components.forEach((component) => {\n let instance;\n if (typeof component === \"object\") {\n instance = this.addComponent(entity, deepClone(component));\n }\n else if (typeof component === \"function\") {\n instance = this.addComponent(entity, component);\n }\n else {\n throw new Error(\"Invalid component type\");\n }\n if (disabled)\n this.disableComponent(instance);\n });\n }\n /**\n * Removes an Entity and all its Components\n * @param entity The entity to remove\n * @public\n * @example\n * ```js\n * entityManager.removeEntity(entity);\n * ```\n */\n removeEntity(entity) {\n var _a;\n this.getChildren(entity).forEach((child) => this.removeEntity(child));\n const entityMap = this.entityComponents.get(entity);\n if (entityMap) {\n entityMap.forEach((component, id) => {\n var _a;\n (_a = this.components.get(id)) === null || _a === void 0 ? void 0 : _a.delete(entity);\n this.componentToEntity.delete(component);\n });\n this.entityComponents.delete(entity);\n }\n this.disabledComponents.delete(entity);\n this.disabledEntities.delete(entity);\n this.manuallyDisabledEntities.delete(entity);\n const parent = this.getParent(entity);\n if (parent) {\n (_a = this.childEntities.get(parent)) === null || _a === void 0 ? void 0 : _a.delete(entity);\n }\n this.parentEntities.delete(entity);\n this.childEntities.delete(entity);\n this.entities.delete(entity);\n }\n /**\n * Removes all Entities and all their Components\n * @param preserveComponentType Optional component type to preserve entities that have this component\n * @public\n * @example\n * ```js\n * // Remove all entities\n * entityManager.removeAllEntities();\n *\n * // Remove all entities except those that have a SpriteRenderer component\n * entityManager.removeAllEntities(SpriteRenderer);\n * ```\n */\n removeAllEntities(preserveComponentType) {\n const result = preserveComponentType ? this.search(preserveComponentType) : [];\n if (result.length > 0) {\n const entitiesToPreserve = new Set(result.map(({ entity }) => entity));\n for (const entity of this.entities) {\n if (!entitiesToPreserve.has(entity))\n this.removeEntity(entity);\n }\n }\n else {\n this.components.clear();\n this.entityComponents.clear();\n this.componentToEntity = new WeakMap();\n this.disabledComponents.clear();\n this.disabledEntities.clear();\n this.manuallyDisabledEntities.clear();\n this.lastEntityId = 0;\n this.entities.clear();\n this.parentEntities.clear();\n this.childEntities.clear();\n }\n }\n /**\n * If the Entity exists, returns TRUE, otherwise it returns FALSE\n * @param entity\n * @returns boolean\n * @example\n * ```js\n * const isEntity = entityManager.isEntity(entity);\n * ```\n */\n isEntity(entity) {\n return this.entities.has(entity);\n }\n /**\n * If the Entity is enabled, returns TRUE, otherwise it returns FALSE\n * @param entity The entity to verify\n * @returns boolean\n * @public\n * @example\n * ```js\n * const entityEnabled = entityManager.isEntityEnabled(entity);\n * ```\n */\n isEntityEnabled(entity) {\n return this.isEntity(entity) && !this.disabledEntities.has(entity);\n }\n /**\n * Enables an Entity.\\\n * The entity's components will be included in the `search` results\\\n * and therefore will be processed by their respective systems\\\n * (the engine built-in systems use the `search` method to retrieve the entities).\n * If the entity has children, they will also be enabled, except for those that have been manually disabled.\n * @param entity The entity to be enabled\n * @public\n * @example\n * ```js\n * entityManager.enableEntity(entity);\n * ```\n */\n enableEntity(entity) {\n if (this.disabledEntities.has(entity)) {\n this.disabledEntities.delete(entity);\n this.getChildren(entity).forEach((child) => {\n if (!this.manuallyDisabledEntities.has(child)) {\n this.enableEntity(child);\n }\n });\n }\n }\n /**\n * Disables an entity.\\\n * The entity's components will not be included in the `search` results\\\n * and therefore will not be processed by their respective systems\\\n * (the engine built-in systems use the `search` method to retrieve the entities).\n * If the entity has children, they will also be disabled.\n * @param entity The entity to be disabled\n * @public\n * @example\n * ```js\n * entityManager.disableEntity(entity);\n * ```\n */\n disableEntity(entity) {\n if (!this.disabledEntities.has(entity)) {\n this.disabledEntities.add(entity);\n this.getChildren(entity).forEach((child) => {\n if (this.disabledEntities.has(child)) {\n this.manuallyDisabledEntities.add(child);\n }\n else {\n this.disableEntity(child);\n }\n });\n }\n }\n /**\n * Disable all Entities that have a component of the given type\n * @param componentType The class of the component\n * @public\n * @example\n * ```js\n * entityManager.disableEntitiesByComponent(SpriteRenderer);\n * ```\n */\n disableEntitiesByComponent(componentType) {\n var _a, _b;\n for (const entity of (_b = (_a = this.components.get(this.getComponentTypeId(componentType))) === null || _a === void 0 ? void 0 : _a.keys()) !== null && _b !== void 0 ? _b : []) {\n this.disableEntity(entity);\n }\n }\n /**\n * Enable all Entities that have a component of the given type\n * @param componentType The class of the component\n * @public\n * @example\n * ```js\n * entityManager.enableEntitiesByComponent(SpriteRenderer);\n * ```\n */\n enableEntitiesByComponent(componentType) {\n var _a, _b;\n for (const entity of (_b = (_a = this.components.get(this.getComponentTypeId(componentType))) === null || _a === void 0 ? void 0 : _a.keys()) !== null && _b !== void 0 ? _b : []) {\n this.enableEntity(entity);\n }\n }\n /**\n * Sets a parent-child relationship between two entities\n * @param child The child entity\n * @param parent The parent entity\n * @public\n * @example\n * ```js\n * entityManager.setParent(child, parent);\n * ```\n */\n setParent(child, parent) {\n if (!this.isEntity(child) || !this.isEntity(parent)) {\n throw new Error(\"Both entities must exist to set a parent-child relationship.\");\n }\n if (this.parentEntities.has(child)) {\n const oldParent = this.parentEntities.get(child);\n if (oldParent === parent)\n return;\n this.childEntities.get(oldParent).delete(child);\n }\n this.parentEntities.set(child, parent);\n if (!this.childEntities.has(parent))\n this.childEntities.set(parent, new Set());\n this.childEntities.get(parent).add(child);\n }\n /**\n * Returns the parent entity of the child entity\n * @param child\n * @returns The parent entity\n * @public\n * @example\n * ```js\n * const parent = entityManager.getParent(child);\n * ```\n */\n getParent(child) {\n return this.parentEntities.get(child);\n }\n /**\n * Returns all child entities of the parent entity\n * @param parent\n * @returns A collection of child entities\n * @public\n * @example\n * ```js\n * const children = entityManager.getChildren(parent);\n * ```\n */\n getChildren(parent) {\n return Array.from(this.childEntities.get(parent) || []);\n }\n /**\n * Removes the parent-child relationship between two entities\n * @param child The child entity\n * @public\n * @example\n * ```js\n * entityManager.removeParent(child);\n * ```\n */\n removeParent(child) {\n const parent = this.parentEntities.get(child);\n if (parent) {\n this.parentEntities.delete(child);\n this.childEntities.get(parent).delete(child);\n }\n }\n /**\n * Removes a child entity from the parent entity\n * @param parent The parent entity\n * @param child The child entity\n * @public\n * @example\n * ```js\n * entityManager.removeChild(parent, child);\n * ```\n */\n removeChild(parent, child) {\n if (this.parentEntities.get(child) === parent) {\n this.parentEntities.delete(child);\n this.childEntities.get(parent).delete(child);\n }\n }\n addComponent(entity, component) {\n var _a;\n const id = this.getComponentTypeId(component);\n const instance = typeof component === \"object\" ? component : new component();\n if (!this.components.has(id))\n this.components.set(id, new Map());\n if (this.components.get(id).has(entity)) {\n const componentName = (_a = instance.constructor.componentName) !== null && _a !== void 0 ? _a : instance.constructor.name;\n throw new Error(`Entity ${entity} already has a component of type ${componentName}`);\n }\n this.components.get(id).set(entity, instance);\n let entityMap = this.entityComponents.get(entity);\n if (!entityMap) {\n entityMap = new Map();\n this.entityComponents.set(entity, entityMap);\n }\n entityMap.set(id, instance);\n this.componentToEntity.set(instance, entity);\n return instance;\n }\n /**\n * Returns TRUE if the Entity has a component of the given type, otherwise it returns FALSE.\n * @param entity The entity to verify\n * @param componentType The class of the component\n * @returns boolean\n * @public\n * @example\n * ```js\n * const hasSpriteRenderer = entityManager.hasComponent(entity, SpriteRenderer);\n * ```\n */\n hasComponent(entity, componentType) {\n var _a, _b;\n return (_b = (_a = this.components.get(this.getComponentTypeId(componentType))) === null || _a === void 0 ? void 0 : _a.has(entity)) !== null && _b !== void 0 ? _b : false;\n }\n /**\n * Returns the component of the given type belonging to the entity\n * @param entity The entity\n * @param componentType The class of the component\n * @returns The instance of the component\n * @public\n * @example\n * ```js\n * const spriteRenderer = entityManager.getComponent(entity, SpriteRenderer);\n * ```\n */\n getComponent(entity, componentType) {\n var _a;\n return (_a = this.components.get(this.getComponentTypeId(componentType))) === null || _a === void 0 ? void 0 : _a.get(entity);\n }\n /**\n * Returns all the component belonging to the entity\n * @param entity The entity\n * @returns A collection of component instances\n * @public\n * @example\n * ```js\n * const components = entityManager.getComponents(entity);\n * ```\n */\n getComponents(entity) {\n const map = this.entityComponents.get(entity);\n return map ? Array.from(map.values()) : [];\n }\n /**\n * Updates the data of a component instance\n * @param entity The entity\n * @param componentType The component type\n * @param updateCallback The callback to update the component\n * @public\n * @example\n * ```js\n * entityManager.updateComponentData(entity, Transform, (component) => {\n * component.position = new Vector2(100, 100);\n * });\n * ```\n */\n updateComponentData(entity, componentType, updateCallback) {\n const component = this.getComponent(entity, componentType);\n if (component)\n updateCallback(component);\n }\n /**\n * Searches for and returns an entity for the component instance\n * @param component The component instance\n * @returns The found Entity\n * @public\n * @example\n * ```js\n * const entity = entityManager.getEntityForComponent(spriteRenderer);\n * ```\n */\n getEntityForComponent(component) {\n return this.componentToEntity.get(component);\n }\n removeComponent(arg1, arg2) {\n const id = this.getComponentTypeId(typeof arg1 === \"object\" ? arg1 : arg2);\n const entity = typeof arg1 === \"number\" ? arg1 : this.getEntityForComponent(arg1);\n if (entity === undefined)\n return;\n const row = this.components.get(id);\n const instance = row === null || row === void 0 ? void 0 : row.get(entity);\n if (instance === undefined)\n return;\n row.delete(entity);\n this.componentToEntity.delete(instance);\n const entityMap = this.entityComponents.get(entity);\n if (entityMap) {\n entityMap.delete(id);\n if (entityMap.size === 0)\n this.entityComponents.delete(entity);\n }\n }\n isComponentEnabled(arg1, arg2) {\n var _a, _b;\n const id = this.getComponentTypeId(typeof arg1 === \"object\" ? arg1 : arg2);\n // entity does not have the component\n if (typeof arg1 === \"number\" && !((_a = this.components.get(id)) === null || _a === void 0 ? void 0 : _a.has(arg1)))\n return false;\n const entity = typeof arg1 === \"number\" ? arg1 : this.getEntityForComponent(arg1);\n return !((_b = this.disabledComponents.get(entity)) === null || _b === void 0 ? void 0 : _b.has(id));\n }\n disableComponent(arg1, arg2) {\n const entity = typeof arg1 === \"number\" ? arg1 : this.getEntityForComponent(arg1);\n const id = this.getComponentTypeId(typeof arg1 === \"object\" ? arg1 : arg2);\n if (entity == undefined)\n return;\n if (!this.disabledComponents.has(entity)) {\n this.disabledComponents.set(entity, new Set([id]));\n }\n else if (!this.disabledComponents.get(entity).has(id)) {\n this.disabledComponents.get(entity).add(id);\n }\n }\n enableComponent(arg1, arg2) {\n var _a;\n const entity = typeof arg1 === \"number\" ? arg1 : this.getEntityForComponent(arg1);\n const id = this.getComponentTypeId(typeof arg1 === \"object\" ? arg1 : arg2);\n if (entity !== undefined && ((_a = this.disabledComponents.get(entity)) === null || _a === void 0 ? void 0 : _a.has(id))) {\n this.disabledComponents.get(entity).delete(id);\n }\n }\n /**\n * Returns the component of a parent entity, if it exists.\n * @param parent The parent entity\n * @param componentType The component class to search\n * @returns The instance of the component\n * @public\n * @example\n * ```js\n * const spriteRenderer = entityManager.getComponentFromParent(parent, SpriteRenderer);\n * ```\n */\n getComponentFromParent(parent, componentType) {\n let current = parent;\n while (current) {\n const component = this.getComponent(current, componentType);\n if (component)\n return component;\n current = this.getParent(current);\n }\n return undefined;\n }\n search(componentType, arg1, arg2 = false) {\n var _a, _b;\n const id = this.getComponentTypeId(componentType);\n const callback = typeof arg1 === \"function\" ? arg1 : undefined;\n const includeDisabled = typeof arg1 === \"boolean\" ? arg1 : arg2;\n const row = this.components.get(id);\n if (!row)\n return callback ? undefined : [];\n if (callback) {\n for (const [entity, component] of row) {\n if (includeDisabled ||\n (!this.disabledEntities.has(entity) && !((_a = this.disabledComponents.get(entity)) === null || _a === void 0 ? void 0 : _a.has(id)))) {\n callback(component, entity);\n }\n }\n return;\n }\n const result = [];\n for (const [entity, component] of row) {\n if (includeDisabled ||\n (!this.disabledEntities.has(entity) && !((_b = this.disabledComponents.get(entity)) === null || _b === void 0 ? void 0 : _b.has(id)))) {\n result.push({ entity, component: component });\n }\n }\n return result;\n }\n /**\n * Performs an entity search given a collection of component types.\\\n * The entities found must have an instance of all the given component types.\\\n * This method returns a collection of Entities.\n * @param componentTypes A collection of component classes\n * @returns A collection of entities\n * @public\n * @example\n * ```js\n * const entities = entityManager.searchEntitiesByComponents([Transform, SpriteRenderer, Animator]);\n * ```\n */\n searchEntitiesByComponents(componentTypes) {\n if (componentTypes.length === 0)\n return [];\n const maps = [];\n for (const componentType of componentTypes) {\n const id = this.getComponentTypeId(componentType);\n const map = this.components.get(id);\n if (!map || map.size === 0)\n return [];\n maps.push(map);\n }\n // Iterate the smallest set first to minimize the candidate pool\n maps.sort((a, b) => a.size - b.size);\n const [smallest, ...rest] = maps;\n const result = [];\n for (const entity of smallest.keys()) {\n let matches = true;\n for (const m of rest) {\n if (!m.has(entity)) {\n matches = false;\n break;\n }\n }\n if (matches)\n result.push(entity);\n }\n return result;\n }\n /**\n * Performs a search for entities that have a component of the given type and are children of the parent entity.\\\n * This method returns a collection of objects of type SearchResult, which has the entity found, and the instance of the component.\\\n * The third argument determines if disabled entities or components are included in the search result,\\its default value is FALSE.\n * @param parent The parent entity\n * @param componentType The component class\n * @param includeDisabled TRUE to incluide disabled entities and components. Default is FALSE.\n * @returns SearchResult\n * @public\n * @example\n * ```js\n * const searchResult = entityManager.searchInChildren(parent, SpriteRenderer);\n * searchResult.forEach(({component, entity}) => {\n * // do something with the component and entity\n * })\n * ```\n * @example\n * ```js\n * const searchResult = entityManager.searchInChildren(parent, SpriteRenderer, true);\n * searchResult.forEach(({component, entity}) => {\n * // do something with the component and entity\n * })\n * ```\n */\n searchInChildren(parent, componentType, includeDisabled = false) {\n const children = new Set(this.getChildren(parent));\n return this.search(componentType, includeDisabled).filter(({ entity }) => children.has(entity));\n }\n /**\n * Returns the id for the given component type.\n * @param component The component class\n * @returns The component type id\n */\n getComponentTypeId(component) {\n const ctor = (typeof component === \"object\" ? component.constructor : component);\n if (ctor[COMPONENT_TYPE_ID] === undefined)\n ctor[COMPONENT_TYPE_ID] = ++nextComponentTypeId;\n return ctor[COMPONENT_TYPE_ID];\n }\n};\nEntityManager = __decorate([\n injectable(SYMBOLS.EntityManager)\n], EntityManager);\nexport { EntityManager };\n//# sourceMappingURL=EntityManager.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { injectable } from \"@angry-pixel/ioc\";\nimport { SYMBOLS } from \"./symbols\";\n/**\n * The SystemManager is responsible for managing the lifecycle and execution of game systems.\\\n * It provides methods for adding, enabling, disabling and retrieving systems that operate on entities and components.\\\n * Systems are organized into groups to control their execution order and update frequency.\\\n * Acts as the central orchestrator for all game logic and behavior processing.\n * @public\n * @category Entity-Component-System\n */\nlet SystemManager = class SystemManager {\n constructor() {\n this.systems = []; // [system, group, enabled, created]\n }\n /**\n * @param systemType The system class\n * @returns the systen index\n */\n findSystemIndex(systemType) {\n return this.systems.findIndex((system) => system[0] instanceof systemType);\n }\n /**\n * Adds a new system instance linked to a group\n * @param system The system instance\n * @param group The system group\n * @internal\n */\n addSystem(system, group) {\n if (this.systems.some((system) => system[0] instanceof system.constructor)) {\n throw new Error(`SystemManager already has an instance of ${system.constructor.name}.`);\n }\n this.systems.push([system, group, false, false]);\n }\n /**\n * Returns TRUE if it has a system of the given type, otherwise it returns FALSE\n * @param systemType The system class\n * @returns boolean\n * @public\n * @example\n * ```js\n * const hasPlayerSystem = systemManager.hasSystem(PlayerSystem);\n * ```\n */\n hasSystem(systemType) {\n return this.systems.some((system) => system[0] instanceof systemType);\n }\n /**\n * Returns a system instance for the given type\n * @param systemType The system class\n * @returns The system instance\n * @internal\n */\n getSystem(systemType) {\n const index = this.findSystemIndex(systemType);\n return index !== -1 ? this.systems[index][0] : undefined;\n }\n /**\n * Returns TRUE wether the given group has systems\n * @param group The system group\n * @returns boolean\n * @internal\n */\n groupHasSystems(group) {\n return this.systems.filter((system) => system[1] === group).length > 0;\n }\n /**\n * Enables a system by its type.\\\n * The method `onEnabled` of the system will be called. If the system is enabled for the first time, the method `onCreate` will also be called.\n * @param systemType The system class\n * @public\n * @example\n * ```js\n * systemManager.enableSystem(PlayerSystem);\n * ```\n */\n enableSystem(systemType) {\n const index = this.findSystemIndex(systemType);\n if (index === -1 || this.systems[index][2] === true)\n return;\n const system = this.systems[index];\n if (system[3] === false) {\n system[3] = true;\n if (system[0].onCreate)\n system[0].onCreate();\n }\n system[2] = true;\n if (system[0].onEnabled)\n system[0].onEnabled();\n }\n /**\n * Disables a system by its type.\\\n * The method `onDisabled` of the system will be called.\n * @param systemType The system class\n * @public\n * @example\n * ```js\n * systemManager.disableSystem(PlayerSystem);\n * ```\n */\n disableSystem(systemType) {\n const index = this.findSystemIndex(systemType);\n if (index === -1 || this.systems[index][2] === false)\n return;\n const system = this.systems[index];\n system[2] = false;\n if (system[0].onDisabled)\n system[0].onDisabled();\n }\n /**\n * Set the execution priority of a system.\n * @param systemType The system class\n * @param position the priority number\n * @internal\n */\n setExecutionOrder(systemType, position) {\n const index = this.findSystemIndex(systemType);\n if (index === -1)\n throw new Error(`Cannot set execution order because ${systemType.name} is not a system.`);\n this.systems.splice(position, 0, this.systems.splice(index, 1)[0]);\n }\n /**\n * Removes a system by its type.\n * The method `onDestroy` of the system will be called.\n * @param systemType The system class\n * @internal\n */\n removeSystem(systemType) {\n const index = this.findSystemIndex(systemType);\n if (index === -1)\n return;\n const system = this.systems.splice(index, 1)[0][0];\n if (system.onDestroy)\n system.onDestroy();\n }\n /**\n * Disables all systems\n * @internal\n */\n disableAllSystems() {\n this.systems.forEach((system) => {\n if (system[2])\n this.disableSystem(system[0].constructor);\n });\n }\n /**\n * Call the method onUpdate for systems belonging to the given group\n * @param group The system group\n * @internal\n */\n update(group) {\n this.systems\n .filter((system) => system[1] === group && system[2] === true)\n .forEach((system) => system[0].onUpdate());\n }\n};\nSystemManager = __decorate([\n injectable(SYMBOLS.SystemManager)\n], SystemManager);\nexport { SystemManager };\n//# sourceMappingURL=SystemManager.js.map","export var WebGLContextVersion;\n(function (WebGLContextVersion) {\n WebGLContextVersion[\"LegacyWebGL\"] = \"webgl\";\n WebGLContextVersion[\"WebGL2\"] = \"webgl2\";\n})(WebGLContextVersion || (WebGLContextVersion = {}));\nexport class ContextManager {\n constructor(canvas) {\n this.canvas = canvas;\n this.contextVersion = this.getContextVersion();\n if (!this.contextVersion) {\n throw new Error(\"Your browser does not support WebGL.\");\n }\n this.gl = this.canvas.getContext(this.contextVersion);\n }\n getContextVersion() {\n return this.canvas.getContext(WebGLContextVersion.WebGL2) !== null\n ? WebGLContextVersion.WebGL2\n : this.canvas.getContext(WebGLContextVersion.LegacyWebGL) !== null\n ? WebGLContextVersion.LegacyWebGL\n : undefined;\n }\n}\n//# sourceMappingURL=ContextManager.js.map","export class FontAtlasFactory {\n constructor() {\n this.fontAtlas = new Map();\n }\n hasFontAtlas(options) {\n return this.fontAtlas.has(this.getId(options));\n }\n getFontAtlas(options) {\n return this.fontAtlas.get(this.getId(options));\n }\n getOrCreate(options) {\n var _a;\n return (_a = this.getFontAtlas(options)) !== null && _a !== void 0 ? _a : this.create(options);\n }\n create(options) {\n const { font, charRanges, fontSize, spacing } = options;\n this.chars = [];\n for (let i = 0; i < charRanges.length; i = i + 2) {\n for (let j = charRanges[i]; j <= charRanges[i + 1]; j++) {\n this.chars.push(String.fromCharCode(j));\n }\n }\n this.font = font instanceof FontFace ? font.family : font;\n this.fontSize = fontSize;\n this.spacing = spacing;\n this.id = this.getId(options);\n const fontAtlas = this.renderAtlas();\n this.fontAtlas.set(this.id, fontAtlas);\n return fontAtlas;\n }\n getId({ font, charRanges, fontSize, spacing }) {\n return JSON.stringify({\n font: font instanceof FontFace ? font.family : font,\n charRanges,\n fontSize,\n spacing,\n });\n }\n renderAtlas() {\n const fontAtlas = new FontAtlas(this.id, this.fontSize, Math.ceil(Math.sqrt(this.chars.length)), this.spacing);\n const ctx = fontAtlas.canvas.getContext(\"2d\");\n ctx.clearRect(0, 0, fontAtlas.canvas.width, fontAtlas.canvas.height);\n ctx.textBaseline = \"top\";\n ctx.fillStyle = \"#FFFFFF\";\n ctx.font = `${this.fontSize}px ${this.font}`;\n let x = 0;\n let y = 0;\n for (let i = 0; i < this.chars.length; i++) {\n ctx.fillText(this.chars[i], x, y);\n fontAtlas.glyphs.set(this.chars[i], {\n id: i,\n width: ctx.measureText(this.chars[i]).width,\n });\n if ((x += this.fontSize + this.spacing) > fontAtlas.canvas.width - this.fontSize) {\n x = 0;\n y += this.fontSize + this.spacing;\n }\n }\n return fontAtlas;\n }\n}\nexport class FontAtlas {\n constructor(id, fontSize, gridSize, spacing) {\n this.id = id;\n this.fontSize = fontSize;\n this.gridSize = gridSize;\n this.spacing = spacing;\n this.canvas = document.createElement(\"canvas\");\n this.glyphs = new Map();\n this.canvas.width = this.gridSize * (this.fontSize + this.spacing);\n this.canvas.height = this.canvas.width;\n }\n}\n//# sourceMappingURL=FontAtlasFactory.js.map","export class ProgramFactory {\n constructor(gl, shaderLoader) {\n this.gl = gl;\n this.shaderLoader = shaderLoader;\n }\n create(vertexShaderSource, fragmentShaderSource) {\n const program = this.gl.createProgram();\n const vertexShader = this.shaderLoader.load(this.gl.VERTEX_SHADER, vertexShaderSource);\n const fragmentShader = this.shaderLoader.load(this.gl.FRAGMENT_SHADER, fragmentShaderSource);\n this.gl.attachShader(program, vertexShader);\n this.gl.attachShader(program, fragmentShader);\n this.gl.linkProgram(program);\n const status = this.gl.LINK_STATUS;\n if (!this.gl.getProgramParameter(program, status)) {\n const error = this.gl.getProgramInfoLog(program);\n this.gl.deleteProgram(program);\n throw new Error(`Unable to initialize the Program: ${error}`);\n }\n return program;\n }\n}\n//# sourceMappingURL=ProgramFactory.js.map","import { WebGLContextVersion } from \"../ContextManager\";\nimport { fragmentShader } from \"../shader/fragmentShader\";\nimport { legacyFragmentShader } from \"../shader/legacy/fragmentShader\";\nimport { legacyVertexShader } from \"../shader/legacy/vertexShader\";\nimport { vertexShader } from \"../shader/vertexShader\";\nexport class ProgramManager {\n constructor(gl, contextVersion, programFactory) {\n this.gl = gl;\n this.contextVersion = contextVersion;\n this.programFactory = programFactory;\n }\n loadProgram() {\n this.program =\n this.contextVersion === WebGLContextVersion.WebGL2\n ? this.programFactory.create(vertexShader, fragmentShader)\n : this.programFactory.create(legacyVertexShader, legacyFragmentShader);\n this.positionCoordsAttr = this.gl.getAttribLocation(this.program, \"positionCoords\");\n this.texCoordsAttr = this.gl.getAttribLocation(this.program, \"textureCoords\");\n this.modelMatrixUniform = this.gl.getUniformLocation(this.program, \"modelMatrix\");\n this.projectionMatrixUniform = this.gl.getUniformLocation(this.program, \"projectionMatrix\");\n this.textureMatrixUniform = this.gl.getUniformLocation(this.program, \"textureMatrix\");\n this.renderTextureUniform = this.gl.getUniformLocation(this.program, \"u_renderTexture\");\n this.textureUniform = this.gl.getUniformLocation(this.program, \"u_texImage\");\n this.solidColorUniform = this.gl.getUniformLocation(this.program, \"u_solidColor\");\n this.useTintColorUniform = this.gl.getUniformLocation(this.program, \"u_useTintColor\");\n this.tintColorUniform = this.gl.getUniformLocation(this.program, \"u_tintColor\");\n this.useMaskColorUniform = this.gl.getUniformLocation(this.program, \"u_useMaskColor\");\n this.maskColorUniform = this.gl.getUniformLocation(this.program, \"u_maskColor\");\n this.maskColorMixUniform = this.gl.getUniformLocation(this.program, \"u_maskColorMix\");\n this.alphaUniform = this.gl.getUniformLocation(this.program, \"u_alpha\");\n this.renderLightUniform = this.gl.getUniformLocation(this.program, \"u_renderLight\");\n this.numLightsUniform = this.gl.getUniformLocation(this.program, \"u_numLights\");\n this.gl.useProgram(this.program);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n }\n}\n//# sourceMappingURL=ProgramManager.js.map","export const vertexShader = `#version 300 es\n\nin vec4 positionCoords;\nin vec2 textureCoords;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelMatrix;\nuniform mat4 textureMatrix;\n\nout vec2 texCoords;\n\nvoid main()\n{\n gl_Position = projectionMatrix * modelMatrix * positionCoords;\n texCoords = (textureMatrix * vec4(textureCoords, 0, 1)).xy;\n}`;\n//# sourceMappingURL=vertexShader.js.map","export const fragmentShader = `#version 300 es\nprecision highp float;\n\nin vec2 texCoords;\n\n// texture, mask and darkness\nuniform int u_renderTexture;\nuniform sampler2D u_texImage;\nuniform vec4 u_solidColor;\nuniform int u_useTintColor;\nuniform vec4 u_tintColor;\nuniform int u_useMaskColor;\nuniform vec4 u_maskColor;\nuniform float u_maskColorMix;\nuniform float u_alpha;\n\n// light\nstruct Light {\n vec2 position;\n float radius;\n float smoothMode;\n float intensity;\n};\n\nuniform int u_renderLight;\nuniform Light u_lights[64];\nuniform int u_numLights;\n\nout vec4 fragColor;\n\nvoid main()\n{\n if (u_renderTexture == 1) {\n vec4 texColor = texture(u_texImage, texCoords);\n\n if (texColor.a < 0.0001) {\n discard;\n }\n\n if (u_useTintColor == 1) {\n texColor = u_tintColor * texColor;\n }\n\n if (u_useMaskColor == 1) {\n texColor = mix(texColor, u_maskColor, clamp(u_maskColorMix, 0.0, 1.0));\n }\n\n fragColor = vec4(texColor.rgb, u_alpha * texColor.a); \n } else if (u_renderLight == 1) {\n vec2 fragCoord = gl_FragCoord.xy;\n float alpha = u_alpha;\n\n for (int i = 0; i < u_numLights; i++) {\n Light light = u_lights[i];\n float dist = distance(fragCoord, light.position);\n \n if (dist < light.radius) {\n alpha -= (light.smoothMode > 0.0 ? smoothstep(light.radius, 0.0, dist) : 1.0) * light.intensity;\n }\n }\n\n alpha = clamp(alpha, 0.0, u_alpha);\n\n fragColor = vec4(u_solidColor.rgb, alpha);\n } else {\n fragColor = vec4(u_solidColor.rgb, u_alpha);\n }\n}`;\n//# sourceMappingURL=fragmentShader.js.map","export const legacyVertexShader = `precision mediump float;\n\nattribute vec2 positionCoords;\nattribute vec2 textureCoords;\n\nvarying vec2 texCoords;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelMatrix;\nuniform mat4 textureMatrix;\n\nvoid main()\n{\n gl_Position = projectionMatrix * modelMatrix * vec4(positionCoords, 0, 1);\n texCoords = (textureMatrix * vec4(textureCoords, 0, 1)).xy;\n}`;\n//# sourceMappingURL=vertexShader.js.map","export const legacyFragmentShader = `precision mediump float;\n\nvarying vec2 texCoords;\n\n// texture, mask and darkness\nuniform int u_renderTexture;\nuniform sampler2D u_texImage;\nuniform vec4 u_solidColor;\nuniform int u_useTintColor;\nuniform vec4 u_tintColor;\nuniform int u_useMaskColor;\nuniform vec4 u_maskColor;\nuniform float u_maskColorMix;\nuniform float u_alpha;\n\n// light\nstruct Light {\n vec2 position;\n float radius;\n float smoothMode;\n float intensity;\n};\n\nuniform int u_renderLight;\nuniform Light u_lights[64];\nuniform int u_numLights;\n\nvoid main()\n{\n if (u_renderTexture == 1) {\n vec4 texColor = texture2D(u_texImage, texCoords);\n\n if (texColor.a < 0.0001) {\n discard;\n }\n\n if (u_useTintColor == 1) {\n texColor = u_tintColor * texColor;\n }\n\n if (u_useMaskColor == 1) {\n texColor = mix(texColor, u_maskColor, clamp(u_maskColorMix, 0.0, 1.0));\n }\n\n gl_FragColor = vec4(texColor.rgb, u_alpha * texColor.a);\n } else if (u_renderLight == 1) {\n vec2 fragCoord = gl_FragCoord.xy;\n float alpha = u_alpha;\n\n for (int i = 0; i < 64; i++) {\n if (u_lights[i].intensity == 0.0) continue; \n \n Light light = u_lights[i];\n float dist = distance(fragCoord, light.position);\n \n if (dist < light.radius) {\n alpha -= (light.smoothMode > 0.0 ? smoothstep(light.radius, 0.0, dist) : 1.0) * light.intensity;\n }\n }\n\n alpha = clamp(alpha, 0.0, u_alpha);\n\n gl_FragColor = vec4(u_solidColor.rgb, alpha);\n } else {\n gl_FragColor = vec4(u_solidColor.rgb, u_alpha);\n }\n}`;\n//# sourceMappingURL=fragmentShader.js.map","export class ShaderLoader {\n constructor(gl) {\n this.gl = gl;\n }\n load(type, source) {\n const shader = this.gl.createShader(type);\n this.gl.shaderSource(shader, source);\n this.gl.compileShader(shader);\n const status = this.gl.COMPILE_STATUS;\n if (!this.gl.getShaderParameter(shader, status)) {\n const error = this.gl.getShaderInfoLog(shader);\n this.gl.deleteShader(shader);\n throw new Error(`Unable to initialize the shader program: ${error}`);\n }\n return shader;\n }\n}\n//# sourceMappingURL=ShaderLoader.js.map","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import { mat4 } from \"gl-matrix\";\nexport const setProjectionMatrix = (projectionMatrix, gl, cameraZoom, cameraPosition) => {\n projectionMatrix = mat4.identity(projectionMatrix);\n mat4.ortho(projectionMatrix, -gl.canvas.width / 2, gl.canvas.width / 2, -gl.canvas.height / 2, gl.canvas.height / 2, -1, 1);\n mat4.scale(projectionMatrix, projectionMatrix, [cameraZoom !== null && cameraZoom !== void 0 ? cameraZoom : 1, cameraZoom !== null && cameraZoom !== void 0 ? cameraZoom : 1, 1]);\n mat4.translate(projectionMatrix, projectionMatrix, [-cameraPosition.x, -cameraPosition.y, 0]);\n};\nexport const hexToRgba = (hex) => {\n const result = /^#?([a-f\\d]{2})?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[2], 16) / 256,\n g: parseInt(result[3], 16) / 256,\n b: parseInt(result[4], 16) / 256,\n a: result[1] !== undefined ? parseInt(result[1], 16) / 256 : 1,\n }\n : null;\n};\n//# sourceMappingURL=utils.js.map","import { hexToRgba } from \"./utils\";\nexport class CanvasColorRenderer {\n constructor(gl) {\n this.gl = gl;\n }\n render(hexColor) {\n const rgb = hexToRgba(hexColor);\n this.gl.clearColor(rgb.r, rgb.g, rgb.b, rgb.a);\n this.gl.clear(this.gl.COLOR_BUFFER_BIT);\n }\n}\n//# sourceMappingURL=CanvasColorRenderer.js.map","export var RenderDataType;\n(function (RenderDataType) {\n RenderDataType[RenderDataType[\"Sprite\"] = 0] = \"Sprite\";\n RenderDataType[RenderDataType[\"Text\"] = 1] = \"Text\";\n RenderDataType[RenderDataType[\"Tilemap\"] = 2] = \"Tilemap\";\n RenderDataType[RenderDataType[\"Mask\"] = 3] = \"Mask\";\n RenderDataType[RenderDataType[\"Geometric\"] = 4] = \"Geometric\";\n RenderDataType[RenderDataType[\"Video\"] = 5] = \"Video\";\n RenderDataType[RenderDataType[\"Darkness\"] = 6] = \"Darkness\";\n})(RenderDataType || (RenderDataType = {}));\n//# sourceMappingURL=Renderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { RenderDataType } from \"./Renderer\";\nimport { range } from \"@angry-pixel/math\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nconst CIRCUMFERENCE_VERTICES = 60;\nexport var GeometricShape;\n(function (GeometricShape) {\n GeometricShape[GeometricShape[\"Polygon\"] = 0] = \"Polygon\";\n GeometricShape[GeometricShape[\"Circumference\"] = 1] = \"Circumference\";\n GeometricShape[GeometricShape[\"Line\"] = 2] = \"Line\";\n})(GeometricShape || (GeometricShape = {}));\nexport class GeometricRenderer {\n constructor(gl, programManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.circumferencePositionBuffer = this.gl.createBuffer();\n this.linesPositionBuffer = this.gl.createBuffer();\n // circumference position buffer\n const angle = (2 * Math.PI) / CIRCUMFERENCE_VERTICES;\n const vertices = new Float32Array(range(1, CIRCUMFERENCE_VERTICES, 1).reduce((v, i) => [...v, Math.cos(i * angle), Math.sin(i * angle)], []));\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.circumferencePositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, vertices, this.gl.STATIC_DRAW);\n }\n render(renderData, cameraData, lastRender) {\n this.gl.disableVertexAttribArray(this.programManager.texCoordsAttr);\n switch (renderData.shape) {\n case GeometricShape.Polygon:\n this.renderLines(renderData, cameraData, this.gl.LINE_LOOP);\n break;\n case GeometricShape.Line:\n this.renderLines(renderData, cameraData, this.gl.LINES);\n break;\n case GeometricShape.Circumference:\n this.renderCircumference(renderData, cameraData, lastRender);\n break;\n default:\n return false;\n }\n return true;\n }\n renderLines(renderData, cameraData, mode) {\n var _a;\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.linesPositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(renderData.vertexModel.reduce((a, v) => [...a, v.x, v.y], [])), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, 1);\n this.gl.drawArrays(mode, 0, renderData.vertexModel.length);\n this.lastShape = \"polygon\";\n }\n renderCircumference(renderData, cameraData, lastRender) {\n if (lastRender !== RenderDataType.Geometric || this.lastShape !== \"circumference\") {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.circumferencePositionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.scale(this.modelMatrix, this.modelMatrix, [renderData.radius, renderData.radius, 1]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, 1);\n this.gl.drawArrays(this.gl.LINE_LOOP, 0, CIRCUMFERENCE_VERTICES);\n this.lastShape = \"circumference\";\n }\n}\n//# sourceMappingURL=GeometricRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nimport { RenderDataType } from \"./Renderer\";\n/**\n * Mask shape: Rectangle or Circumference.\n * @category Components Configuration\n * @public\n */\nexport var MaskShape;\n(function (MaskShape) {\n MaskShape[MaskShape[\"Rectangle\"] = 0] = \"Rectangle\";\n MaskShape[MaskShape[\"Circumference\"] = 1] = \"Circumference\";\n MaskShape[MaskShape[\"Polygon\"] = 2] = \"Polygon\";\n})(MaskShape || (MaskShape = {}));\nconst CIRCUMFERENCE_VERTICES = 60;\nexport class MaskRenderer {\n constructor(gl, programManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.type = RenderDataType.Mask;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.circumferencePositionBuffer = this.gl.createBuffer();\n this.rectanglePositionBuffer = this.gl.createBuffer();\n this.polygonPositionBuffer = this.gl.createBuffer();\n // circumference position buffer\n const angle = (2 * Math.PI) / CIRCUMFERENCE_VERTICES;\n const vertices = [0, 0];\n for (let i = 0; i <= CIRCUMFERENCE_VERTICES; i++) {\n vertices.push(Math.cos(i * angle), Math.sin(i * angle));\n }\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.circumferencePositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(vertices), this.gl.STATIC_DRAW);\n // rectangle position buffer\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.rectanglePositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([-0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]), this.gl.STATIC_DRAW);\n }\n render(renderData, cameraData, lastRender) {\n this.gl.disableVertexAttribArray(this.programManager.texCoordsAttr);\n if (renderData.shape === MaskShape.Rectangle) {\n this.renderRectangle(renderData, cameraData, lastRender);\n }\n else if (renderData.shape === MaskShape.Circumference) {\n this.renderCircumference(renderData, cameraData, lastRender);\n }\n else if (renderData.shape === MaskShape.Polygon) {\n this.renderPolygon(renderData, cameraData, lastRender);\n }\n this.lastShape = renderData.shape;\n return true;\n }\n renderRectangle(renderData, cameraData, lastRender) {\n var _a, _b;\n if (lastRender !== RenderDataType.Mask || this.lastShape !== MaskShape.Rectangle) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.rectanglePositionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [renderData.width, renderData.height, 1]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n if (renderData.opacity >= 0 && renderData.opacity < 1) {\n this.gl.enable(this.gl.BLEND);\n }\n else {\n this.gl.disable(this.gl.BLEND);\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);\n }\n renderCircumference(renderData, cameraData, lastRender) {\n var _a, _b;\n if (lastRender !== RenderDataType.Mask || this.lastShape !== MaskShape.Circumference) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.circumferencePositionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [renderData.radius, renderData.radius, 1]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n if (renderData.opacity >= 0 && renderData.opacity < 1) {\n this.gl.enable(this.gl.BLEND);\n }\n else {\n this.gl.disable(this.gl.BLEND);\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.drawArrays(this.gl.TRIANGLE_FAN, 0, CIRCUMFERENCE_VERTICES + 2);\n }\n renderPolygon(renderData, cameraData, lastRender) {\n var _a, _b;\n if (lastRender !== RenderDataType.Mask || this.lastShape !== MaskShape.Polygon) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.polygonPositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(renderData.vertices.reduce((a, v) => [...a, v.x, v.y], [0, 0])), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n if (renderData.opacity >= 0 && renderData.opacity < 1) {\n this.gl.enable(this.gl.BLEND);\n }\n else {\n this.gl.disable(this.gl.BLEND);\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.drawArrays(this.gl.TRIANGLE_FAN, 0, renderData.vertices.length + 1);\n }\n}\n//# sourceMappingURL=MaskRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { RenderDataType } from \"./Renderer\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nexport class DarknessRenderer {\n constructor(gl, programManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([-0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]), this.gl.STATIC_DRAW);\n }\n render(renderData, cameraData, lastRender) {\n var _a, _b;\n if (lastRender !== RenderDataType.Darkness) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.disableVertexAttribArray(this.programManager.texCoordsAttr);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [renderData.width, renderData.height, 1]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n this.gl.uniform1i(this.programManager.renderTextureUniform, 0);\n this.gl.uniform1i(this.programManager.renderLightUniform, 1);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform4f(this.programManager.solidColorUniform, r, g, b, a);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.uniform1i(this.programManager.numLightsUniform, renderData.lights.length);\n for (const [i, light] of renderData.lights.entries()) {\n if (i >= 64)\n break; // 64 is the max lights allowed\n this.gl.uniform2f(this.gl.getUniformLocation(this.programManager.program, `u_lights[${i}].position`), this.gl.canvas.width / 2 + (light.position.x - cameraData.position.x) * cameraData.zoom, this.gl.canvas.height / 2 + (light.position.y - cameraData.position.y) * cameraData.zoom);\n this.gl.uniform1f(this.gl.getUniformLocation(this.programManager.program, `u_lights[${i}].radius`), light.radius * cameraData.zoom);\n this.gl.uniform1f(this.gl.getUniformLocation(this.programManager.program, `u_lights[${i}].smoothMode`), light.smooth ? 1 : 0);\n this.gl.uniform1f(this.gl.getUniformLocation(this.programManager.program, `u_lights[${i}].intensity`), Math.max(0, Math.min(1, light.intensity)));\n }\n this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);\n this.gl.uniform1i(this.programManager.renderLightUniform, 0);\n return true;\n }\n}\n//# sourceMappingURL=DarknessRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nimport { RenderDataType } from \"./Renderer\";\nexport class SpriteRenderer {\n constructor(gl, programManager, textureManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.textureManager = textureManager;\n this.tiledPosVertices = new Map();\n this.tiledTexVertices = new Map();\n this.lastTexture = null;\n this.isTiled = false;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.textureBuffer = this.gl.createBuffer();\n this.tiledPositionBuffer = this.gl.createBuffer();\n this.tiledTextureBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([-0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]), this.gl.STATIC_DRAW);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0]), this.gl.STATIC_DRAW);\n this.lastDrawMode = \"sprite\";\n }\n render(renderData, cameraData, lastRender) {\n var _a, _b, _c, _d;\n this.isTiled = renderData.tiled && (renderData.tiled.x > 1 || renderData.tiled.y > 1);\n if (!this.isTiled && (lastRender !== RenderDataType.Sprite || this.lastDrawMode !== \"sprite\")) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n else if (this.isTiled) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.tiledPositionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, this.getTiledPositionVertices(renderData.tiled), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.tiledTextureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, this.getTiledTextureVertices(renderData.tiled), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.lastDrawMode = this.isTiled ? \"tiled\" : \"sprite\";\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [\n renderData.width * (renderData.flipHorizontally ? -1 : 1),\n renderData.height * (renderData.flipVertically ? -1 : 1),\n 1,\n ]);\n this.textureMatrix = mat4.identity(this.textureMatrix);\n if (renderData.slice) {\n mat4.translate(this.textureMatrix, this.textureMatrix, [\n renderData.slice.x / renderData.image.naturalWidth,\n renderData.slice.y / renderData.image.naturalHeight,\n 0,\n ]);\n mat4.scale(this.textureMatrix, this.textureMatrix, [\n renderData.slice.width / renderData.image.naturalWidth,\n renderData.slice.height / renderData.image.naturalHeight,\n 1,\n ]);\n }\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n const texture = this.textureManager.getOrCreateTextureFromImage(renderData.image, renderData.smooth);\n if (this.lastTexture !== texture || lastRender !== renderData.type) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.uniform1i(this.programManager.textureUniform, 0);\n this.lastTexture = texture;\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 1);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.uniform1i(this.programManager.useTintColorUniform, renderData.tintColor ? 1 : 0);\n if (renderData.tintColor) {\n const { r, g, b, a } = hexToRgba(renderData.tintColor);\n this.gl.uniform4f(this.programManager.tintColorUniform, r, g, b, a);\n }\n this.gl.uniform1i(this.programManager.useMaskColorUniform, renderData.maskColor ? 1 : 0);\n if (renderData.maskColor) {\n const { r, g, b } = hexToRgba(renderData.maskColor);\n this.gl.uniform4f(this.programManager.maskColorUniform, r, g, b, (_c = renderData.opacity) !== null && _c !== void 0 ? _c : 1);\n this.gl.uniform1f(this.programManager.maskColorMixUniform, (_d = renderData.maskColorMix) !== null && _d !== void 0 ? _d : 1);\n }\n if (this.isTiled) {\n this.gl.drawArrays(this.gl.TRIANGLES, 0, renderData.tiled.x * renderData.tiled.y * 6);\n }\n else {\n this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);\n }\n return true;\n }\n getTiledPositionVertices(tiled) {\n const key = tiled.toString();\n if (!this.tiledPosVertices.has(key)) {\n const vertices = [];\n for (let x = -tiled.x / 2; x < tiled.x / 2; x++) {\n for (let y = -tiled.y / 2; y < tiled.y / 2; y++) {\n vertices.push(x, y, x, y + 1, x + 1, y, x + 1, y, x, y + 1, x + 1, y + 1);\n }\n }\n this.tiledPosVertices.set(key, new Float32Array(vertices));\n }\n return this.tiledPosVertices.get(key);\n }\n getTiledTextureVertices(tiled) {\n const key = tiled.toString();\n if (!this.tiledTexVertices.has(key)) {\n const vertices = [];\n for (let i = 0; i < tiled.x * tiled.y; i++) {\n vertices.push(0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0);\n }\n this.tiledTexVertices.set(key, new Float32Array(vertices));\n }\n return this.tiledTexVertices.get(key);\n }\n}\n//# sourceMappingURL=SpriteRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { Vector2 } from \"@angry-pixel/math\";\nimport { RenderDataType } from \"./Renderer\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\n/**\n * Alignment of the text.\n * @category Components Configuration\n * @public\n */\nexport var TextAlignment;\n(function (TextAlignment) {\n TextAlignment[TextAlignment[\"Center\"] = 0] = \"Center\";\n TextAlignment[TextAlignment[\"Right\"] = 1] = \"Right\";\n TextAlignment[TextAlignment[\"Left\"] = 2] = \"Left\";\n})(TextAlignment || (TextAlignment = {}));\nexport class TextRenderer {\n constructor(gl, programManager, textureManager, fontAtlasFactory) {\n this.gl = gl;\n this.programManager = programManager;\n this.textureManager = textureManager;\n this.fontAtlasFactory = fontAtlasFactory;\n this.type = RenderDataType.Text;\n this.posVertices = [];\n this.texVertices = [];\n // cache\n this.lastTexture = null;\n this.shadowPosition = new Vector2();\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.textureBuffer = this.gl.createBuffer();\n }\n render(renderData, cameraData, lastRender, shadow = false) {\n var _a;\n if (!renderData.text)\n return false;\n const fontAtlas = this.fontAtlasFactory.getOrCreate(Object.assign({ font: renderData.font }, renderData.textureAtlas));\n // If we are render the shadow text, we dont need to recalculate the vertices or re-enable buffers\n if (!shadow) {\n this.generateTextVertices(fontAtlas, renderData);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.posVertices), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.texVertices), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n if (renderData.shadow) {\n const { color, offset, opacity } = renderData.shadow;\n const shadowRenderData = Object.assign(Object.assign({}, renderData), { color,\n opacity, position: Vector2.add(this.shadowPosition, renderData.position, offset) });\n shadowRenderData.shadow = undefined;\n this.render(shadowRenderData, cameraData, lastRender, true);\n lastRender = RenderDataType.Text;\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [\n renderData.fontSize * (renderData.flipHorizontally ? -1 : 1),\n renderData.fontSize * (renderData.flipVertically ? -1 : 1),\n 1,\n ]);\n this.textureMatrix = mat4.identity(this.textureMatrix);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n const texture = this.textureManager.getOrCreateTextureFromCanvas(fontAtlas.id, fontAtlas.canvas, renderData.smooth);\n if (this.lastTexture !== texture || lastRender !== RenderDataType.Text) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.uniform1i(this.programManager.textureUniform, 0);\n this.lastTexture = texture;\n }\n this.gl.uniform1i(this.programManager.useMaskColorUniform, 0);\n this.gl.uniform1i(this.programManager.renderTextureUniform, 1);\n this.gl.uniform1f(this.programManager.alphaUniform, renderData.opacity);\n const { r, g, b, a } = hexToRgba(renderData.color);\n this.gl.uniform1i(this.programManager.useTintColorUniform, 1);\n this.gl.uniform4f(this.programManager.tintColorUniform, r, g, b, a);\n this.gl.drawArrays(this.gl.TRIANGLES, 0, this.posVertices.length / 2);\n return true;\n }\n generateTextVertices(fontAtlas, renderData) {\n this.posVertices = [];\n this.texVertices = [];\n // TODO: cache this\n const processedText = this.preProcessText(fontAtlas, renderData);\n const letterSpacing = renderData.letterSpacing / renderData.fontSize;\n const lineHeight = renderData.lineHeight / renderData.fontSize;\n const height = renderData.boundingBox.height / renderData.fontSize;\n const width = renderData.boundingBox.width / renderData.fontSize;\n let y = height / 2;\n for (const line of processedText) {\n const { text, width: lineWidth } = line;\n let x = renderData.alignment === TextAlignment.Center\n ? -lineWidth / 2\n : renderData.alignment === TextAlignment.Left\n ? -width / 2\n : width / 2 - lineWidth;\n for (const letter of text) {\n const glyph = fontAtlas.glyphs.get(letter);\n if (glyph) {\n const letterWidth = glyph.width / fontAtlas.fontSize;\n // prettier-ignore\n this.posVertices.push(x, y - 1, x + letterWidth, y - 1, x, y, x, y, x + letterWidth, y - 1, x + letterWidth, y);\n const gx = (glyph.id % fontAtlas.gridSize) * (fontAtlas.fontSize + fontAtlas.spacing);\n const gy = ((glyph.id / fontAtlas.gridSize) | 0) * (fontAtlas.fontSize + fontAtlas.spacing);\n const u1 = gx / fontAtlas.canvas.width;\n const v1 = gy / fontAtlas.canvas.height;\n const u2 = (gx + glyph.width) / fontAtlas.canvas.width;\n const v2 = (gy + fontAtlas.fontSize) / fontAtlas.canvas.height;\n // prettier-ignore\n this.texVertices.push(u1, v2, u2, v2, u1, v1, u1, v1, u2, v2, u2, v1);\n x += letterWidth + letterSpacing;\n }\n }\n x = -width / 2;\n y -= lineHeight;\n }\n }\n preProcessText(fontAtlas, { text, fontSize, letterSpacing, lineHeight, boundingBox: { width, height } }) {\n const result = [];\n // Normalize\n letterSpacing /= fontSize;\n lineHeight /= fontSize;\n width /= fontSize;\n height /= fontSize;\n const spaceWidth = fontAtlas.glyphs.get(\" \").width / fontAtlas.fontSize + letterSpacing;\n let currentHeight = 0;\n const lines = text.split(\"\\n\");\n for (const line of lines) {\n let newLine = [];\n let lineWidth = 0;\n currentHeight += lineHeight;\n const words = line.split(\" \");\n for (const word of words) {\n if (currentHeight > height)\n return result;\n const firstWord = newLine.length === 0;\n let wordWidth = 0;\n for (const letter of word) {\n const glyph = fontAtlas.glyphs.get(letter);\n if (glyph)\n wordWidth += glyph.width / fontAtlas.fontSize + letterSpacing;\n }\n wordWidth -= letterSpacing;\n if (!firstWord)\n wordWidth += spaceWidth;\n if (firstWord && wordWidth >= width) {\n result.push({ width: wordWidth, text: word });\n currentHeight += lineHeight;\n }\n else if (lineWidth + wordWidth === width) {\n newLine.push(word);\n result.push({ width: lineWidth + wordWidth, text: newLine.join(\" \") });\n newLine = [];\n lineWidth = 0;\n currentHeight += lineHeight;\n }\n else if (lineWidth + wordWidth > width) {\n result.push({ width: lineWidth, text: newLine.join(\" \") });\n newLine = [word];\n lineWidth = wordWidth - spaceWidth;\n currentHeight += lineHeight;\n }\n else {\n lineWidth += wordWidth;\n newLine.push(word);\n }\n }\n if (newLine.length > 0) {\n result.push({ width: lineWidth, text: newLine.join(\" \") });\n }\n }\n return result;\n }\n}\n//# sourceMappingURL=TextRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { Vector2 } from \"@angry-pixel/math\";\nimport { RenderDataType } from \"./Renderer\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\n/**\n * Direction in which the tilemap will be rendered.\n * @internal\n */\nexport var TilemapOrientation;\n(function (TilemapOrientation) {\n TilemapOrientation[TilemapOrientation[\"Center\"] = 0] = \"Center\";\n TilemapOrientation[TilemapOrientation[\"RightUp\"] = 1] = \"RightUp\";\n TilemapOrientation[TilemapOrientation[\"RightDown\"] = 2] = \"RightDown\";\n TilemapOrientation[TilemapOrientation[\"RightCenter\"] = 3] = \"RightCenter\";\n})(TilemapOrientation || (TilemapOrientation = {}));\nexport class TilemapRenderer {\n constructor(gl, programManager, textureManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.textureManager = textureManager;\n this.posVertices = [];\n this.texVertices = [];\n // cache\n this.lastTexture = null;\n this.tileset = {\n width: 0,\n tileWidth: 0,\n tileHeight: 0,\n texMargin: new Vector2(),\n texSpacing: new Vector2(),\n texWidth: 0,\n texHeight: 0,\n texCorrection: new Vector2(),\n };\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.textureBuffer = this.gl.createBuffer();\n }\n render(renderData, cameraData, lastRender) {\n var _a, _b, _c, _d;\n if (renderData.tiles.reduce((acc, tile) => acc + tile, 0) === 0)\n return false;\n this.processTileset(renderData);\n this.generateVertices(renderData);\n if (this.posVertices.length === 0)\n return false;\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.posVertices), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.texVertices), this.gl.DYNAMIC_DRAW);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [\n renderData.tilemap.tileWidth * (renderData.flipHorizontal ? -1 : 1),\n renderData.tilemap.tileHeight * (renderData.flipVertical ? -1 : 1),\n 1,\n ]);\n this.textureMatrix = mat4.identity(this.textureMatrix);\n mat4.scale(this.textureMatrix, this.textureMatrix, [\n this.tileset.tileWidth / renderData.tileset.image.naturalWidth,\n this.tileset.tileHeight / renderData.tileset.image.naturalHeight,\n 1,\n ]);\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n const texture = this.textureManager.getOrCreateTextureFromImage(renderData.tileset.image, renderData.smooth);\n if (this.lastTexture !== texture || lastRender !== RenderDataType.Tilemap) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.uniform1i(this.programManager.textureUniform, 0);\n this.lastTexture = texture;\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 1);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.uniform1i(this.programManager.useTintColorUniform, renderData.tintColor ? 1 : 0);\n if (renderData.tintColor) {\n const { r, g, b, a } = hexToRgba(renderData.tintColor);\n this.gl.uniform4f(this.programManager.tintColorUniform, r, g, b, a);\n }\n this.gl.uniform1i(this.programManager.useMaskColorUniform, renderData.maskColor ? 1 : 0);\n if (renderData.maskColor) {\n const { r, g, b } = hexToRgba(renderData.maskColor);\n this.gl.uniform4f(this.programManager.maskColorUniform, r, g, b, (_c = renderData.opacity) !== null && _c !== void 0 ? _c : 1);\n this.gl.uniform1f(this.programManager.maskColorMixUniform, (_d = renderData.maskColorMix) !== null && _d !== void 0 ? _d : 1);\n }\n this.gl.drawArrays(this.gl.TRIANGLES, 0, this.posVertices.length / 2);\n return true;\n }\n processTileset({ tileset }) {\n var _a, _b, _c, _d, _e, _f, _g;\n tileset.margin = (_a = tileset.margin) !== null && _a !== void 0 ? _a : new Vector2();\n tileset.spacing = (_b = tileset.spacing) !== null && _b !== void 0 ? _b : new Vector2();\n tileset.correction = (_c = tileset.correction) !== null && _c !== void 0 ? _c : new Vector2();\n this.tileset.width = tileset.width;\n this.tileset.tileWidth = tileset.tileWidth + ((_d = tileset.margin.x) !== null && _d !== void 0 ? _d : 0) + ((_e = tileset.spacing.x) !== null && _e !== void 0 ? _e : 0);\n this.tileset.tileHeight = tileset.tileHeight + ((_f = tileset.margin.y) !== null && _f !== void 0 ? _f : 0) + ((_g = tileset.spacing.y) !== null && _g !== void 0 ? _g : 0);\n this.tileset.texMargin.set(tileset.margin.x / this.tileset.tileWidth, tileset.margin.y / this.tileset.tileHeight);\n this.tileset.texSpacing.set(tileset.spacing.x / this.tileset.tileWidth, tileset.spacing.y / this.tileset.tileHeight);\n this.tileset.texCorrection.set(tileset.correction.x / this.tileset.tileWidth, tileset.correction.y / this.tileset.tileHeight);\n this.tileset.texWidth =\n 1 - this.tileset.texMargin.x - this.tileset.texSpacing.x - 2 * this.tileset.texCorrection.x;\n this.tileset.texHeight =\n 1 - this.tileset.texMargin.y - this.tileset.texSpacing.y - 2 * this.tileset.texCorrection.y;\n }\n generateVertices({ tiles, tilemap }) {\n this.posVertices = [];\n this.texVertices = [];\n const height = Math.floor(tiles.length / tilemap.width);\n tiles.forEach((tilesetTile, tilemapTile) => {\n if (tilesetTile === 0)\n return;\n const px = (tilemapTile % tilemap.width) - tilemap.width / 2;\n const py = height / 2 - Math.floor(tilemapTile / tilemap.width);\n // prettier-ignore\n this.posVertices.push(px, py - 1, px + 1, py - 1, px, py, px, py, px + 1, py - 1, px + 1, py);\n const tx = ((tilesetTile - 1) % this.tileset.width) + this.tileset.texMargin.x + this.tileset.texCorrection.x;\n const ty = Math.floor((tilesetTile - 1) / this.tileset.width) +\n this.tileset.texMargin.y +\n this.tileset.texCorrection.y;\n // prettier-ignore\n this.texVertices.push(tx, ty + this.tileset.texHeight, tx + this.tileset.texWidth, ty + this.tileset.texHeight, tx, ty, tx, ty, tx + this.tileset.texWidth, ty + this.tileset.texHeight, tx + this.tileset.texWidth, ty);\n });\n }\n}\n//# sourceMappingURL=TilemapRenderer.js.map","import { mat4 } from \"gl-matrix\";\nimport { RenderDataType } from \"./Renderer\";\nimport { hexToRgba, setProjectionMatrix } from \"./utils\";\nexport class VideoRenderer {\n constructor(gl, programManager, textureManager) {\n this.gl = gl;\n this.programManager = programManager;\n this.textureManager = textureManager;\n this.lastTexture = null;\n this.projectionMatrix = mat4.create();\n this.modelMatrix = mat4.create();\n this.textureMatrix = mat4.create();\n this.positionBuffer = this.gl.createBuffer();\n this.textureBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([-0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]), this.gl.STATIC_DRAW);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0]), this.gl.STATIC_DRAW);\n }\n render(renderData, cameraData, lastRender) {\n var _a, _b, _c, _d;\n if (lastRender !== RenderDataType.Video) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer);\n this.gl.enableVertexAttribArray(this.programManager.positionCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.positionCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer);\n this.gl.enableVertexAttribArray(this.programManager.texCoordsAttr);\n this.gl.vertexAttribPointer(this.programManager.texCoordsAttr, 2, this.gl.FLOAT, false, 0, 0);\n }\n this.modelMatrix = mat4.identity(this.modelMatrix);\n mat4.translate(this.modelMatrix, this.modelMatrix, [renderData.position.x, renderData.position.y, 0]);\n mat4.rotateZ(this.modelMatrix, this.modelMatrix, (_a = renderData.rotation) !== null && _a !== void 0 ? _a : 0);\n mat4.scale(this.modelMatrix, this.modelMatrix, [\n renderData.width * (renderData.flipHorizontal ? -1 : 1),\n renderData.height * (renderData.flipVertical ? -1 : 1),\n 1,\n ]);\n this.textureMatrix = mat4.identity(this.textureMatrix);\n if (renderData.slice) {\n mat4.translate(this.textureMatrix, this.textureMatrix, [\n renderData.slice.x / renderData.video.videoWidth,\n renderData.slice.y / renderData.video.videoHeight,\n 0,\n ]);\n mat4.scale(this.textureMatrix, this.textureMatrix, [\n renderData.slice.width / renderData.video.videoWidth,\n renderData.slice.height / renderData.video.videoHeight,\n 1,\n ]);\n }\n setProjectionMatrix(this.projectionMatrix, this.gl, cameraData.zoom, cameraData.position);\n this.gl.uniformMatrix4fv(this.programManager.projectionMatrixUniform, false, this.projectionMatrix);\n this.gl.uniformMatrix4fv(this.programManager.modelMatrixUniform, false, this.modelMatrix);\n this.gl.uniformMatrix4fv(this.programManager.textureMatrixUniform, false, this.textureMatrix);\n this.gl.enable(this.gl.BLEND);\n const texture = this.textureManager.getOrCreateTextureFromVideo(renderData.video);\n if (this.lastTexture !== texture || lastRender !== RenderDataType.Video) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.uniform1i(this.programManager.textureUniform, 0);\n this.lastTexture = texture;\n }\n if (renderData.video.readyState >= HTMLMediaElement.HAVE_CURRENT_DATA) {\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, renderData.video);\n }\n this.gl.uniform1i(this.programManager.renderTextureUniform, 1);\n this.gl.uniform1f(this.programManager.alphaUniform, (_b = renderData.opacity) !== null && _b !== void 0 ? _b : 1);\n this.gl.uniform1i(this.programManager.useTintColorUniform, renderData.tintColor ? 1 : 0);\n if (renderData.tintColor) {\n const { r, g, b, a } = hexToRgba(renderData.tintColor);\n this.gl.uniform4f(this.programManager.tintColorUniform, r, g, b, a);\n }\n this.gl.uniform1i(this.programManager.useMaskColorUniform, renderData.maskColor ? 1 : 0);\n if (renderData.maskColor) {\n const { r, g, b } = hexToRgba(renderData.maskColor);\n this.gl.uniform4f(this.programManager.maskColorUniform, r, g, b, (_c = renderData.opacity) !== null && _c !== void 0 ? _c : 1);\n this.gl.uniform1f(this.programManager.maskColorMixUniform, (_d = renderData.maskColorMix) !== null && _d !== void 0 ? _d : 1);\n }\n this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);\n return true;\n }\n}\n//# sourceMappingURL=VideoRenderer.js.map","export class TextureFactory {\n constructor(gl) {\n this.gl = gl;\n }\n createFromImage(image, smooth = false, texture = null) {\n texture = texture !== null && texture !== void 0 ? texture : this.gl.createTexture();\n if (image.naturalWidth) {\n this.createFromSource(image, texture, smooth);\n }\n else {\n image.addEventListener(\"load\", () => this.createFromSource(image, texture, smooth));\n }\n return texture;\n }\n createFromCanvas(canvas, smooth = false, texture = null) {\n texture = texture !== null && texture !== void 0 ? texture : this.gl.createTexture();\n this.createFromSource(canvas, texture, smooth);\n return texture;\n }\n createPixelTexture() {\n const texture = this.gl.createTexture();\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, 1, 1, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, new Uint8Array([0, 0, 0, 255]));\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.bindTexture(this.gl.TEXTURE_2D, null);\n return texture;\n }\n createFromSource(source, texture, smooth = false) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, source);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);\n // LINEAR === smooth pixels, NEAREST === crisp pixels,\n if (smooth) {\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n }\n else {\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);\n }\n this.gl.bindTexture(this.gl.TEXTURE_2D, null);\n }\n}\n//# sourceMappingURL=TextureFactory.js.map","const textureId = (name, smooth) => `${smooth ? \"_smooth_\" : \"\"}${name}`;\nexport class TextureManager {\n constructor(textureFactory) {\n this.textureFactory = textureFactory;\n this.textures = new Map();\n }\n getOrCreateTextureFromImage(image, smooth = false) {\n var _a;\n return (_a = this.textures.get(textureId(image.src, smooth))) !== null && _a !== void 0 ? _a : this.createTextureFromImage(image, smooth);\n }\n createTextureFromImage(image, smooth = false) {\n const texture = this.textureFactory.createFromImage(image, smooth);\n this.textures.set(textureId(image.src, smooth), texture);\n return texture;\n }\n getOrCreateTextureFromCanvas(name, canvas, smooth = false) {\n var _a;\n return (_a = this.textures.get(textureId(name, smooth))) !== null && _a !== void 0 ? _a : this.createTextureFromCanvas(name, canvas, smooth);\n }\n createTextureFromCanvas(name, canvas, smooth = false) {\n const texture = this.textureFactory.createFromCanvas(canvas, smooth);\n this.textures.set(textureId(name, smooth), texture);\n return texture;\n }\n getOrCreateTextureFromVideo(video) {\n var _a;\n return (_a = this.textures.get(video.src)) !== null && _a !== void 0 ? _a : this.createTextureFromVideo(video);\n }\n createTextureFromVideo(video) {\n const texture = this.textureFactory.createPixelTexture();\n this.textures.set(video.src, texture);\n return texture;\n }\n}\n//# sourceMappingURL=TextureManager.js.map","export const SYMBOLS = {\n CanvasElement: Symbol.for(\"CanvasElement\"),\n WebGLManager: Symbol.for(\"WebGLManager\"),\n};\n//# sourceMappingURL=symbols.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { inject, injectable } from \"@angry-pixel/ioc\";\nimport { ContextManager } from \"./ContextManager\";\nimport { FontAtlasFactory } from \"./FontAtlasFactory\";\nimport { ProgramFactory } from \"./program/ProgramFactory\";\nimport { ProgramManager } from \"./program/ProgramManager\";\nimport { ShaderLoader } from \"./program/ShaderLoader\";\nimport { CanvasColorRenderer } from \"./renderer/CanvasColorRenderer\";\nimport { GeometricRenderer } from \"./renderer/GeometricRenderer\";\nimport { MaskRenderer } from \"./renderer/MaskRenderer\";\nimport { RenderDataType } from \"./renderer/Renderer\";\nimport { DarknessRenderer } from \"./renderer/DarknessRenderer\";\nimport { SpriteRenderer } from \"./renderer/SpriteRenderer\";\nimport { TextRenderer } from \"./renderer/TextRenderer\";\nimport { TilemapRenderer } from \"./renderer/TilemapRenderer\";\nimport { VideoRenderer } from \"./renderer/VideoRenderer\";\nimport { TextureFactory } from \"./texture/TextureFactory\";\nimport { TextureManager } from \"./texture/TextureManager\";\nimport { SYMBOLS } from \"./symbols\";\nlet WebGLManager = class WebGLManager {\n constructor(canvas) {\n this.renderers = new Map();\n const contextManager = new ContextManager(canvas);\n const gl = contextManager.gl;\n const contextVersion = contextManager.contextVersion;\n const programManager = new ProgramManager(gl, contextVersion, new ProgramFactory(gl, new ShaderLoader(gl)));\n const textureManager = new TextureManager(new TextureFactory(gl));\n const fontFactoryAtlas = new FontAtlasFactory();\n this.renderers.set(RenderDataType.Sprite, new SpriteRenderer(gl, programManager, textureManager));\n this.renderers.set(RenderDataType.Text, new TextRenderer(gl, programManager, textureManager, fontFactoryAtlas));\n this.renderers.set(RenderDataType.Tilemap, new TilemapRenderer(gl, programManager, textureManager));\n this.renderers.set(RenderDataType.Geometric, new GeometricRenderer(gl, programManager));\n this.renderers.set(RenderDataType.Mask, new MaskRenderer(gl, programManager));\n this.renderers.set(RenderDataType.Video, new VideoRenderer(gl, programManager, textureManager));\n this.renderers.set(RenderDataType.Darkness, new DarknessRenderer(gl, programManager));\n this.canvasColorRenderer = new CanvasColorRenderer(gl);\n programManager.loadProgram();\n }\n render(renderData, cameraData) {\n if (this.renderers.get(renderData.type).render(renderData, cameraData, this.lastRender)) {\n this.lastRender = renderData.type;\n }\n }\n renderCanvasColor(hexColor) {\n this.canvasColorRenderer.render(hexColor);\n }\n};\nWebGLManager = __decorate([\n injectable(SYMBOLS.WebGLManager),\n __param(0, inject(SYMBOLS.CanvasElement))\n], WebGLManager);\nexport { WebGLManager };\n//# sourceMappingURL=WebGLManager.js.map",null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["BroadPhaseMethods","Vector2","constructor","x","y","this","_x","_y","magnitude","Math","sqrt","pow","direction","_direction","unit","set","copy","vector","equals","clone","distance","add","out","a","b","subtract","lenSq","inv","normal","scale","scalar","dot","cross","round","floor","ceil","toString","Rectangle","width","height","_position","_center","value","x1","y1","position","center","rectangle","rect","intersects","contains","object","clamp","min","max","fixedRound","decimals","range","start","end","steps","i","push","between","Container","instances","Map","types","type","name","prototype","__ioc_injectable","Error","dependency","get","_a","_b","has","instance","__ioc_inject_constructor","map","inject","__ioc_inject_prop","forEach","prop","injectable","target","propertyKey","parameterIndex","undefined","SYMBOLS","CollisionRepository","Symbol","for","CollisionBroadphaseResolver","CollisionResolutionMethod","CollisionAABBResolver","CollisionCircumferenceAABBResolver","CollisionCircumferenceResolver","CollisionSatResolver","CollisionMatrix","QuadTree_1","__decorate","decorators","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","QuadTree","bounds","depth","rects","children","seenGen","retrieveSerial","minArea","maxArea","update","shapes","clear","resize","ensureSeenCapacity","id","boundingBox","insert","shapeCount","fill","child","Infinity","box","size","subdivide","halfWidth","halfHeight","retrieve","neighbors","retrieveFromNode","result","serial","cell","subdivisions","SpatialGrid","area","grid","lastAreaX","NaN","lastAreaY","lastAreaW","lastAreaH","lastSubdivisions","retrieveResult","coordinates","x0","y0","clearGridCells","ax","ay","aw","ah","newSubdivisions","cellWidth","cellHeight","buildGrid","updateCoordinates","cellIds","len","Polygon","vertexModel","_vertexModel","vertices","projectionAxes","rotation","collider","entity","ignoreCollisionsWithLayers","layer","radius","updateCollisions","Circumference","__param","paramIndex","decorator","AABBMethod","AABBResolver","circumferenceAABBResolver","circumferenceResolver","findCollision","shapeA","shapeB","resolve","CollisionMethods","SatMethod","satResolver","resolutionDirection","outDirection","boxA","boxB","overlapX","overlapY","checkOverlapForLines","sign","preventContainment","minOverlap","penetration","abs","minSep","maxSep","CircumferenceAABBResolver","closestPoint","invert","CircumferenceResolver","rSum","SatResolver","mergedAxes","projA","projB","smallestAxis","cache","setCircumferenceAxis","mergeProjectionAxes","axis","setCircumferenceVertices","projectShapeOntoAxis","currentOverlap","invertAxis","mins","maxs","bx","j","pb","duplicate","k","projection","shape","verts","s","bestLenSq","collisions","findCollisionsForCollider","filter","localCollider","findCollisionsForColliderAndLayer","remoteCollider","findAll","persist","collision","removeAll","deepClone","Node","FontFace","Date","getTime","Array","item","v","Set","proto","getPrototypeOf","create","keys","EntityManager","SystemManager","COMPONENT_TYPE_ID","nextComponentTypeId","lastEntityId","entities","components","entityComponents","componentToEntity","WeakMap","disabledEntities","manuallyDisabledEntities","disabledComponents","parentEntities","childEntities","createEntity","arg1","parent","isArray","component","addComponent","setParent","createEntityFromArchetype","enabled","createComponentsFromArchetype","disableEntity","disabled","disableComponent","removeEntity","getChildren","entityMap","delete","getParent","removeAllEntities","preserveComponentType","search","entitiesToPreserve","isEntity","isEntityEnabled","enableEntity","disableEntitiesByComponent","componentType","getComponentTypeId","enableEntitiesByComponent","oldParent","from","removeParent","removeChild","componentName","hasComponent","getComponent","getComponents","values","updateComponentData","updateCallback","getEntityForComponent","removeComponent","arg2","row","isComponentEnabled","enableComponent","getComponentFromParent","current","callback","includeDisabled","searchEntitiesByComponents","componentTypes","maps","sort","smallest","rest","matches","m","searchInChildren","ctor","WebGLContextVersion","systems","findSystemIndex","systemType","findIndex","system","addSystem","group","some","hasSystem","getSystem","index","groupHasSystems","enableSystem","onCreate","onEnabled","disableSystem","onDisabled","setExecutionOrder","splice","removeSystem","onDestroy","disableAllSystems","onUpdate","ContextManager","canvas","contextVersion","getContextVersion","gl","getContext","WebGL2","LegacyWebGL","FontAtlasFactory","fontAtlas","hasFontAtlas","options","getId","getFontAtlas","getOrCreate","font","charRanges","fontSize","spacing","chars","String","fromCharCode","family","renderAtlas","JSON","stringify","FontAtlas","ctx","clearRect","textBaseline","fillStyle","fillText","glyphs","measureText","gridSize","document","createElement","ProgramFactory","shaderLoader","vertexShaderSource","fragmentShaderSource","program","createProgram","vertexShader","load","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","attachShader","linkProgram","status","LINK_STATUS","getProgramParameter","error","getProgramInfoLog","deleteProgram","ProgramManager","programFactory","loadProgram","positionCoordsAttr","getAttribLocation","texCoordsAttr","modelMatrixUniform","getUniformLocation","projectionMatrixUniform","textureMatrixUniform","renderTextureUniform","textureUniform","solidColorUniform","useTintColorUniform","tintColorUniform","useMaskColorUniform","maskColorUniform","maskColorMixUniform","alphaUniform","renderLightUniform","numLightsUniform","useProgram","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","ShaderLoader","source","shader","createShader","shaderSource","compileShader","COMPILE_STATUS","getShaderParameter","getShaderInfoLog","deleteShader","ARRAY_TYPE","Float32Array","glMatrix.ARRAY_TYPE","identity","translate","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","z","rotateZ","rad","sin","cos","hypot","ortho","left","right","bottom","top","near","far","lr","bt","nf","setProjectionMatrix","projectionMatrix","cameraZoom","cameraPosition","mat4.identity","mat4.ortho","mat4.scale","mat4.translate","hexToRgba","hex","exec","parseInt","g","CanvasColorRenderer","render","hexColor","rgb","clearColor","COLOR_BUFFER_BIT","RenderDataType","GeometricShape","GeometricRenderer$1","programManager","mat4.create","modelMatrix","textureMatrix","circumferencePositionBuffer","createBuffer","linesPositionBuffer","angle","PI","reduce","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","renderData","cameraData","lastRender","disableVertexAttribArray","renderLines","LINE_LOOP","Line","LINES","renderCircumference","mode","DYNAMIC_DRAW","enableVertexAttribArray","vertexAttribPointer","FLOAT","mat4.rotateZ","zoom","uniformMatrix4fv","uniform1i","color","uniform4f","uniform1f","drawArrays","lastShape","Geometric","MaskShape","MaskRenderer$1","Mask","rectanglePositionBuffer","polygonPositionBuffer","renderRectangle","renderPolygon","opacity","enable","BLEND","disable","TRIANGLES","TRIANGLE_FAN","CIRCUMFERENCE_VERTICES","DarknessRenderer$1","positionBuffer","Darkness","lights","light","entries","uniform2f","smooth","intensity","SpriteRenderer$1","textureManager","tiledPosVertices","tiledTexVertices","lastTexture","isTiled","textureBuffer","tiledPositionBuffer","tiledTextureBuffer","lastDrawMode","_c","_d","tiled","Sprite","getTiledPositionVertices","getTiledTextureVertices","flipHorizontally","flipVertically","slice","image","naturalWidth","naturalHeight","texture","getOrCreateTextureFromImage","bindTexture","TEXTURE_2D","tintColor","maskColor","maskColorMix","TextAlignment","TextRenderer$1","fontAtlasFactory","Text","posVertices","texVertices","shadowPosition","shadow","text","assign","textureAtlas","generateTextVertices","offset","shadowRenderData","getOrCreateTextureFromCanvas","processedText","preProcessText","letterSpacing","lineHeight","line","lineWidth","alignment","Center","Left","letter","glyph","letterWidth","gx","gy","u1","v1","u2","v2","spaceWidth","currentHeight","lines","split","newLine","words","word","firstWord","wordWidth","join","TilemapOrientation","TilemapRenderer$1","tileset","tileWidth","tileHeight","texMargin","texSpacing","texWidth","texHeight","texCorrection","tiles","acc","tile","processTileset","generateVertices","tilemap","flipHorizontal","flipVertical","Tilemap","_e","_f","_g","margin","correction","tilesetTile","tilemapTile","px","py","tx","ty","VideoRenderer$1","Video","video","videoWidth","videoHeight","getOrCreateTextureFromVideo","readyState","HTMLMediaElement","HAVE_CURRENT_DATA","texImage2D","RGBA","UNSIGNED_BYTE","TextureFactory","createFromImage","createTexture","createFromSource","addEventListener","createFromCanvas","createPixelTexture","Uint8Array","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_MAG_FILTER","NEAREST","textureId","TextureManager","textureFactory","textures","src","createTextureFromImage","createTextureFromCanvas","createTextureFromVideo","CanvasElement","WebGLManager","renderers","contextManager","fontFactoryAtlas","SpriteRenderer","TextRenderer","TilemapRenderer","GeometricRenderer","MaskRenderer","VideoRenderer","DarknessRenderer","canvasColorRenderer","renderCanvasColor","AssetManager","AudioContext","CreateSystemService","GameConfig","InputManager","LoopManager","RenderManager","SceneManager","TimeManager","COLLISION_SYMBOLS","ECS_SYMBOLS","WEBGL_SYMBOLS","__awaiter","thisArg","_arguments","P","generator","Promise","reject","fulfilled","step","next","e","rejected","done","then","apply","SuppressedError","GamepadController","buttons","axes","_dpadAxes","_leftStickAxes","_rightStickAxes","dpadAxes","dpadRight","dpadLeft","dpadUp","dpadDown","leftStickAxes","leftStickHorizontal","leftStickVertical","rightStickAxes","rightStickHorizontal","rightStickVertical","bottomFace","rightFace","leftFace","topFace","leftShoulder","rightShoulder","leftTrigger","rightTrigger","back","leftStickButton","rightStickButton","anyButtonPressed","find","vibrate","duration","weakMagnitude","strongMagnitude","startDelay","vibrationInput","Keyboard","pressedKeys","isPressed","keyCode","includes","orPressed","keyCodes","andPressed","isPressedReturn","returnTrue","returnFalse","orPressedReturn","andPressedReturn","Mouse","leftButtonPressed","scrollButtonPressed","rightButtonPressed","positionInViewport","hasMoved","wheelScroll","TouchScreen","touching","interactions","keyboard","mouse","touchScreen","gamepads","allowedPhysicsFramerates","AssetType","deltaTime","unscaledDeltaTime","timeScale","physicsDeltaTime","unscaledPhysicsDeltaTime","renderDeltaTime","browserDeltaTime","unscaledRenderDeltaTime","physicsFramerate","entityManager","maxDeltaTime","thenForGame","thenForPhysics","thenForRender","lastIntervalId","intervals","fixedGameFramerate","fixedGameDeltaTime","parseFloat","toFixed","fixedPhysicsFramerate","fixedPhysicsDeltaTime","updateForRender","time","updateForGame","updateForPhysics","updateIntervals","intervalId","interval","intervalHealthCheck","executeImmediately","timer","delay","useTimeScale","times","clearInterval","entityRef","componentRef","setInterval","clearAllIntervals","audioContext","assets","getAssetsLoaded","prev","asset","loaded","loadImage","url","getImage","Image","crossOrigin","createAsset","complete","loadAudio","existing","getAudio","Audio","element","decodeAudioBuffer","buffer","response","fetch","arrayBuffer","decodeAudioData","loadFont","getFont","Font","fonts","loadVideo","getVideo","playsInline","loadJson","getJson","Json","json","disc","deleteAssetIfExists","AudioPlayer","playing","state","paused","stopped","stopOnSceneTransition","fixedToTimeScale","loop","volume","_currentAudioSource","_sourceNode","_gainNode","_startedAt","_pauseOffset","_playAfterUserInput","play","audioSource","action","pause","stop","SYSTEM_SYMBOLS","AudioPlayerSystem","ButtonSystem","TiledWrapperSystem","TilemapPreProcessingSystem","TransformSystem","GamepadSystem","KeyboardSystem","MouseSystem","TouchScreenSystem","UpdateBallColliderShapeSystem","UpdateBoxColliderShapeSystem","UpdateEdgeColliderShapeSystem","UpdatePolygonColliderShapeSystem","UpdateTilemapColliderShapeSystem","UpdateCollidersAfterRepositionSystem","ApplyRepositionSystem","ApplyVelocitySystem","ResolveCollisionSystem","AnimatorSystem","CameraSystem","ClearScreenSystem","CullingSystem","MaskRendererSystem","RenderSystem","DarknessLightRendererSystem","SpriteRendererSystem","GeometricRendererSystem","TextRendererSystem","TilemapRendererSystem","VideoRendererSystem","DebugColliderRenderSystem","DebugMousePositionSystem","DebugTextRendererSystem","userInputEventNames","inputManager","timeManager","assetManager","canPlay","userInputErrorCatched","userInputEventHandler","eventName","window","removeEventListener","resume","hidden","suspend","catchUserInput","checkGamepad","gp","audioPlayer","resolved","disposeSource","gain","playbackRate","computePlaybackRate","startSource","pauseSource","createBufferSource","createGain","connect","destination","onended","currentTime","elapsed","SystemGroup","addSystemGroup","__system_group","Transform","ignoreParentPosition","ignoreParentScale","ignoreParentRotation","localPosition","localScale","localRotation","_awake","_parent","defaultRenderLayer","debugRenderLayer","Camera","layers","debug","_renderData","_currentVideoSrc","_playPromisePendind","videoSource","renderManager","scaledOffset","videoRenderer","transform","checkVideoState","translateRenderPosition","addRenderData","translatedAngle","atan2","catch","ended","systemManager","systemFactory","scenes","_loadingScene","_sceneLoadedThisFrame","preserveEntitiesWithComponent","addScene","sceneType","openingScene","scene","openingSceneName","loadScene","sceneNameToBeLoaded","loadOpeningScene","loadingScene","sceneLoadedThisFrame","currentSceneName","destroyCurrentScene","loadAssets","registerSystems","createEntities","PreGameLogic","createSystemIfNotExists","Button","touchEnabled","pressed","mouseOver","ButtonShape","scaled","pressedLastFrame","button","isMouseOverButton","resolveTouchAndRectangle","resolveTouchAndCircumference","onClick","onPressed","isMouseOverRectangleButton","isMouseOverCircumferenceButton","TiledWrapper","data","chunks","_processed","tiledWrapper","tilemapRenderer","l","layerToRender","infinite","chunkSize","chunksToData","dataToChunks","cx","cy","chunk","tix","tiy","t","getBranchLength","parentEntity","translateChild","updateTransform","eventHandler","gamepadConnected","gamepad","gamepadDisconected","connected","getGamepadsFromBrowser","gpc","vibrationActuator","playEffect","vibrating","finally","navigator","getGamepads","webkitGetGamepads","event","code","indexOf","lastPositionInViewport","updatePosition","updateButtonDown","updateButtonUp","handleWheelEvent","onFocusOut","focus","preventDefault","stopPropagation","offsetX","clientWidth","offsetY","clientHeight","wheelEvent","deltaX","deltaY","targetTouches","clientX","offsetLeft","clientY","offsetTop","radiusX","radiusY","Animator","animations","speed","reset","currentFrame","ignoreTimeScale","_currentAnimation","_assetsReady","animation","animator","processAssets","spriteRenderer","renderSprite","fps","frames","frame","padding","camera","addCameraData","webGLManager","gameConfig","canvasColor","BallCollider","physics","BoxCollider","EdgeCollider","PolygonCollider","TilemapCollider","composite","colliders","collidersColor","collisionMethod","SAT","AABB","viewport","culledRenderData","getCameraData","setViewport","getRenderData","isInViewPort","applyCullingInTiles","setRenderData","setObjectForResizeable","setObjectForMask","setObjectForGeometric","setObjectForText","setObjectForTilemap","rotatedWidth","rotatedHeight","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","vertex","maskRenderer","removeCameraData","removeRenderData","LightRenderer","_boundingBox","lightRenderers","updateLightRendererBoundingBox","darknessRenderer","updatDarknessRendererBoundingBox","lightRenderer","scaledRadius","scaledWidth","scaledHeight","geometric","isValidGeometry","sx","sy","ensureVertexModelLength","vm","defaultTextureAtlasOptions","textRenderer","renderDataFactory","orientation","realWidth","realHeight","RigidBodyType","RigidBody","Dynamic","velocity","gravity","acceleration","transformSystem","Kinematic","displacement","totalAcceleration","scaledAcceleration","scaledVelocity","BaseUpdateColliderShapeSystem","auxMin","auxMax","auxScaledOffset","updatePositionAndVertices","translatePosition","auxAngle","updateBoundingBox","updateCircumferenceBoundingBox","updatePolygonBoundingBox","updateProjectionAxes","super","ballCollider","boxCollider","edgeCollider","polygonCollider","tilemapCollider","useEdges","useBoxes","needsCollider","generateRectangleVertices","getNeighbors","neighbor","hVertices","vVertices","hasTile","createEdge","broadPhaseResolver","collisionMatrix","collisionResolutionMethod","collisionRepository","colliderTypes","layerNeighbors","narrowPhase","broadPhase","ids","n","allowed","remote","local","isResolved","resolution","dirA","localEntity","remoteEntity","dirB","maxCorrection","rigidBody","defaultFontSize","positionInCameraViewport","positionInWorldspace","renderDataPerCamera","mousePosition","createRenderData","textColor","updateRenderDataPosition","textPosition","Right","textRendererBoundingBoxes","textBoxColor","systemsByGroup","Physics","Render","sceneManager","running","gameLoopAccumulator","enableSystems","requestAnimationLoop","performance","now","asyncPhysicsLoop","gameLogicIteration","renderIteration","requestAnimationFrame","GameLogic","GamePreRender","physicsIntervalId","physicsIteration","GamePhysics","container","lastSystemTypeId","createAudioContext","headless","Ctor","webkitAudioContext","setDefaultValues","containerNode","HTMLElement","_h","_j","collisionBroadPhaseMethod","_k","_l","_m","createCanvas","tabIndex","appendChild","setupManagers","setupEngineSystems","headlessFilter","setupPhysicsDependencies","setupExternalDependencies","config","dependencies","GameSystem","ENGINE_SYMBOLS","bootstrap","addDependencyType","dependencyType","addDependencyInstance","dependencyInstance","addSystems","degrees","console","warn","radians","random","prefix","padStart"],"mappings":"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","x_google_ignoreList":[30,31,47]}